Определение XML элементов со смешанным содержимым

Смешанный составной тип XML элементов может содержать атрибуты, элементы и текст.

XML элемент "letter", который содержит как текст, так и другие элементы:


<letter>
   Уважаемый господин <name>Джон Смит</name>.
   Ваш заказ <orderid>1032</orderid>
   будет выполнен <shipdate>2001-07-13</shipdate>.
</letter>

Следующая XML схема декларирует элемент "letter":


<xs:element name="letter">
   <xs:complexType mixed="true">
      <xs:sequence>
         <xs:element name="name" type="xs:string"/>
         <xs:element name="orderid" type="xs:positiveInteger"/>
         <xs:element name="shipdate" type="xs:date"/>
      </xs:sequence>
   </xs:complexType>
</xs:element>

Примечание: Чтобы сделать доступными символьные данные в дочерних элементах "letter", необходимо атрибут mixed установить в значение "true". Тег <xs:sequence> означает, что декларированные элементы (name, orderid и shipdate) должны появляться в таком же порядке внутри элемента "letter".

Также можно присвоить имя элементу complexType, а в элементе "letter" определить атрибут type с этим именем (в этом случае один и тот же составной тип могут использовать несколько элементов):


<xs:element name="letter" type="lettertype"/>
<xs:complexType name="lettertype" mixed="true">
   <xs:sequence>
      <xs:element name="name" type="xs:string"/>
      <xs:element name="orderid" type="xs:positiveInteger"/>
      <xs:element name="shipdate" type="xs:date"/>
   </xs:sequence>
</xs:complexType>