2012-07-24 61 views
0

我正在使用JAXB和maven-jaxb2-plugin,現在可以將我的模式成功綁定到Java代碼。
我還有一個.xsl文件「annotate_schemas.xsl」,它修改了添加一些附加信息的特定模式。
最後,我想改變的模式,我所附加的標題:JAXB和XSLT處理器

<?xml version="1.0" encoding="UTF-8"?> 
<?xml-stylesheet type="text/xsl" href="annotate_schemas.xsl"?> 
... 

的問題是,雖然是名爲.xsl正確(如果我打開一個瀏覽器我的模式文件,改造完成完美無瑕),JAXB忽略它並綁定我的模式的未觸動版本。

我的問題是:JAXB(和/或其插件)是否有XSLT處理器?有沒有辦法告訴JAXB綁定XSLT轉換的結果而不是原始的?

非常感謝您

+0

我知道我可以修改架構,將其保存到一個新文件中,然後在該文件上運行JAXB,但是......但我很好奇是否可以使用更簡潔的方法。 – mdm 2012-07-24 14:32:09

回答

2

JAXB,像絕大多數的消費XML的應用程序,不帶任何的<?xml-stylesheet?>處理指令的通知。如果您希望在將文檔傳遞給JAXB之前對其進行轉換,則需要顯式轉換它,例如使用JAXP轉換API。 (如果您想要控制它,請在JAXP中根據xml樣式表PI的值請求轉換:TransformerFactory.useAssociatedStylesheet())。

0

你可以嘗試這樣的事情:

TransformerFactory transFact = TransformerFactory.newInstance(); 
Templates displayTemplate = transFact.newTemplates(new StreamSource(new File("your_xsl_file"))); 

TransformerHandler handler = 
    ((SAXTransformerFactory) transFact).newTransformerHandler(displayTemplate); 
+0

但這不能在綁定時間完成。我需要一些能夠在maven-jaxb2-plugin開始運行之前進行轉換的東西....或者是插件本身在運行中執行轉換的一種方式.... – mdm 2012-07-24 15:11:37