Umbraco - 使用umbraco.library时出错:NiceUrl(...)

时间:2013-07-29 11:45:20

标签: xslt umbraco

<!-- Get the url of a node based on a list of positions (starting point = language root) -->
<xsl:template name="getUrl">
  <xsl:param name="id" />
  <xsl:param name="positions" />
  <xsl:param name="i" select="0" />
  <xsl:param name="max" />

  <!-- Return the url -->
  <xsl:if test="$i = $max">    
    <xsl:value-of select="umbraco.library:NiceUrl($id)" />    
  </xsl:if>

  <xsl:if test="$i &lt; $max">
    <xsl:call-template name="getUrl">
      <xsl:with-param name="id">
        <!-- Define the id of the next item in the tree structure -->
        <xsl:for-each select="//* [@id = $id]/child::* [@isDoc]">
          <xsl:if test="position() = number(umbraco.library:Split($positions, ',')/value[number($i)])">  
            <xsl:value-of select="@id" />
          </xsl:if>
        </xsl:for-each>
      </xsl:with-param>
      <xsl:with-param name="positions">
        <xsl:value-of select="$positions"/>
      </xsl:with-param>
      <xsl:with-param name="i">
        <xsl:value-of select="$i + 1"/>
      </xsl:with-param>
      <xsl:with-param name="max">
        <xsl:value-of select="$max"/>
      </xsl:with-param>    
    </xsl:call-template>
  </xsl:if>  
</xsl:template>

我正在使用带有XLST文件的宏。 使用此代码时,我收到一个错误(对于Int32,值太大或太小)。 错误发生在以下两行:

<xsl:value-of select="umbraco.library:NiceUrl($id)" /> 
<xsl:call-template name="getUrl">

有人可以告诉我这里我做错了什么,因为这个XSLT文件在每个页面都能正常工作,除了我创建的新页面。

1 个答案:

答案 0 :(得分:1)

好的,我找到了一个解决方案:我在这部分添加了额外的检查:

<!-- Return the url -->
<xsl:if test="$i = $max"> 
  <xsl:if test="$id != '' ">  
    <xsl:value-of select="umbraco.library:NiceUrl($id)" />    
  </xsl:if>
</xsl:if>

这解决了我的问题。