gpt4 book ai didi

java - 根据 XSLT 版本选择 XSLT 处理器

转载 作者:行者123 更新时间:2023-11-29 05:02:54 24 4
gpt4 key购买 nike

我的应用程序有许多用 XSLT 1.0 编写的旧样式表,而新样式表则用 XSLT 2.0 编写。

Saxon 9.6 中,许多旧样式表无法正常运行,尤其是使用 EXSLT set:distinct 的样式表。因此,我想继续使用 Xalan 来转换旧的 XSLT 1.0 样式表,但使用 Saxon 来转换新的 XSLT 2.0 样式表。

在 Java 中,在决定 TransformerFactory 之前读取 XSL 文件的 xsl:stylesheet/@version 属性的最佳方法是什么?

截至目前,应用程序从 XSL 文件的绝对路径创建一个 StreamSource

Source xslSource = new StreamSource(xslFilePath);
String version = ...; // TODO Get XSLT version of XSL file

TransformerFactory transformerFactory;

if ("2.0".equals(version)) {
transformerFactory = new net.sf.saxon.TransformerFactoryImpl();
} else {
transformerFactory = new org.apache.xalan.processor.TransformerFactoryImpl();
}

最佳答案

这可能是最好的方法。请注意,如果您编写 SAX ContentReader 来访问 xsl:stylesheet/@version,您可以通过抛出 SAXException 来中止解析。

关于java - 根据 XSLT 版本选择 XSLT 处理器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31449999/

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