【问题标题】:SaxonEE-9.9: Escape Character '@' not allowed in regular expressionSaxonEE-9.9:正则表达式中不允许转义字符“@”
【发布时间】:2020-11-17 19:25:03
【问题描述】:

我使用 Saxon EE API 来通过 XSD 验证 XML 有效负载。我的环境是 OSGi。 我的一位用户试图在正则表达式定义中转义 @ 字符。我已经分享了导致问题的线路的 sn-p。

<xsd:restriction base="xsd:string">
    <xsd:pattern value=".+\@.+\..+"/>
</xsd:restriction>

这会在加载 xsd(在 saxon 库中)时导致以下错误。

Error at xsd:pattern on line 17 column 70 
    Syntax error at char 4 in regular expression: Escape character '@' not allowed

任何人都可以分享有关如何克服此问题的任何提示吗?如果需要完整的 xsd,请告诉我。

【问题讨论】:

    标签: saxon xml-validation


    【解决方案1】:

    正则表达式的 XSD 规则比许多其他正则表达式方言中的规则要严格得多:只有当字符确实需要转义并且转义序列具有定义的含义时,才能转义字符。没有为\@ 定义转义字符,所以它应该简单地写成@

    该规则的原因是为了向前兼容:它允许将来引入新的转义字符而不破坏现有架构。

    【讨论】:

      猜你喜欢
      • 2017-03-20
      • 1970-01-01
      • 2012-08-02
      • 1970-01-01
      • 2017-08-15
      • 2017-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多