【问题标题】:XSD restriction pattern for accented characters重音字符的 XSD 限制模式
【发布时间】:2015-02-09 21:21:59
【问题描述】:

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

一个字段有这个限制:

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

但是当我输入这个值时:

example with àccented character

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

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

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

【问题讨论】:

    标签: regex xml unicode xsd


    【解决方案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。

    【讨论】:

    • 首先,非常感谢您编辑我的问题(我的英语不是您能读到的最好的英语)并回答。我已经检查了您的评论作为答案。其次,你是在告诉我没有办法放重音字符?即使是像 è 这样的实体或类似的东西?提前致谢。
    • &amp;egrave; 是纯 XML 中不存在的 HTML 实体,但是是的,在 XML 文件中使用等效的 &amp;#xE8; 与直接使用 è 没有区别。该架构特别不允许重音字符,因此如果您想通过验证,您必须将它们取出。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    • 2012-11-07
    • 2019-06-15
    • 1970-01-01
    • 2021-09-13
    • 1970-01-01
    相关资源
    最近更新 更多