Java 根据XSLT版本选择XSLT处理器
我的应用程序中有许多旧样式表是用Java 根据XSLT版本选择XSLT处理器,java,xslt-1.0,xslt-2.0,saxon,xalan,Java,Xslt 1.0,Xslt 2.0,Saxon,Xalan,我的应用程序中有许多旧样式表是用xslt1.0编写的,而新样式表是用xslt2.0编写的 使用saxon9.6时,许多旧样式表无法正常工作,尤其是使用EXSLTset:distinct的样式表。因此,我想继续使用Xalan来转换旧的xslt1.0样式表,但对新的xslt2.0样式表使用Saxon 在Java中,在决定使用TransformerFactory之前,读取xsl文件的xsl:stylesheet/@version属性的最佳方法是什么 现在,应用程序从XSL文件的绝对路径创建一个Stre
xslt1.0
编写的,而新样式表是用xslt2.0
编写的
使用saxon9.6
时,许多旧样式表无法正常工作,尤其是使用EXSLTset:distinct的样式表。因此,我想继续使用Xalan
来转换旧的xslt1.0
样式表,但对新的xslt2.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();
}
这可能是最好的方法。请注意,如果编写SAX ContentReader来访问xsl:stylesheet/@version,则可以通过抛出SAXException在已知版本后立即中止解析