0

我正在使用 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 转换的结果而不是原始结果?

非常感谢

4

2 回答 2

2

JAXB 与绝大多数使用 XML 的应用程序一样,不注意<?xml-stylesheet?>处理指令。如果要在将文档传递给 JAXB 之前对其进行转换,则需要显式地对其进行转换,例如使用 JAXP 转换 API。(JAXP 中有一个选项可以根据 xml-stylesheet PI 的值请求转换,如果您想控制它:TransformerFactory.useAssociatedStylesheet())。

于 2012-07-24T21:35:31.610 回答
0

你可以尝试这样的事情:

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

TransformerHandler handler = 
  ((SAXTransformerFactory) transFact).newTransformerHandler(displayTemplate);
于 2012-07-24T14:40:53.847 回答