在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" />发布于 2011-01-12 11:39:35
1 2
如果变量的内容是静态定义的,则it is to access it from a XPath expression而不使用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发布于 2012-11-04 03:49:57
可以只调用node-set一次。将变量转换为节点集类型:
<!-- do it once at the beginning -->
<xsl:variable name="mydatans" select="exslt:node-set($mydata)" />
<!-- anytime you need: -->
<xsl:value-of select="$mydatans/foo" />https://stackoverflow.com/questions/4662762
复制相似问题