Во всех ответах отсутствует что-то важное: читайте дальше:
Может кто-нибудь подскажите пожалуйста как
распечатать переменную в моем XSL
преобразования? Похоже, достаточно легко
что нужно сделать, но я просто не могу
сделай это.
В XSLT 1.0 есть два основных способа получения содержимого <xsl:variable>
, в зависимости от того, содержит ли оно скалярное значение (строка, число или логическое значение), или имеет структурированное значение - набор узлов (один или несколько узлов из XML-документов):
<xsl:value-of select="$yourscalarVariableName"/>
Используйте это для получения скалярного значения. Фактически создает текстовый узел, содержащий это скалярное значение.
<xsl:copy-of select="$yourStructuredVariableName"/>
Используйте это для создания копии всех узлов, содержащихся в переменной.
Очень важно знать , что если xsl:variable
содержит список узлов и используется инструкция <xsl:value-of ...>
, будет получено только строковое значение первого узла. Это часто совершаемая ошибка и часто задаваемые вопросы.
Существует третий способ : если при создании атрибута следует использовать <xsl:variable>
:
<someLiteralResultElement someAttribute="{$theVariable}"/>
Выражение XPath в фигурных скобках (называемое AVT - атрибут-значение-шаблон ) оценивается и результат помещается в значение атрибута.
В XSLT 2.0 инструкция <xsl:value-of .../>
, если она выполняется не в режиме совместимости, создает список текстовых узлов - по одному для каждого узла, содержащегося в xsl:variable
. При запуске в режиме совместимости (с указанным атрибутом version="1.0"
) инструкция <xsl:value-of>
ведет себя так же, как в XSLT 1.0.
В Xslt 2.0 <xsl:copy-of>
ведет себя так же, как в XSLT 1.0. Однако рекомендуется использовать новую инструкцию <xsl:sequence>
, поскольку первая создает новую копию каждого узла, а <xsl:sequence>
не создает новых копий узлов.