gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 01:37:25 25 4
gpt4 key购买 nike

我需要使用 XSL 转换 XML 文件,其中包括多个导入。一个简单的转换工作得很好(即使是导入),但这不是我真正想要的,因为每个转换甚至有超过 20 个导入文件。 (在使用 net.sf.saxon.s9api 之前,我现在正在使用 javax.xml.transform。)

我已经编译了XSLTOxygen XML Editor并得到了 SEF文件。它应该已经包含所有文件,现在我收到以下错误:

Error at package on line 2 column 321 of file.sef.xml:
XTSE0150: The supplied file does not appear to be a stylesheet
javax.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();
}

最佳答案

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

用于创建 SEF 文件的 oXygen 版本与您用于加载和执行该文件的 Saxon 版本之间也可能存在版本不兼容的情况。

关于java - 如何在 Java 中使用 .sef 文件运行 XSLT 转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57511360/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com