2009-03-29 15 views
2

Я пытаюсь изучить XSLT. Я просто схожу с ума. Переменные должны быть объявлены в объекте xsl: variables и созданы с их именами, имеющими символ $ непосредственно перед ними (например, perl-переменные), правильно? Почему на земле этого кода:Как использовать значение переменных XSLT?

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

    <xsl:template match="/"> 
     <xsl:variable name="color" select="'red'" /> 
     <p>$color</p> 
    </xsl:template> 
</xsl:stylesheet> 

результатов в символьной строке: «$ цвета» записываются разбор простого непустого документа XML с помощью msxsl парсера? Большое спасибо

ответ

17

Используйте <xsl:value-of select="$color"/> вместо того, чтобы писать $color непосредственно в документ.

См. Также this question.

11

Кроме того, в пределах атрибутов вы можете получить значения непосредственно, как это:

<span style="color:{$color}" /> 
+0

+1 - все эти годы я использовал , чтобы сделать это - почему никто не сказал мне раньше! – philsquared

+0

то же самое ... и худшая часть, я видел это раньше и забыл. :( – harpo

+0

Рад распространить некоторую радость - @Phil, ваши слова очень похожи на мои, когда я обнаружил это тоже! –

2

Почему на земле этот код: ...

<xsl:variable name="color" select="'red'" /> <p>$color</p>

результаты в символьной строки : "$ color" написано

Поскольку этот код означает: вывести строку $ color в качестве дочернего элемента текстового узла <p> элемента.

Для вывода значения в $color XSL: переменная использования один из них:

  • <xsl:value-of select="$color"/>
  • <xsl:copy-of select="$color"/>
2

Хорошее эмпирическое правило для XSLT: если это не в теге <xsl:foo>, это не код. Это выход.