我使用了一个xslt来查找元素的xpath。我使用java编码运行xslt。但是我遇到了异常错误。 xslt编码如下:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs" version="2.0">
<xsl:output omit-xml-declaration="yes" indent="no"/>
<xsl:template match="/">
<value>
<xsl:for-each select="//section">
<xsl:variable name="xpath-name" select="string-join((for $node in ancestor::* return $node/name(),name()),'/')"></xsl:variable>
<path><xsl:value-of select="$xpath-name"/></path>
</xsl:for-each>
</value>
</xsl:template>
</xsl:stylesheet>
我使用的java编码如下:
package firstspring;
import java.io.File;
import javax.xml.transform.*;
import javax.xml.transform.stream.*;
public static void main(String[] args) {
TransformerFactory tFactory = TransformerFactory.newInstance();
StreamSource xmlInputFile = new StreamSource("E:/test/test.xml");
StreamSource xslTransformationFile = new StreamSource("E:/test/my.xsl");
StreamResult xmlOutputFile = new StreamResult("E:/test/out.xml");
try {
Transformer transformer = tFactory
.newTransformer(xslTransformationFile);
transformer.transform(xmlInputFile, xmlOutputFile);
} catch (TransformerConfigurationException e) {
e.printStackTrace();
} catch (TransformerException e) {
e.printStackTrace();
}
System.out.println("Done!");
try{
}
catch (Exception e) {
// TODO: handle exception
}
}
}
发生以下异常错误:
FATAL ERROR: 'file:///E:/test/my.xsl: line 8: Required attribute 'select' is missing.'
javax.xml.transform.TransformerConfigurationException: file:///E:/test/my.xsl: line 8: Required attribute 'select' is missing.
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl.newTemplates(Unknown Source)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl.newTransformer(Unknown Source)
at firstspring.fileread.main(fileread.java:36)
请任何人帮忙:
答案 0 :(得分:0)
正如@Martin Honnen的评论中已经提到的,您需要添加saxon9he.jar
或其他版本的jar来支持XSLT 2.0。
查看您的Java代码,看起来您只是尝试检查转换,因为逻辑是用main
方法编写的。如果此类是Java项目的一部分,则可以将jar文件依赖项添加到项目的classpath
。
如果该类是可部署的viz的一部分。 .war
文件,然后在/WEB-INF/lib
文件夹中添加jar,将处理依赖项。