如何在xslt中分页xml?
以下是xml:如何在xslt中分页xml?,xml,xslt,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 i
<?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。尝试一下:
<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="current() |
following::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>
<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>
- 一,
- 二,
- 三,
- 四,
- 五,
- 六,
- 七,
- 八,
- 九,
- 十,
- 十一,
- 十二,