Php 匹配xml条目和显示的xslt正则表达式

Php 匹配xml条目和显示的xslt正则表达式,php,xml,xslt,Php,Xml,Xslt,我知道这对你们中的一些人来说很简单 我所要做的就是浏览xml文档并打印出包含特定字符串片段的xml条目。字符串值被传递给xslt并查看xml文档,如果一个单词以字符串表达式开头,它将显示它 我对以下消息有什么错误 MM_XSLTransform错误:在 转换:“matches()”是一个 未知的XSLT函数 这是我的代码示例 <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

我知道这对你们中的一些人来说很简单

我所要做的就是浏览xml文档并打印出包含特定字符串片段的xml条目。字符串值被传递给xslt并查看xml文档,如果一个单词以字符串表达式开头,它将显示它

我对以下消息有什么错误

MM_XSLTransform错误:在 转换:“matches()”是一个 未知的XSLT函数

这是我的代码示例

<xsl:stylesheet 
  version="2.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns="http://www.w3.org/1999/xhtml">
  <xsl:output method="html" encoding="utf-8"/>
  <xsl:param name="qString" />
  <xsl:template match="/">
    <xsl:for-each select="Products/Product">

        <xsl:if test="matches('/OldPN','$qString')">
          <xsl:value-of select="OldPN" /> - <xsl:value-of select="OldName" />
        </xsl:if>

    </xsl:for-each>
  </xsl:template>
</xsl:stylesheet>

- 

有什么想法吗?非常感谢您的帮助

如果您使用的是.NET,那么可以通过从宿主程序注入您自己的IL方法来扩展xslt。通过这种方式添加正则表达式支持将很容易。

正则表达式的
匹配
函数在XSLT2.0中是新的,您的xslt处理器可能还不支持它。如果可以使用普通字符串而不是正则表达式,则可以尝试使用
包含
开头


此外,在您的示例中,第二个参数不能用引号括起来,因为这样您将匹配文本字符串“$qString”,而不是此参数的值。

基础libxslt当前仅支持(e)xslt 1.0。
但是您可以注册php函数,例如使其可用


请参见

感谢您提供的有关报价的信息。我有点认为,在我把“未知XSLT函数”排除在外之后,情况会是这样。我认为我的问题是缺乏对2.0的支持。“Contains”可能会按照您的建议工作,但除此之外,它可能会返回到绘图板以获得另一个解决方案。除了需要使用XSLT 2.0处理器运行此转换之外,您还应该调用类似
matches(OldPN,$qString)
的函数。如果您没有访问XSLT2.0的权限,也许可以在XSLT1.0中完成。您应该发布您的输入示例和参数
qString
示例。