Я использовал один xslt, чтобы найти xpath элемента.Я запускаю xslt, используя Java-кодирование.Но я получил ошибку исключения.Кодировка 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>
Ява-кодирование, которое я использовал, как показано ниже:
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)
Пожалуйста, помогите всем: