<xsl:variable name="mydata">
<foo>1</foo>
<bar>2</bar>
</xsl:variable>
<!-- How currently being done -->
<xsl:value-of select="exslt:node-set($mydata)/foo" />
<!-- I want to be able to do this -->
<xsl:value-of select="$mydata/foo" />
Если содержимое переменной статически определено, то является возможным для доступа к ней из выражения XPath без использованияxxx:node-set()
функция расширения.
Пример :
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:variable name="mydata">
<foo>1</foo>
<bar>2</bar>
</xsl:variable>
<xsl:template match="/">
<xsl:value-of select=
"document('')/*/xsl:variable[@name='mydata']/bar"/>
</xsl:template>
</xsl:stylesheet>
, когда это преобразование применяется к любому документу XML (не используется), требуемый, правильныйрезультат получается :
2