Наследуется ли mix дочерними элементами схемы xsd?

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


person user1711699    schedule 10.01.2014    source источник


Ответы (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.

Проверяющий синтаксический анализатор выдаст следующую ошибку:

Элемент «дочерний» не может иметь символ [дочерние элементы], потому что тип содержимого типа относится только к элементу.

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

person kjhughes    schedule 10.01.2014