Ric*_*sen 5 xsd design-patterns
我有这样的标签
<order>foo,bar,goo,doo,woo</order>
Run Code Online (Sandbox Code Playgroud)
我需要用xsd验证.
如何编写与包含以下内容的字符串匹配的正则表达式模式:
<order>foo,bar,goo,doo,woo</order>
<order>foo,bar,goo</order>
<order>foo,doo,goo,woo</order>
<order>woo,foo,goo,doo,bar</order>
<order></order>
Run Code Online (Sandbox Code Playgroud)
<order>foo,foo</order>
<order>,</order>
<order>fo</order>
<order>foobar</order>
Run Code Online (Sandbox Code Playgroud)
这必须在不同的XML/XSD解析器中工作.
我认为你无法用正则表达式表达所有规则。尤其是“最多一次”将很难执行。这是我想到的最接近的
<xs:simpleType name="order">
<xs:annotation>
<xs:documentation>
Comma-separated list of anything
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:pattern value="[^,]+(,\s*[^,]+)*"/>
</xs:restriction>
</xs:simpleType>
Run Code Online (Sandbox Code Playgroud)
您可能想尝试使用空格作为分隔符。这在 XML 文件中更为常见。XML Schema 有一个为空格分隔列表定义的内置类型“ list” 。