xsd模式用于逗号分隔的单个字符列表

时间:2013-05-16 10:10:28

标签: list xsd schema comma

我在下面的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>

2 个答案:

答案 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>