Добавить ограничения на атрибуты другого типа
Я хочу сделать что-то совершенно простое и очевидное, но я не могу найти ни одного примера в Интернете. Все примеры, которые я нашел, всегда содержат один атрибут.
Я хочу создать такой элемент:
У меня есть следующий 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>