我在下面的xsd架构中遇到问题如何将逗号分隔的字符串限制为只有一个这样的字符
<status>A,B,C,D</status>
目前我正在使用下面的代码创建逗号分隔的字符串列表。
<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>
答案 0 :(得分:2)
使用
<xs:element name="status">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="((([A-Z][,]+)+)([A-Z]?))|([A-Z]))"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
验证:
<status>A</status>
<status>A,</status>
<status>A,B</status>
<status>A,B,C,D</status>
<status>A,B,C,D,</status>
并避免
<status>AA</status>
<status>AA,</status>
<status></status>
<status>AAAA,BBBB,CCCC,DDDD,</status>
答案 1 :(得分:2)
与Navin Rawat's answer类似,只是不同(和更简单)的正则表达式:
<xs:element name="status">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[A-Z](,[A-Z])*"/>
</xs:restriction>
</xs:simpleType>
</xs:element>