XSD Смешанное содержимое
Смешанные сложные типы могут содержать атрибуты, элементы и текст.
Сложные типы со смешанным содержимым
XML-элемент "letter" содержит текст, а также другие элементы:
<letter>
Уважаемый г-н <name>John Smith</name>.
Ваш заказ <orderid>1032</orderid>
будет отправлен <shipdate>2001-07-13</shipdate>.
</letter>
Уважаемый г-н <name>John Smith</name>.
Ваш заказ <orderid>1032</orderid>
будет отправлен <shipdate>2001-07-13</shipdate>.
</letter>
Следующая схема объявляет этот элемент "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>
<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 и позволить атрибуту type элемента "letter" ссылаться на это имя complexType (таким образом, несколько элементов могут ссылаться на один и тот же сложный тип):
<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>
<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>