Php 为什么可以';XSL模板选择器谓词中不能使用变量吗?
给定这个XMLPhp 为什么可以';XSL模板选择器谓词中不能使用变量吗?,php,xslt-1.0,Php,Xslt 1.0,给定这个XML <root> <foo x='1'/> <foo x='3'/> <foo x='7'/> </root> 然后我得到这个错误 XSLTProcessor::importStylesheet(): compilation error: Failed to compile predicate 我是否做错了什么,或者变量不能这样使用 我尝试过用其他方式声明变量,例如 <xsl:variable na
<root>
<foo x='1'/>
<foo x='3'/>
<foo x='7'/>
</root>
然后我得到这个错误
XSLTProcessor::importStylesheet(): compilation error: Failed to compile predicate
我是否做错了什么,或者变量不能这样使用
我尝试过用其他方式声明变量,例如
<xsl:variable name="i" select="2"/>
<xsl:variable name="i">2<xsl:variable>
不,不能在模板匹配模式(或xsl:key指令)中引用变量
为什么不呢?因为变量的声明允许包含对xsl:apply模板的调用,所以在模板匹配模式中允许变量引用将使循环变量声明成为可能 谢谢你的澄清。
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:variable name="i" select="2"/>
<xsl:template match="root">
<result>
<xsl:apply-templates select="foo"/>
</result>
</xsl:template>
<xsl:template match="foo[@x > $i]">
<xsl:copy-of select="."/>
</xsl:template>
</xsl:transform>
XSLTProcessor::importStylesheet(): compilation error: Failed to compile predicate
<xsl:variable name="i" select="2"/>
<xsl:variable name="i">2<xsl:variable>
PHP Version 5.3.2
libxslt Version 1.1.23