2012-01-26 97 views
1

我的XML看起來像這樣XSL如何創建動態錶行

<catalog> 
<cd> 
<title>Empire Burlesque</title> 
<artist>Bob Dylan</artist> 
<country>USA</country> 
<company>Columbia</company> 
<price>10.90</price> 
<year>1985</year> 
</cd> 
<cd> 
<title>Hide your heart</title> 
<artist>Bonnie Tyler</artist> 
<country>UK</country> 
<company>CBS Records</company> 
<price>9.90</price> 
<year>1988</year> 
</cd> 
</catalog> 

我想要實現的是HTML表,其中的行數是動態的,例如:

表應該看起來像這個:

TABLE HEADER 
<tr> 
<td>Title</td> 
<td>Empire Burlesque</td> 
</tr> 
<tr> 
<td>Artist</td> 
<td>Bob Dylan</td> 
</tr> 
<tr> 
<td>country</td> 
<td>USA</td> 
</tr> 

繼續對於可用於cd的所有節點。

我希望能夠循環使用<cd>下可用的節點數,併爲html輸出中的每個節點生成單獨的<tr>。所以我不必使用<xsl:value-of select>與特定的XML節點名稱。

任何人都可以幫助我瞭解零件的基本原理嗎?謝謝。

回答

0
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="xml" indent="yes"/> 

    <xsl:template match="catalog"> 
    <table> 
     <xsl:apply-templates select="cd/*"/> 
    </table> 
    </xsl:template> 

    <xsl:template match="cd/*"> 
    <tr> 
     <td> 
     <xsl:value-of select="name()"/> 
     </td> 
     <td> 
     <xsl:value-of select="."/> 
     </td> 
    </tr> 
    </xsl:template> 

</xsl:stylesheet> 

輸出:

<table> 
    <tr> 
    <td>title</td> 
    <td>Empire Burlesque</td> 
    </tr> 
    <tr> 
    <td>artist</td> 
    <td>Bob Dylan</td> 
    </tr> 
    <tr> 
    <td>country</td> 
    <td>USA</td> 
    </tr> 
    <tr> 
    <td>company</td> 
    <td>Columbia</td> 
    </tr> 
    <tr> 
    <td>price</td> 
    <td>10.90</td> 
    </tr> 
    <tr> 
    <td>year</td> 
    <td>1985</td> 
    </tr> 
    <tr> 
    <td>title</td> 
    <td>Hide your heart</td> 
    </tr> 
    <tr> 
    <td>artist</td> 
    <td>Bonnie Tyler</td> 
    </tr> 
    <tr> 
    <td>country</td> 
    <td>UK</td> 
    </tr> 
    <tr> 
    <td>company</td> 
    <td>CBS Records</td> 
    </tr> 
    <tr> 
    <td>price</td> 
    <td>9.90</td> 
    </tr> 
    <tr> 
    <td>year</td> 
    <td>1988</td> 
    </tr> 
</table>