XSD complexContent ограничение

Я нашел следующий пример на w3schools.

<xs:complexContent>
  <xs:restriction base="xs:integer">
    <xs:attribute name="prodid" type="xs:positiveInteger"/>
  </xs:restriction>
</xs:complexContent>

Я искал во многих документациях, но все еще не получил его: когда complexContent не имеет атрибута "mixed", элемент не имеет никакого текстового узла и, следовательно, не нуждается ни в каком типе данных. Но почему <xs:restriction base="xs:integer">? Как я понял это абсолютно ничего не делает?

1 ответ

Решение

Я не думаю, что приведенный выше сложный фрагмент содержимого (или фрагмент на связанной странице) является верным в соответствии со спецификацией схемы XML, поэтому ваши соображения имеют смысл. Если вы попробуете это с механизмом проверки XML-схемы, он должен выдать ошибку. Сложный тип со сложным содержимым (только для элементов или смешанный) не может быть получен путем ограничения из простого типа.

Сложный тип с пустым содержимым и атрибутом может быть определен следующим образом:

<xs:complexType>
    <xs:attribute name="prodid" type="xs:positiveInteger"/>
</xs:complexType>

Просто для полноты: технически возможно также извлечь сложный тип, который должен иметь "пустое содержимое" (обратите внимание на кавычки) из простого типа, однако это должно быть сделано расширением, а простой тип должен быть одноэлементным пространством, содержащим пустая строка, чтобы не допустить никакого содержимого. Полученный сложный тип будет тогда иметь простое содержимое, которое должно быть пустой строкой - так что, на самом деле, оно не является, строго говоря, пустым содержимым, но при проверке экземпляров оно ведет себя как таковое.

<xs:simpleType name="empty">
    <xs:restriction base="xs:string">
        <xs:length value="0"/>
    </xs:restriction>
</xs:simpleType>

<xs:complexType>
    <xs:simpleContent>
        <xs:extension base="empty">
            <xs:attribute name="prodid" type="xs:positiveInteger"/>
        </xs:extension>
    </xs:simpleContent>
</xs:complexType>
Другие вопросы по тегам