更新:
此问题中包含一些xsl代码!
我在这个问题上挣扎了数周(甚至数月)。我是这个xml / xslt领域的初学者,我只需要至少一种对XML数据有效的分页技术。我似乎只是找不到关于此问题的一个可行的解决方案!
我已经指出,在我看来,分页是最有用的xml / xslt Web主题之一,并且是整个Web上讨论较少的主题之一。它只有一部分,其中大多数无法正常运行。 无论如何,这都是关于这个stkovrflw问题的:
xslt xml table records pagination
可以看到我的整个问题。 michael.hor257k 已回答了我,我非常感谢他。 要点是,这只是半途而废(就我的要求而言)
根据传递的某些参数(页面编号),我一次只需要显示5个节点。我将其命名为
参数名称=“ pagnmbr”
首先,如果此$ pagnmbr为1,则xslt将显示:
01 02 03 04 05
否则,如果为2($ pagnmbr = 2),则会显示:
06 07 08 09 10
如果同一参数变为3,则读数将为:
11 12 13 14 15
以此类推。瞧,我非常需要做这种功能。
更新: 我只是做了以下xslt代码:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="crrtPag" select="2"/> <!-- current page -->
<xsl:variable name="rcrdsppag" select="5"/> <want 5 displaying records per page -->
<xsl:template name="pag" match="/group/item">
<html>
<body>
<xsl:if test="position()-$crrtPag = ($rcrdsppag - 1)*($crrtPag - 1)">
<xsl:call-template name="display_pag">
<xsl:with-param name="crrtPag" select="item[position() mod $rcrdsppag = 1]"/>
</xsl:call-template>
</xsl:if>
</body>
</html>
</xsl:template>
<xsl:template name="display_pag" match="item"> <!-- item -->
<xsl:param name="crrtPag"/>
<xsl:for-each select="//item">
<xsl:if test="position()<=5">
<xsl:value-of select="."/>
</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
但是,正如人们可能注意到的那样,它一直只显示:
01 02 03 04 05
即使我将$ pagnmbr = 2或$ pagnmbr = 3 ..也仅弹出前5个组项目。它永远不会显示
的下一个节点集06 07 08 09 10
以此类推..
请大家帮我!!! 预先非常感谢。
答案 0 :(得分:0)
给出:
XML
<group>
<item> 01 </item>
<item> 02 </item>
<item> 03 </item>
<item> 04 </item>
<item> 05 </item>
<item> 06 </item>
<item> 07 </item>
<item> 08 </item>
<item> 09 </item>
<item> 10 </item>
<item> 11 </item>
<item> 12 </item>
<item> 13 </item>
<item> 14 </item>
<item> 15 </item>
<item> 16 </item>
<item> 17 </item>
<item> 18 </item>
<item> 19 </item>
<item> 20 </item>
<item> 21 </item>
<item> 22 </item>
<item> 23 </item>
<item> 24 </item>
<item> 25 </item>
<item> 26 </item>
</group>
以下样式表:
XSLT 1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="pageSize" select="5" />
<xsl:param name="pageNumber" select="3" />
<xsl:template match="/group">
<html>
<body>
<div id="page{$pageNumber}">
<ul>
<xsl:variable name="start" select="$pageSize * ($pageNumber - 1) + 1" />
<xsl:for-each select="item[position() >= $start and position() < $start + $pageSize]">
<li>
<xsl:value-of select="."/>
</li>
</xsl:for-each>
</ul>
</div>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
将返回:
结果
<html>
<body>
<div id="page3">
<ul>
<li> 11 </li>
<li> 12 </li>
<li> 13 </li>
<li> 14 </li>
<li> 15 </li>
</ul>
</div>
</body>
</html>