1

我需要生成一个链接列表,作为最大值,我想做的是一个分页器。

示例:此变量提取最大链接数。

  <xsl:variable name="countPages" 
         select="substring-after(substring-before(
                     //x:div[@class='navBarBottomText']/x:span, ')'), 'till ' )" />

本例为:30,此值为链接总数。

文件 XSLT:

  <xsl:template match="//x:div[@class='navBarBottomText']" >
    <xsl:call-template name="paginator"/>
  </xsl:template>
  <xsl:template name="paginator">
    <xsl:param name="pos" select="number(0)"/>
    <xsl:choose>
      <xsl:when test="not($pos >= countPages)">
        <link href="{concat('localhost/link=' + $pos)}" />
        <xsl:call-template name="paginator">
          <xsl:with-param name="pos" select="$pos + 1" />
        </xsl:call-template>
      </xsl:when>
      <xsl:otherwise/>
    </xsl:choose>
  </xsl:template>

结果应该是这样的:

<link href="localhost/link=0" />
<link href="localhost/link=1" />
<link href="localhost/link=2" />
<link href="localhost/link=3" />
<link href="localhost/link=4" />
<link href="localhost/link=5" />
<link href="localhost/link=6" />
.....

缺少一些参数?谢谢。

4

1 回答 1

1

您可以按照您想要的方式执行此操作 - 只需使用适当的变量引用:

替换

<xsl:when test="not($pos >= countPages)">

<xsl:when test="not($pos >= $countPages)">

在这里,我假设变量$countPages是全局定义的(可见的)。


非递归解决方案

<xsl:variable name="vDoc" select="document('')"/>

<xsl:for-each select=
  "($vDoc//node() | $vDoc//@* | $vDoc//namespace::*)[not(position() >= $countPages)]">

  <link href="localhost/link={position() -1}" />
</xsl:for-each>
于 2013-03-24T15:09:28.010 回答