为特定字符串指定XML文档的XML模式

时间:2014-04-16 11:34:15

标签: xml xsd xsd-validation

我有xsd如下

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="College">
    <xs:complexType>
      <xs:sequence>
          <xs:element type="xs:string" name="Name" maxOccurs="unbounded" minOccurs="1"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

它必须只允许2个值示例 只允许ABC和CBS

<college>
<Name>ABC</Name>
<Name>ABC</Name>
<Name>CBS</Name>
</college>

不允许

<college>
<Name>ABC</Name>
<Name>ABC</Name>
<Name>CBS</Name>
<Name>XYZ</Name>
</college>

2 个答案:

答案 0 :(得分:2)

由于您有可数的选项,您可以使用枚举来限制它们。将xs:element声明替换为:

<xs:element name="Name" maxOccurs="unbounded" minOccurs="1">
    <xs:simpleType>
        <xs:restriction base="xs:string">
            <xs:enumeration value="ABC"/>
            <xs:enumeration value="CBS"/>
        </xs:restriction>
    </xs:simpleType>
</xs:element>

答案 1 :(得分:1)

尝试模式匹配

<xsd:element name="elementName">
    <xsd:simpleType>
        <xsd:restriction base="xsd:string">
            <xsd:pattern value="/^[ABC|CBS]$/"></xsd:pattern>
        </xsd:restriction>
    </xsd:simpleType>
</xsd:element>