2013-04-08 69 views
1

我必須在XML文件上工作,我不知道節點的名稱。所有我知道的是,該結構將不同文件之間的相同如何獲取孩子節點,當我們不知道他們的名字

結構將是上述一個

<root> 
    <node1> 
     <node2> 
     </node2> 
    </node2> 
</root> 

我必須做出一個XSLT文件建立一個HTML頁面將顯示內容的節點。

現在我有這樣一段代碼

<xsl:template match="/"> 
<html> 
    <head> 
    <link rel="stylesheet" type="text/css" href="employe.css"/> 
    </head> 
    <body> 
    <table> 
     <tr> 
     <th>ID Source</th> 
     <th>Nom</th> 
     <th>Prénom</th> 
     <th>Age</th> 
     <th>Adresse</th> 
     <th>Code Postal</th> 
     <th>Ville</th> 
     <th>Telephone</th> 
     <th>Poste</th> 
     </tr> 
     <xsl:apply-templates/> 
    </table> 
    </body> 
</html> 
</xsl:template> 

<xsl:template match="child::*"> 
    <tr> 
     <xsl:apply-templates/> 
    </tr> 
</xsl:template> 

<xsl:template match=""> 
    <td> 
     <xsl:value-of select="."/> 
    </td> 
</xsl:template> 

我成功地選擇第一和第二層次的節點,但不知道如何選擇第三。

感謝您的幫助

回答

2

你可以嘗試改變match="/"match="/*"並加入這兩個模板:

<xsl:template match="*[*]"> 
    <tr> 
     <xsl:apply-templates/> 
    </tr> 
</xsl:template> 

<xsl:template match="*[not(*)]"> 
    <td><xsl:value-of select="."/></td> 
</xsl:template> 
+0

感謝您的回答,但是......你能解釋一下嗎? 我從XLST/XPath開始,並不真正瞭解您的建議。 – Sidewinder94 2013-04-08 18:23:13

+1

匹配'/ *'將匹配''。第一個模板('* [*]')將元素與子元素進行匹配。第二個模板('* [not(*)]')匹配沒有子元素的元素。如果有幫助,我可以附上一個完整的例子。 – 2013-04-08 19:05:23

+0

不用了,完美的解釋! ;) 只是一些,如果我改變匹配=「/」匹配=「/ *」它將無法正常工作,導致表balises沒有創建 – Sidewinder94 2013-04-08 20:15:34

相關問題