<!-- 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 < $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 文件在每个页面上都可以正常工作,除了我创建的新页面。