2012-07-24 59 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