xsltproc不识别XSLT 2.0

时间:2014-07-31 14:36:25

标签: xml regex xslt xpath

我有这个XSLT音节表:

<?xml version="1.0"?>

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" indent="yes" />
  <xsl:strip-space elements="*" />

  <!-- Default behavior: copy everything -->
  <xsl:template match="@*|node()">
    <xsl:copy>
      <xsl:apply-templates select="@*|node()" />
    </xsl:copy>
  </xsl:template>

  <!-- Do not copy: -->
  <xsl:template match="NodeLevel1[matches(NodeLevel2/@Param1, 'myRegex')]">
  </xsl:template>
</xsl:stylesheet>

所以,我想基于正则表达式复制除某些节点之外的所有节点。我想使用XSLT 2的匹配功能来实现这一点。但是当我运行以下命令时:

xsltproc.exe style.xsl input.xml > output.xml

我在标准输出上发布了此消息:

xmlXPathCompOpEval: function matches not found
XPath error : Unregistered function
xmlXPathCompiledEval: 1 object left on the stack

如何解决这个问题?

非常感谢。

1 个答案:

答案 0 :(得分:12)

您需要使用像Saxon 9这样的XSLT 2.0处理器或https://stackoverflow.com/tags/xslt-2.0/info上列出的其他选项,xsltproc是XSLT 1.0处理器。