正则表达式在XSLT 2.0中是什么方言?

时间:2014-01-23 23:01:30

标签: regex xslt-2.0

XSLT 2.0使用哪个dialect的Regex,例如<xsl:analyze-string...>?更具体地说,撒克逊9.0。

或更重要的是:我不熟练使用正则表达式,并希望使用正则表达式工具来开发我的XSLT 2.0正则表达式。但了解正则表达式的方言是先决条件。

例如,在这个online regex tester,我猜想XSLT 2.0正则表达式方言将等同于Java或Perl。

更新

在下面的回复中,我做了更有针对性的谷歌搜索:

  • XSLT 2.0使用Xpath 2.0正则表达式spec at w3.org。来自规范状态的评论在正则表达式中推断Perl DNA,然后是值得注意的然而,并非所有Perl函数都可用:
  

这些函数使用的正则表达式语法在   XML Schema中指定的正则表达式语法的术语(请参阅   [XML Schema第2部分:数据类型第二版]),而后者又基于此   已建立的语言惯例,例如 Perl 。然而,   因为XML Schema仅将正则表达式用于有效性   检查,它省略了一些广泛使用语言的设施   比如Perl。因此,本节描述了XML的扩展   用于恢复这些功能的模式正则表达式语法。

  • 虽然XSLT 2.0使用Xpath 2.0正则表达式,但spec at w3.org通过<analyze-string>描述了正则表达式的增强功能。
  

对于比使用这些更复杂的字符串处理   函数,XSLT提供了一个指令<analyze-string>   在本节中定义。

  • 针对Xpath 3.0的W3C拟议建议书包含<analyze-string>
  • 的添加内容
  • 对于使用Saxon 9.2或更高版本的用户而言, Java 语法可能有用。请参阅Martin Honnen在此StackQ
  • 中的评论
  • 表格 A6正则表达式翻译中的Saxon 9.4 documentation注释的第三方软件部分:
  

net.sf.saxon.java,模块JDK14RegexTranslator和JDK15RegexTranslator,以及net.sf.saxon.dotnet,模块DotNetRegexTranslator

UPDATE 9/14/14 看起来未来的Saxons将拥有来自重新设计的雅加达代码的自定义正则表达式引擎。 Interesting Read from Michael Kay

1 个答案:

答案 0 :(得分:2)

XSLT和XPath 2.0中的正则表达式语言构建在the W3C schema specification中定义的语言上,并按照http://www.w3.org/TR/xquery-operators/#regex-syntax中的描述进行扩展。

此外the regex attribute of xsl:analyze-string is an attribute value template所以你需要注意

  

因为regex属性是属性值模板,所以卷曲   正则表达式中的括号必须加倍。例如,   要匹配一到五个字符的序列,请写入regex =“。{{1,5}}”。   对于包含许多大括号的正则表达式,它可能更多   方便使用的符号如   regex =“{'[0-9] {1,5} [a-z] {3} [0-9] {1,2}'}”,或使用变量。