Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在xslt中分页xml?_Xml_Xslt - Fatal编程技术网

如何在xslt中分页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:

<?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() &lt; $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() &lt; $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>
    
    
    
    • 一,
    • 二,
    • 三,
    • 四,
    • 五,
    • 六,
    • 七,
    • 八,
    • 九,
    • 十,
    • 十一,
    • 十二,