PHP XSL:key';匹配';模式顺应失败

PHP XSL:key';匹配';模式顺应失败,php,xslt,Php,Xslt,我有以下密钥,但在尝试运行代码时出现apache错误 <xsl:key name="dt" match="//eprint[substring(date,1,4) &gt;= $year]" use="substring(date,1,4)" /> 我猜钥匙设置有问题,但我不确定是什么问题 有人能给我指出正确的方向吗 示例数据集是 <?xml version='1.0' encoding='utf-8'?> <eprints xmlns='http://e

我有以下密钥,但在尝试运行代码时出现apache错误

<xsl:key name="dt" match="//eprint[substring(date,1,4) &gt;= $year]" use="substring(date,1,4)" />
我猜钥匙设置有问题,但我不确定是什么问题

有人能给我指出正确的方向吗

示例数据集是

<?xml version='1.0' encoding='utf-8'?>
<eprints xmlns='http://eprints.org/ep2/data/2.0'>
  <eprint id='http://dsfdsfs'>
   <eprintid>3424243242423</eprintid>
   <date>2012-12</date>
  </eprint>

3424243242423
2012-12

您使用的XSLT处理器是什么?如果它只支持XSLT1.0,那么在xsl:key中的“match”(或“use”)属性中使用变量引用是错误的。我如何找出我正在使用的进程?我没有编写这段代码,而是试图解决它的一个问题:(如果有帮助的话,我使用的是libxslt版本1.1.29?libxslt是XSLT处理器……。(尽管为了将来的参考,请参阅).但无论如何,我相信libxslt只支持XSLT 1.0.Hi,谢谢。因此我将键更改为值而不是变量,它就工作了。不可能将变量传递到键中吗?在XSLT 1.0中不可能。您必须更改为使用XSLT 2.0(或者更好的是XSLT 3.0)处理器,如Saxon。
<?xml version='1.0' encoding='utf-8'?>
<eprints xmlns='http://eprints.org/ep2/data/2.0'>
  <eprint id='http://dsfdsfs'>
   <eprintid>3424243242423</eprintid>
   <date>2012-12</date>
  </eprint>