1
這裏是XML:如何在xslt中分頁xml?
<?xml version="1.0" encoding="UTF-8"?>
<sitemapnode>
<n>
<node id="1"/>
<node id="2"/>
<node id="3"/>
</n>
<n>
<node id="4"/>
<node id="5"/>
<node id="6"/>
<node id="7"/>
<node id="8"/>
</n>
<n>
<node id="9"/>
<node id="10"/>
</n>
<n>
<node id="11"/>
<node id="12"/>
</n>
</sitemapnode>
我想讓它像:
<div>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
</ul>
<ul>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
</ul>
<ul>
<li>9</li>
<li>10</li>
<li>11</li>
<li>12</li>
</ul>
</div>
我解決不了這個問題...
我嘗試這樣的:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:variable name="number" select="ceiling(count(/*/*/node) div 3)"/>
<xsl:template match="*">
<div>
<xsl:apply-templates select="/*/*/node[position() mod $number = 1]"/>
</div>
</xsl:template>
<xsl:template match="node">
<ul>
<xsl:apply-templates select="self::node|following-sibling::node[position() < $number]" mode="list"/>
</ul>
</xsl:template>
<xsl:template match="node" mode="list">
<li>
<xsl:value-of select="@id"/>
</li>
</xsl:template>
</xsl:stylesheet>
轉換後,這裏是結果:
<div>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
<ul>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
</ul>
<ul>
<li>8</li>
</ul>
<ul>
<li>9</li>
<li>10</li>
</ul>
<ul>
<li>11</li>
<li>12</li>
</ul>
</div>
那不是我想要的。我怎樣才能做到這一點? 我正在使用XSLT 1.0和.Net 3.5。
太謝謝你了! –