XSLT中的变量范围?

时间:2016-03-03 03:11:47

标签: xml xslt

这是我的XSLT:

<xsl:choose>  
  <xsl:when test="string-length(/*/location/name)">
    <xsl:variable name="pagurl">/location/<xsl:value-of select="/*/location/@id" />comments</xsl:variable>
  </xsl:when>
  <xsl:otherwise>
    <xsl:variable name="pagurl">/state/<xsl:value-of select="/*/state/@code" />/comments</xsl:variable>
  </xsl:otherwise>
</xsl:choose>

<div class="pagination_outer" id="pager">
  <xsl:call-template name="pagination">
    <xsl:with-param name="url"><xsl:value-of select="$pagurl"/></xsl:with-param>                                
  </xsl:call-template>
</div>

我正在做以下事情:

  1. 将变量$pagurl分配给基于字符串长度的值。
  2. 尝试在调用<xsl:with-param name="url"><xsl:value-of select="$pagurl"/></xsl:with-param>
  3. 中使用变量

    当我包含此调用时,页面似乎永远不会完成加载,但是当我不使用它时,页面加载就好了。 我想在使用此功能时出现了错误。

    我不认为有必要查看pagination template,因为如果我对某个值进行硬编码,它就能正常工作。

    建议?

1 个答案:

答案 0 :(得分:0)

pageurl中定义的变量xsl:whenxsl:otherwise内的变量pagination在您尝试将其用作{{1}的参数时超出了范围}。你说页面似乎永远不会完成加载,但我怀疑你错过了一条错误信息。

请改为尝试:

<xsl:variable name="pagurl">
  <xsl:choose>  
    <xsl:when test="string-length(/*/location/name)">
      <xsl:text>/location/</xsl:text>
      <xsl:value-of select="/*/location/@id"/>
      <xsl:text>comments</xsl:text>
    </xsl:when>
    <xsl:otherwise>
      <xsl:text>/state/</xsl:text>
      <xsl:value-of select="/*/state/@code"/>
      <xsl:text>/comments</xsl:text>
    </xsl:otherwise>
  </xsl:choose>
</xsl:variable>

<div class="pagination_outer" id="pager">
  <xsl:call-template name="pagination">
    <xsl:with-param name="url" select="$pagurl"/>
  </xsl:call-template>
</div>