該轉化:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:param name="pnumRows" select="3"/>
<xsl:variable name="vnumCells" select="count(/*/*/NAME)"/>
<xsl:variable name="vcellsPerRow"
select="ceiling($vnumCells div $pnumRows)"/>
<xsl:template match="node2">
<table>
<xsl:apply-templates select="NAME[position() mod $vcellsPerRow = 1]"/>
</table>
</xsl:template>
<xsl:template match="NAME">
<tr>
<xsl:apply-templates mode="copy" select=
". | following-sibling::*[not(position() >= $vcellsPerRow)]"/>
</tr>
</xsl:template>
<xsl:template match="NAME" mode="copy">
<td><xsl:value-of select="."/></td>
</xsl:template>
</xsl:stylesheet>
具有指定格式上的任何XML文檔執行的情況下,如以下:
<node1>
<node2>
<NAME>name1</NAME>
<NAME>name2</NAME>
<NAME>name3</NAME>
<NAME>name4</NAME>
<NAME>name5</NAME>
<NAME>name6</NAME>
<NAME>name7</NAME>
<NAME>name8</NAME>
<NAME>name9</NAME>
<NAME>name10</NAME>
</node2>
</node1>
產生想要的結果是:表三行,其中前兩行具有相同數量的單元格,最後一行可能更短:
<table>
<tr>
<td>name1</td>
<td>name2</td>
<td>name3</td>
<td>name4</td>
</tr>
<tr>
<td>name5</td>
<td>name6</td>
<td>name7</td>
<td>name8</td>
</tr>
<tr>
<td>name9</td>
<td>name10</td>
</tr>
</table>
XML的格式是什麼? 「XSL表」是什麼意思? – 2010-07-20 02:59:49
「XSL表」是指XSLT格式化的HTML表格。 感謝下面的鏈接我會檢查出來。 – 2010-07-20 03:20:22
好問題(+1)。查看我的答案獲得完整的解決方案。 – 2010-07-20 13:45:50