Php 为什么可以';XSL模板选择器谓词中不能使用变量吗?

Php 为什么可以';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

给定这个XML

<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