SaxonEE-9.9:正则表达式中不允许转义字符“@”

SaxonEE-9.9: Escape Character '@' not allowed in regular expression

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

<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,请告诉我。

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

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