我有这样的标签
<order>foo,bar,goo,doo,woo</order>
我需要使用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>
<order>foo,foo</order>
<order>,</order>
<order>fo</order>
<order>foobar</order>
这必须在不同的XML / XSD 解析器中工作。
答案 0 :(得分:3)
我认为你不能在正则表达式中表达所有规则。特别是,执行“最大一次”将很难。这是我最接近的,
<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>
您可能希望尝试将空格用作分隔符。这在XML文件中更常见。 XML Schema具有为空格分隔列表定义的内置类型"list
"。
答案 1 :(得分:0)
我可以编写一个模式文件,如果它们遵循一些顺序..像{foo,bar,goo,doo,woo}
但是在你的情况下,你说,它们可以出现在任何序列中。
所以(5P5 + 5P4 + 5P3 + 5P2 + 5P1 + 1)= 326模式.. !!!
如果我提到的那样有一些序列..那么模式的数量就是.. 32 ..可忍受..