Переменные XSLT неизменяемы (не могут быть изменены) и строго ограничены.
Вы всегда можете обернуть xsl:for-each
xsl:variable
. Любые текстовые значения, испускаемые в пределах xsl:for-each
, будут присвоены xsl:variable
.
Например, следующая таблица стилей объявляет переменную textValueCSV
. В пределах xsl:for-each
он использует xsl:value-of
и xsl:text
. Все текстовые значения присваиваются переменной textValuesCSV
, которая используется за пределами из xsl:for-each
, чтобы выбрать ее значение.
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" />
<xsl:template match="/">
<xsl:variable name="textValuesCSV">
<xsl:for-each select="/*/*">
<xsl:value-of select="."/>
<xsl:if test="position()!=last()">
<xsl:text>,</xsl:text>
</xsl:if>
</xsl:for-each>
</xsl:variable>
<xsl:value-of select="$textValuesCSV"/>
</xsl:template>
</xsl:stylesheet>
При применении этого XML:
<doc>
<a>1</a>
<b>2</b>
<c>3</c>
</doc>
Производит этот вывод:
1,2,3
Пожалуйста, предоставьте код XML и XSLT (минимальный, пожалуйста) и лучше объясните, в чем проблема. Тогда многие из читателей смогут показать вам решение. Что касается вашего общего вопроса, ответ отрицательный, как уже объяснялось @Tomalak и @ Mads-Hansen. –