Добавить ограничения на атрибуты другого типа

Я хочу сделать что-то совершенно простое и очевидное, но я не могу найти ни одного примера в Интернете. Все примеры, которые я нашел, всегда содержат один атрибут.

Я хочу создать такой элемент:

У меня есть следующий 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 ответ

Решение

Да, у вас могут быть атрибуты с различными ограничениями, например:

  <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>
Другие вопросы по тегам