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