Одним из способов достижения этого является использование функции расширения, а именно функции набор узлов , которая возвращает набор узлов из фрагмента дерева результатов.
Сначала вам нужно определить пространство имен для функций расширения, например:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt">
В этом случае я использую функции расширения Microsoft, но другие доступны в зависимости от используемой платформы. (http://exslt.org/common является еще одним распространенным для платформ, не принадлежащих Microsoft).
Далее вы определяете свой параметр «массива» (или переменную, которую вы хотели), вот так.
<xsl:param name="array" select="msxsl:node-set($inline-array)"/>
Наконец, вы можете получить доступ к этому массиву следующим образом:
<xsl:value-of select="$array/Item[1]"/>
Если все это привести в простой пример, то получим
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt">
<xsl:output method="text" />
<xsl:variable name="inline-array">
<Item>
<xsl:value-of select="$Item1"/>
</Item>
<Item>
<xsl:value-of select="$Item2"/>
</Item>
<Item>
<xsl:value-of select="$Item3"/>
</Item>
</xsl:variable>
<xsl:param name="Item1">1</xsl:param>
<xsl:param name="Item2">2</xsl:param>
<xsl:param name="Item3">3</xsl:param>
<xsl:param name="array" select="msxsl:node-set($inline-array)"/>
<xsl:template match="/">
<xsl:value-of select="$array/Item[1]"/>
</xsl:template>
</xsl:stylesheet>
При запуске просто выводится следующий результат:
1