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

Add restrictions on attributes of different type

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

我想创建这样的元素:

我有以下 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>

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

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

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