Копирование переменной XSLT

Я работаю над таблицей стилей Umbraco XSL, и я очень застрял.

В принципе, у меня есть параметр, который я тестирую и использую его значение, если оно присутствует, в противном случае я использую параметр по умолчанию $ currentPage .

Вот параметры

<xsl:param name="source" select="/macro/sourceId" />
<xsl:param name="currentPage" />

Вот переменная

<xsl:variable name="current">
    <xsl:choose>
        <xsl:when test="$source &gt; 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 &gt; 0">
        <xsl:variable name="current" select="umbraco.library:GetXmlNodeById($source)" />
    </xsl:when>
    <xsl:otherwise>
        <xsl:variable name="current" select="$currentPage" />
    </xsl:otherwise>
</xsl:choose>
7
задан Marko 30 September 2010 в 22:20
поделиться