为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 Java 中使用 .sef 文件运行 XSLT 转换

如何在 Java 中使用 .sef 文件运行 XSLT 转换

富国沪深 2023-06-08 13:53:27
我需要使用XSL转换 XML 文件,其中包括多个导入。一个简单的转换就可以正常工作(即使使用导入),但这并不是我真正想要的,因为每个转换甚至有超过 20 个导入文件。(我现在正在使用javax.xml.transform,在我使用之前net.sf.saxon.s9api。)我用Oxygen XML Editor编译了XSLT并得到了一个SEF文件。它应该已经包含所有文件,现在我收到以下错误:Error at package on line 2 column 321 of file.sef.xml:  XTSE0150: The supplied file does not appear to be a stylesheetjavax.xml.transform.TransformerConfigurationException: Failed to compile stylesheet. 1 error detected.我认为问题是它正在尝试编译已编译的文件,但我该如何解决呢?这是我现在拥有的基本代码:public String transform(File xslt, String xml) throws TransformerException {    TransformerFactory tFactory = TransformerFactory.newInstance("net.sf.saxon.TransformerFactoryImpl", null);    Transformer transformer = tFactory.newTransformer(new StreamSource(xslt));    final StringWriter writer = new StringWriter();    StreamResult standardResult = new StreamResult(writer);    transformer.transform(new StreamSource(new StringReader(xml)), standardResult);    return writer.toString();}
查看完整描述

1 回答

?
忽然笑

TA贡献1806条经验 获得超5个赞

Saxon 9.9 应该在所有接受源样式表的地方都接受 SEF 文件。事实上,我刚刚确认您的代码确实接受 9.9 中的 SEF 文件。但 9.8 并非如此,因此首先要检查 Saxon 版本。

还有一种可能是,用于创建 SEF 文件的 oXygen 版本与您用来加载和执行它的 Saxon 版本之间存在一些版本不兼容。


查看完整回答
反对 回复 2023-06-08
  • 1 回答
  • 0 关注
  • 151 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号