XSD架构中的正则表达式:两个组合元素的混合和最大大小

Lui*_*cía 5 regex xsd

我想为XSD类型创建一个限制,只允许大小为0到64的元素,一个点和另一个大小为0到64的元素.我试过这个,但没有成功.

<xs:simpleType name="myString_Type">
        <xs:restriction base="xs:string">
            <xs:pattern value="^([a-zA-Z\-]){0-64}.$([a-zA-Z\-]){0-64}"/>
        </xs:restriction>
</xs:simpleType>
Run Code Online (Sandbox Code Playgroud)

谢谢.

13r*_*ren 4

^并且$不用于 XSD 中的正则表达式 - 它始终从开头和结尾匹配,就好像它们在那里一样。因此,只需省略它们:

\n\n
[a-zA-Z\\-]{0,64}\\.[a-zA-Z\\-]{0,64}\n
Run Code Online (Sandbox Code Playgroud)\n\n

并转义.(或使用字符类,如 NullUserException 所说)。

\n\n

来自XML 架构第 2 部分:数据类型规范:

\n\n
\n

与一些流行的正则表达式语言(包括 Perl 和标准 Unix 实用程序定义的语言)不同,这里定义的正则表达式语言隐式地锚定了头部和尾部的所有正则表达式,如 \xc2\xb7pattern\xc2 中正则表达式最常见的用法\xb7 是匹配整个文字。

\n
\n\n

他们的例子是使用A.*Znot^A.*Z$

\n\n

因为^$不是特殊字符,所以它只会尝试在 xml 文档中匹配它们。

\n\n

有人说unix是一个不兼容的正则表达式语法的集合,所以通过不遵循unix标准,他们遵循了unix传统。

\n\n
\n\n

您可以在以下位置测试此示例:http://www.utilities-online.info/xsdvalidation/(来自 NullUserException 的测试实例)

\n\n
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">\n  <xs:element name="eg" type="myString_Type"/>\n\n  <xs:simpleType name="myString_Type">\n    <xs:restriction base="xs:string">\n      <xs:pattern value="[a-zA-Z\\-]{0,64}\\.[a-zA-Z\\-]{0,64}"/>\n    </xs:restriction>\n  </xs:simpleType>\n</xs:schema>\n\n<eg>something.something-else</eg>\n
Run Code Online (Sandbox Code Playgroud)\n