如何使列表需要列表1值与XSD?

时间:2014-10-22 10:18:03

标签: xml xsd

如何确保xml doc中的列表至少包含允许类型中的一个值?

我尝试过使用minlength = 1,但这没效果:

  <xs:simpleType name="FeatureOption">
    <xs:list>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:minLength value="1"/>
          <xs:enumeration value="F0"/>
          <xs:enumeration value="F0A"/>
          <xs:enumeration value="F0B"/>
          <xs:enumeration value="F0C"/>
          <xs:enumeration value="F1"/>
          <xs:enumeration value="F2"/>
          <xs:enumeration value="F2A"/>
          <xs:enumeration value="F3"/>
          <xs:enumeration value="F3A"/>
          <xs:enumeration value="F3B"/>
          <xs:enumeration value="F3C"/>
          <xs:enumeration value="DataOnly"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:list>
  </xs:simpleType>

我也试过这个:

<xs:element name="Feature" type="FeatureOption" nillable="false" minOccurs="1"/>

1 个答案:

答案 0 :(得分:3)

可能的解决方案应该是

<xs:simpleType name="FeatureOptionType">
    <xs:restriction base="FeatureOption">
        <xs:minLength value="1"/>
    </xs:restriction>
</xs:simpleType>
<xs:simpleType name="FeatureOption">
    <xs:list>
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:enumeration value="F0"/>
                <xs:enumeration value="F0A"/>
                <xs:enumeration value="F0B"/>
                <xs:enumeration value="F0C"/>
                <xs:enumeration value="F1"/>
                <xs:enumeration value="F2"/>
                <xs:enumeration value="F2A"/>
                <xs:enumeration value="F3"/>
                <xs:enumeration value="F3A"/>
                <xs:enumeration value="F3B"/>
                <xs:enumeration value="F3C"/>
                <xs:enumeration value="DataOnly"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:list>
</xs:simpleType>

以这种方式使用

<xs:element name="Feature" type="FeatureOptionType" />