我找到了一个允许我在网站上实现上一个/下一个导航的脚本,但我不确定它是否正确。
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" version="3.2" encoding="ISO-8859-1"/>
<xsl:param name="Page" select="0" />
<xsl:param name="PageSize" select="1" />
<xsl:template name="results" match="/">
<xsl:variable name="mycount" select="count(root/customer)"/>
<xsl:variable name="selectedRowCount" select="floor((number($numberOfRecords)-1) div
$recordsPerPage)+1"/>
<xsl:for-each select="root/customer">
<!-- Pagination logic -->
<xsl:if test="position() >= ($Page * $PageSize) + 1">
<xsl:if test="position() <= $PageSize + ($PageSize * $Page)">
<!-- Do display here -->
</xsl:if>
</xsl:if>
</xsl:for-each>
<!-- Prev link for pagination -->
<xsl:choose>
<xsl:when test="number($Page)-1 >= 0"> 
<A>
<xsl:attribute name="href">_dirresult?page=<xsl:value-of select="number($Page)-
1"/>&pagesize=<xsl:value-of select="$PageSize"/></xsl:attribute>
<<Prev
</A>
</xsl:when>
<xsl:otherwise>
<!-- display something else -->
</xsl:otherwise>
</xsl:choose>
<xsl:if test="$selectedRowCount > 1">
 <b class="blacktext"><xsl:value-of select="number($Page)+1"/> of <xsl:value-of select="number($selectedRowCount)"/></b> 
</xsl:if>
<!-- Next link for pagination -->
<xsl:choose>
<xsl:when test="number($Page)+1 < number($selectedRowCount)"> 
<A>
<xsl:attribute name="href">_dirresult?page=<xsl:value-of select="number($Page)
+1"/>&pagesize=<xsl:value-of select="$PageSize"/></xsl:attribute>
Next>>
</A>
</xsl:when>
<xsl:otherwise>
<!-- display something else -->
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
这个脚本是否正确?据我所知,当你在第1页第1条时,永远不会达到“在这里显示”。
答案 0 :(得分:2)
找出它是否有效的方法是尝试一下!
您需要做的第一件事是修复一些错误。这个变量声明完全错误,因为它引用了另外两个不存在的变量
<xsl:variable name="selectedRowCount"
select="floor((number($numberOfRecords)-1) div $recordsPerPage)+1"/>
$ numberOfRecords 应该是 mycount ,而 $ recordsPerPage 应该是 $ PageSize
从XSLT看,它需要一个 Customer 元素列表,如此......
<root>
<customer>Bob 1</customer>
<customer>Bob 2</customer>
<customer>Bob 3</customer>
</root>
自己尝试过,看起来确实有效,但请记住它假设页面编号从0开始,而不是1,所以如果要显示第一页,请设置 $ Page 参数为0.不要惊慌,它会在输出中显示第1页...... 。
所以,试一试,看看你是怎么过的......