重音字符的XSD限制模式

时间:2014-12-11 11:42:01

标签: regex xml unicode xsd

我使用的是XML / XSD文件,但我在验证时遇到了一个问题。

一个字段有此限制:

<xs:pattern value="[A-Za-z0-9 '\-\./]+"/>

但是,当我把这个值:

example with àccented character

验证器说“模式约束失败”

所以基本上,我要问的是:a-z模式中是否包含重音字符?

如果没有,我该怎么办? (考虑到我无法更改.xsd,因为它不是我的,我不被允许。)

1 个答案:

答案 0 :(得分:1)

不,重音字符不包含在[A-Za-z]模式中。

如果您可以更改XSD,并且如果您想要更通用的基于Unicode的模式,则可以指定:

<xs:pattern value="[\p{L}\p{P}\p{N}]+"/>

<强>解释

  • \ p {L}匹配一个字母
  • \ p {P}匹配标点符号(拾取你的撇号 请求)
  • \ p {N}匹配数字
  • [...]+匹配其中包含的一个或多个字符。

如果您无法更改XSD,并且您希望文档有效,则应遵守其约束条件。除了忽略XSD排除非ASCII码点之外,还有其他原因。例如,消费应用程序可能会在那里需要甚至需要ASCII。