从xslt文档中检索所有xsl:element和xsl:attribute标记的name属性值使用java

时间:2017-06-18 09:21:06

标签: java xslt

我必须从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

1 个答案:

答案 0 :(得分:0)

你可以用简单的XPath 2.0表达式//(xsl:element|xsl:attribute)/@name得到这个答案 - 使用DOM对此来说是完全过度的。