我正在处理一个Umbraco XSL样式表,目前遇到了困难。
基本上,我有一个参数需要进行测试,并且如果存在,则使用它的值,否则使用默认参数
以下是我的参数:
这是变量。
这就是我使用它的地方。
简而言之:
这个有效。
这个没有。
那么,如果不使用
基本上,我有一个参数需要进行测试,并且如果存在,则使用它的值,否则使用默认参数
$currentPage
。以下是我的参数:
<xsl:param name="source" select="/macro/sourceId" />
<xsl:param name="currentPage" />
这是变量。
<xsl:variable name="current">
<xsl:choose>
<xsl:when test="$source > 0">
<xsl:copy-of select="umbraco.library:GetXmlNodeById($source)" />
</xsl:when>
<xsl:otherwise>
<xsl:copy-of select="$currentPage" />
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
这就是我使用它的地方。
<xsl:for-each select="msxml:node-set($source)/ancestor-or-self::* [@isDoc and @level=$level]/* [@isDoc and string(umbracoNaviHide) != '1']">
... code here ...
</xsl:for-each>
简而言之:
这个有效。
<xsl:variable name="source" select="$currentPage" />
这个没有。
<xsl:variable name="source">
<xsl:copy-of select="$currentPage" /> <!-- Have tried using <xsl:value-of /> as well -->
</xsl:variable>
那么,如果不使用
select=""
属性,如何复制一个变量?
更新:我尝试使用另一种方法(见下文),但是我收到了一个“变量超出范围”的异常。
<xsl:choose>
<xsl:when test="$source > 0">
<xsl:variable name="current" select="umbraco.library:GetXmlNodeById($source)" />
</xsl:when>
<xsl:otherwise>
<xsl:variable name="current" select="$currentPage" />
</xsl:otherwise>
</xsl:choose>
$source
有一个不同的值。 - Marko<xsl:variable name="source" select="$currentPage" />
复制参数时,我得到了预期的输出(节点集)。当我尝试在<xsl:parameter></xsl:parameter>
中使用<xsl:copy-of />
或<xsl:value-of />
复制参数时,我得到的是文本而不是预期的XML输出。 - Marko