Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JAXB和XSLT处理器_Java_Xml_Xslt_Jaxb - Fatal编程技术网

Java JAXB和XSLT处理器

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"?> ... ...

我正在使用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是正确的(如果我在浏览器中打开模式文件,转换就完美无缺地完成了),但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动态执行转换的方法。。。。