2017-06-18 47 views
0

我必須從xslt文檔中打印所有xsl:element和xsl:attribute標籤的名稱屬性值。從xslt文檔中檢索所有xsl:element和xsl:attribute標籤的name屬性的值使用java

下面是我的示例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()); 
      } 

輸出I得到的是:

的xsl:樣式表 的xsl:帶狀空間 的xsl:模板 的xsl:元件 的xsl:元件

預期輸出是:

TransactionDateTime ChangeIndicator

+0

請將預期結果**作爲代碼**發佈 - 並說明您在哪裏遇到困難。 –

+0

請參考[tour](https://stackoverflow.com/tour)並閱讀[我如何問一個好問題?](https://stackoverflow.com/help/how-to-ask)。您應該向我們展示您的代碼並解釋您的具體問題。 – vanje

回答

0

你可以用簡單的XPath 2.0表達式得到這個答案//(xsl:element|xsl:attribute)/@name - 使用DOM對此是完全矯枉過正的。

+0

我試過這個,但它沒有給我任何輸出。在下面的答案中,我發佈了我嘗試過的代碼 –