這個樣式表:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="data">
<table>
<xsl:apply-templates select="*[1]"/>
</table>
</xsl:template>
<xsl:template match="record[1]/*" priority="1">
<tr>
<th>
<xsl:value-of select="name()"/>
</th>
<xsl:call-template name="td"/>
</tr>
</xsl:template>
<xsl:template match="record/*" name="td">
<td>
<xsl:value-of select="."/>
</td>
<xsl:apply-templates select="following::*[count(../*)+1]"/>
</xsl:template>
</xsl:stylesheet>
輸出:
<table>
<tr>
<th>id</th>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
</tr>
<tr>
<th>name</th>
<td>David</td>
<td>Tully</td>
<td>Solai</td>
<td>Michael</td>
<td>Tony</td>
<td>Ray</td>
<td>Leeha</td>
</tr>
<tr>
<th>age</th>
<td>40</td>
<td>38</td>
<td>32</td>
<td>49</td>
<td>19</td>
<td>26</td>
<td>13</td>
</tr>
</table>
編輯:只是爲了表明這可能是一個不那麼rivial問題,一個更寬鬆的模式的XML樹(缺少記錄中的一些字段)呢?
這個樣式表:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:key name="kElementByName" match="record/*" use="name()"/>
<xsl:template match="text()"/>
<xsl:template match="data">
<table>
<xsl:apply-templates/>
</table>
</xsl:template>
<xsl:template match="record/*[count(.|key('kElementByName',name())[1])=1]">
<tr>
<th>
<xsl:value-of select="name()"/>
</th>
<xsl:apply-templates select="../../record" mode="td">
<xsl:with-param name="pName" select="name()"/>
</xsl:apply-templates>
</tr>
</xsl:template>
<xsl:template match="record" mode="td">
<xsl:param name="pName"/>
<td>
<xsl:value-of select="*[name()=$pName]"/>
</td>
</xsl:template>
</xsl:stylesheet>
有了這個輸入:
<data>
<record>
<id>1</id>
<name>David</name>
</record>
<record>
<name>Tully</name>
<age>38</age>
</record>
<record>
<id>3</id>
<age>32</age>
</record>
</data>
輸出:
<table>
<tr>
<th>id</th>
<td>1</td>
<td></td>
<td>3</td>
</tr>
<tr>
<th>name</th>
<td>David</td>
<td>Tully</td>
<td></td>
</tr>
<tr>
<th>age</th>
<td></td>
<td>38</td>
<td>32</td>
</tr>
</table>
謝謝,我需要在這些快速的答案。我谷歌它並沒有看到它的任何例子。這是一本你可以參考的好書嗎? – user479504 2010-10-18 16:38:41
我發現XSLT更容易學習一段時間。最終你學會了警告和如何解決各種問題 – LorenVS 2010-10-18 16:45:14
對不起,Faheemitian。對於這個網站的任何進攻方式。我不完全是程序員,我只是商業分析師。我花了整個週末來找到解決方案,但我無法。感謝LorenVS的動力。 – user479504 2010-10-18 17:00:47