2013-05-13 2 views
2

Пожалуйста, обратите внимание мое выражение XPATH «A/B» возвращает следующий узелПеременные в XSLT, как декларируют, присвоить значение и использовать эту переменную в другом месте в том же XSLT

<Q ID="12345"> 
    ---- 
    ---- 
    </Q> 

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

Это, как я пытаюсь присвоить значение моей tempVariable переменной

<xsl:for-each select="A/B"> 
    <xsl:variable name="tempVariable"><xsl:value-of select="@ID"/></xsl:variable> 
    </xsl:for-each> 

И все-таки я пытаюсь использовать эту переменную

<xsl:if test="$tempVariable='12345'"> 
    .... 
    .... 
    </xsl:if> 

но здесь, как я понимаю, я получаю $ tempVariable = "", что неверно.

Может кто-нибудь скажет мне, где я делаю неправильно, или как я могу это сделать надлежащим образом. Спасибо.

+1

Итак, Q является ребенком B? ... тогда это должен быть Q/@ ID ... – kiwiwings

+0

Назовите ответ на аналогичный вопрос, размещенный здесь http://stackoverflow.com/questions/17066455/declare-global-variable-in-xslt-re-assign-a -value-local/25338485 # 25338485 – TonyP

ответ

3

Почему путь, подобный A/B, выбирает элемент Q? Если вы хотите использовать переменную, вам нужно убедиться, что она находится в области видимости. Переменная, которую вы показываете в своем примере, находится внутри области xsl:for-each, после элемента xsl:variable.

Если вы хотите использовать переменную за пределами for-each, вам необходимо объявить ее за пределами for-each.

Однако я думаю, что вы можете просто сделать

<xsl:variable name="v1" select="A/B/@ID"/> 
<xsl:if test="$v1 = '12345'">..</xsl:if> 

нет необходимости в for-each.

+0

Благодарим вас за ответ Martin. Как я могу переназначить значение переменной «v1» там, похоже, что XSLT не позволяет переназначить значения переменной? –

+0

XSLT - это декларативный язык программирования, в то время как присвоение и, в частности, переназначение переменных - это концепция процедурного программирования, предполагающая некоторый последовательный порядок выполнения инструкций. Это не то, как работает XSLT, и если вам нужна помощь в решении проблемы в XSLT и еще не знакомы с ней, подумайте о том, чтобы опубликовать образец ввода и соответствующий образец результата, который вы хотите создать, тогда люди здесь могут показать вам способ XSLT решение проблемы. –