在PHP中使用本机XSL库.是否有可能在变量中获取节点值而无需每次都通过exslt:node-set调用它......它很长而且很难看.
<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" />
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)<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>
Run Code Online (Sandbox Code Playgroud)
当此转换应用于任何XML文档(未使用)时,将生成所需的正确结果:
2
Run Code Online (Sandbox Code Playgroud)