我必须从xslt文档中打印所有xsl:element和xsl:attribute标记的name attribut值。
以下是我的示例xsl:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0">
<xsl:strip-space elements="*" />
<xsl:template match="*">
<xsl:element name="TransactionDateTime">
<xsl:value-of select="@TRANSACTIONDATETIME"/>
</xsl:element>
<xsl:element name="ChangeIndicator">
<xsl:value-of select="@CHANGEINDICATOR"/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
我尝试使用dom解析器,但它没有给我想要的输出。
DocumentBuilderFactory factory =
DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
org.w3c.dom.Document doc = builder.parse("C:/sample_xslt.txt");
NodeList list = doc.getElementsByTagName("*");
System.out.println("XML Elements: ");
for (int i=0; i<list.getLength(); i++) {
Element element = (Element)list.item(i);
System.out.println(element.getNodeName());
}
我得到的输出是:
的xsl:样式表 XSL:带状空间 XSL:模板 XSL:元 XSL:元素
预期输出为:
TransactionDateTime ChangeIndicator
答案 0 :(得分:0)
你可以用简单的XPath 2.0表达式//(xsl:element|xsl:attribute)/@name
得到这个答案 - 使用DOM对此来说是完全过度的。