Java JAXB和XSLT处理器
我正在使用JAXB和maven-jaxb2-plugin,现在我能够成功地将模式绑定到Java代码。Java JAXB和XSLT处理器,java,xml,xslt,jaxb,Java,Xml,Xslt,Jaxb,我正在使用JAXB和maven-jaxb2-plugin,现在我能够成功地将模式绑定到Java代码。 我还有一个.xsl文件“annotate_schemas.xsl”,用于修改特定的模式并添加一些附加信息。 最后,在我想要转换的模式上,我添加了标题: <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="annotate_schemas.xsl"?> ... ...
我还有一个.xsl文件“annotate_schemas.xsl”,用于修改特定的模式并添加一些附加信息。
最后,在我想要转换的模式上,我添加了标题:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="annotate_schemas.xsl"?>
...
...
问题是,尽管.xsl是正确的(如果我在浏览器中打开模式文件,转换就完美无缺地完成了),但JAXB忽略了它,并绑定了未触及的模式版本
我的问题是:JAXB(和/或其插件)是否有XSLT处理器??有没有办法告诉JAXB绑定XSLT转换的结果而不是原始结果
非常感谢您可以尝试以下内容:
TransformerFactory transFact = TransformerFactory.newInstance();
Templates displayTemplate = transFact.newTemplates(new StreamSource(new File("your_xsl_file")));
TransformerHandler handler =
((SAXTransformerFactory) transFact).newTransformerHandler(displayTemplate);
JAXB与绝大多数使用XML的应用程序一样,不注意
处理指令。如果要在将文档传递给JAXB之前对其进行转换,则需要显式地进行转换,例如使用JAXP转换API。(JAXP中有一个选项,可以根据xml样式表PI的值请求转换,如果您想控制它:TransformerFactory.useAssociatedStylesheet())。我知道我可以修改模式,将其保存到一个新文件中,并在该文件上运行JAXB……但我很好奇是否可以使用更干净的方法。但这不能在绑定时完成。我需要在maven-jaxb2-plugin开始运行之前进行转换的东西……或者理想情况下是pluginitself动态执行转换的方法。。。。