0

我有这个 XML 和 XSL,当它通过在 Windows 环境中创建的独立 XML 处理器运行时,会生成一个正确的 .html 文件。

我正在寻找在命令行上使用 Saxon 在 Linux 中使用 XSL 文件转换 XML。

XSL 使用包含一些 RegEx 功能的外部 .xsl,这就是 EXSLT.org 发挥作用的地方。包含一个 regexp.test.msxsl.xsl 文件。

虽然当你运行 java -jar /path/to/saxon.jar -O test.html my.xml my.xsl

我明白了

xsl:choose 在 file:my.xsl 的第 63 行出现错误:
URI: http ://exslt.org/regular-expressions未识别外部 Java 类转换失败。

windows源代码是C#。我只是假设包含正则表达式功能的外部 xsl 文件适用于 Windows 环境,而不是用于 Java。

本质上,XML 部分是这样的

<xsl:when test="(string(@IfIs)="") or (not(regex:test(string($input_doc//inf[@id='5']), string(@IfIs), 'i')))">

除非有人可能知道我如何在 XLST 2.0 中执行正则表达式?

4

2 回答 2

2

除非有人可能知道我如何在 XLST 2.0 中执行正则表达式?

如果您只是在测试中使用正则表达式,请使用matches()http://www.w3.org/TR/xpath-functions/#string.match

上面的链接也包括tokenize()replace()

如果您必须进行任何复杂的字符串操作,请查看xsl:analyze-string( http://www.w3.org/TR/xslt20/#element-analyze-string )

于 2013-11-01T22:52:41.753 回答
1

EXSLT 本质上是一组函数库规范,其中许多规范为 XSLT 1.0 处理器提供了 XSLT 2.0 中不需要的权宜之计功能,因为必要的特性已成为标准的一部分。由于 XSLT 2.0 特性已经可用,因此在 Saxon 中没有实现 EXSLT 正则表达式库。使用 EXSLT 函数的样式表(如您的那样)只能与实现这些函数的处理器一起使用。

于 2013-11-02T14:07:24.883 回答