Смешанный наследуется потомками элемента схемы xsd?

Элемент смешанного сложного типа также может иметь текст между дочерними элементами. Дети тоже наследуют эту смешанную особенность? Другими словами, если дети не смешанного типа, могут ли они иметь текст между своими детьми?

1 ответ

Решение

Нет, mixed не наследуется дочерними элементами.

Учитывая это XSD:

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="root">
    <xs:complexType mixed="true">
      <xs:sequence>
        <xs:element name="child" minOccurs="0" maxOccurs="unbounded">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="grandchild" minOccurs="0" maxOccurs="unbounded">
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

Этот экземпляр XML-документа:

<root>
  text1
  <child>
    text2
    <grandchild/>
  </child>
</root>

Будет недействительным, потому что mixed модель содержимого root не передается в контентную модель child,

Проверяющий парсер выдаст ошибку, такую ​​как:

Элемент 'child' не может иметь символ [children], потому что тип содержимого типа только для элемента.

См. Также аналогичный, но другой вопрос. Смешивается ли наследование при расширении complexType?

Другие вопросы по тегам