添加对不同类型属性的限制

时间:2015-01-22 16:53:26

标签: xml xsd restriction

我想做一些完全简单明了的事情,但我在互联网上找不到任何关于它的例子。我发现的所有例子总是涉及一个属性。

我想创建一个这样的元素:

              

我有以下XSD,但是我收到一个错误,说限制元素放错位置或显得太频繁:

<xs:element name="blabla">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="Images" minOccurs="0" maxOccurs="1">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="image" type="imageType" minOccurs="0" maxOccurs="unbounded" />
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
</xs:element>

<xs:complexType name="imageType">
    <xs:sequence>
        <xs:element name="Image" minOccurs="0" maxOccurs="unbounded">
            <xs:complexType>
                <xs:complexContent>
                    <xs:restriction base="xs:integer">
                        <xs:attribute name="id" type="xs:integer" use="required" />
                    </xs:restriction>
                    <xs:restriction base="xs:string">
                        <xs:attribute name="src" type="xs:anyURI" use="required" />
                    </xs:restriction>
                </xs:complexContent>
            </xs:complexType>
        </xs:element>
    </xs:sequence>
</xs:complexType>

如何为每个属性添加不同的限制?

1 个答案:

答案 0 :(得分:1)

是的,你当然可以拥有不同限制的属性,例如:

  <xs:complexType name="imageType">
    <xs:sequence>
      <xs:element name="Image" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:attribute name="id" use="required">
            <xs:simpleType>
              <xs:restriction base="xs:integer">
                <xs:minExclusive value="0"/>
                <xs:maxExclusive value="100"/>
              </xs:restriction>
            </xs:simpleType>
          </xs:attribute>
          <xs:attribute name="src" use="required">
            <xs:simpleType>
              <xs:restriction base="xs:anyURI">
                <xs:maxLength value="200"/>
              </xs:restriction>
            </xs:simpleType>
          </xs:attribute>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>