实施唯一属性值

时间:2013-11-12 09:45:13

标签: xml xsd xsd-validation

xml看起来像:

<Details>
  <CNumber>1</CNumber>          
</Details>
<Details>
  <CNumber>2</CNumber>
</Details>

当前XSD看起来像:

<xsd:element name="Details" minOccurs="0" maxOccurs="8">
  <xsd:complexType>
    <xsd:sequence>
      <xsd:element name="CNumber" minOccurs="1" maxOccurs="1">
        <xsd:simpleType>
          <xsd:restriction base="xsd:integer"> 
            <xsd:pattern value="[1-8]{1}"/> 
          </xsd:restriction> 
        </xsd:simpleType>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
</xsd:element>

现在,我们需要确保CNumber只能包含1到8之间的唯一值。不能重复相同的数字。请在这里建议如何使用独特。 ?

1 个答案:

答案 0 :(得分:0)

以下是基于您的片段的示例模式,该模式在CNumber上强制执行

<?xml version="1.0" encoding="utf-16"?>
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:element name="Customer">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="Details" minOccurs="0" maxOccurs="8">
          <xsd:complexType>
            <xsd:sequence>
              <xsd:element name="CNumber" minOccurs="1" maxOccurs="1">
                <xsd:simpleType>
                  <xsd:restriction base="xsd:integer">
                    <xsd:pattern value="[1-8]{1}"/>
                  </xsd:restriction>
                </xsd:simpleType>
              </xsd:element>
            </xsd:sequence>
          </xsd:complexType>
        </xsd:element>
      </xsd:sequence>
    </xsd:complexType>
    <xsd:unique name="uniqueCNumber">
      <xsd:selector xpath="./Details" />
      <xsd:field xpath="CNumber" />
    </xsd:unique>
  </xsd:element>
</xsd:schema>