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 规则比许多其他正则表达式方言中的规则更严格:只有当字符确实需要转义并且转义序列具有定义的含义时,才能对它们进行转义。没有为 \@
定义转义字符,所以它应该简单地写成 @
.
该规则的原因是为了向前兼容:它允许在未来引入新的转义字符而不破坏现有模式。
我使用 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 规则比许多其他正则表达式方言中的规则更严格:只有当字符确实需要转义并且转义序列具有定义的含义时,才能对它们进行转义。没有为 \@
定义转义字符,所以它应该简单地写成 @
.
该规则的原因是为了向前兼容:它允许在未来引入新的转义字符而不破坏现有模式。