简体   繁体   English

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

[英]retrieve value of name attribute of all xsl:element and xsl:attribute tag from xslt document Using java

I have to print value of name attribut of all xsl:element and xsl:attribute tag from xslt document. 我必须从xslt文档中打印所有xsl:element和xsl:attribute标记的名称属性值。

Below is my sample xsl: 以下是我的示例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>

I tried using dom parser but it does not give me desired output. 我尝试使用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());
            }

Output i get is : 我得到的输出是:

xsl:stylesheet xsl:strip-space xsl:template xsl:element xsl:element xsl:stylesheet xsl:strip-space xsl:template xsl:element xsl:element

Expected output is : 预期输出为:

TransactionDateTime ChangeIndicator TransactionDateTime ChangeIndicator

您可以使用简单的XPath 2.0表达式//(xsl:element|xsl:attribute)/@name来获得此答案-使用DOM完全可以解决这个问题。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM