有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

使用Saxon 9.6时,许多旧样式表无法正常工作,尤其是使用EXSLTset:distinct的样式表。因此,我想继续使用Xalan来转换旧的XSLT 1.0样式表,但对新的XSLT 2.0样式表使用Saxon

在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();
}

共 (1) 个答案

  1. # 1 楼答案

    这可能是最好的方法。请注意,如果编写SAX ContentReader来访问xsl:stylesheet/@version,则可以通过抛出SAXException在已知版本后立即中止解析