Когда у меня есть эти две переменные
<xsl:variable name="a" select="'Total'" />
<xsl:variable name="b" select="'500'" />
Я хотел бы создать узел с именем переменной «a» и его содержимым из переменной «b». Мне приходится использовать xsltproc с XSLT 1.0 и парой расширений EXSLT (среди них — набор узлов), так что часть этого я выполнил:
<xsl:template match="/">
<xsl:variable name="x" >
<<xsl:value-of select="$a" />>
<xsl:value-of select="$b" />
</<xsl:value-of select="$a" />>
</xsl:variable>
<xsl:value-of disable-output-escaping="yes" select="$x" />
</xsl:template>
действительно выводит это (на данный момент меня не волнуют пробелы):
<?xml version="1.0"?>
<Total>
500
</Total>
Но: я хочу использовать переменную 'x' в качестве набора узлов, чтобы в дальнейшем манипулировать им (конечно, мой реальный пример более сложен). Что я сделал, так это преобразовал его в набор узлов (используя exslt.org/common), который, кажется, работает, но доступ к содержимому не работает.
<xsl:variable name="nodes" select="common:node-set($x)" />
<xsl:value-of select="$nodes/Total" />
ни к чему не приводит. Я ожидал "500", так как $nodes/Total должно быть допустимым выражением XPATH 1.0. Очевидно, я что-то упускаю. Я думаю, дело в том, что динамическое создание имени узла с помощью <...>
на самом деле не создает узел, а просто какой-то текстовый вывод, так как я могу добиться здесь истинного создания узла?