Сложный элемент содержит другие элементы и / или атрибутов.
Что такое сложный элемент?
Сложный элемент представляет собой XML-элемент, содержащий другие элементы и / или атрибутов.
Есть четыре вида сложных элементов:
- пустые элементы
- элементы, которые содержат только другие элементы
- элементы, содержащие только текст
- элементы, которые содержат как другие элементы и текст
Note: Каждый из этих элементов может содержать атрибуты , как хорошо!
Примеры сложных элементов
Сложный XML - элемент, "product" , который является пустым:
<product pid="1345"/>
Сложный XML - элемент, "employee" , который содержит только другие элементы:
<employee>
<firstname>John</firstname>
<lastname>Smith</lastname>
</employee>
Сложный XML - элемент, "food" , которая содержит только текст:
<food type="dessert">Ice cream</food>
Сложный XML - элемент, "description" , который содержит как элементы и текст:
<description>
It happened on <date lang="norwegian">03.03.99</date> ....
</description>
Как определить сложный элемент
Посмотрите на этот сложный XML - элемент, "employee" , который содержит только другие элементы:
<employee>
<firstname>John</firstname>
<lastname>Smith</lastname>
</employee>
Мы можем определить сложный элемент в XML-схемы двумя различными способами:
1. "employee" элемент может быть объявлен непосредственно именования элемента, как это:
<xs:element name="employee">
<xs:complexType>
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Если вы используете метод , описанный выше, только "employee" элемент может использовать указанный сложный тип. Обратите внимание , что дочерние элементы, "firstname" и "lastname" , окружены <sequence> индикатор. Это означает, что дочерние элементы должны появляться в том же порядке, как они были объявлены. Вы узнаете больше о показателях в главе XSD индикаторов.
2. "employee" элемент может иметь атрибут типа , который ссылается на имя сложного типа использования:
<xs:element name="employee" type="personinfo"/>
<xs:complexType name="personinfo">
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
</xs:complexType>
Если вы используете метод, описанный выше, некоторые элементы могут относиться к тому же сложного типа, как это:
<xs:element name="employee" type="personinfo"/>
<xs:element name="student" type="personinfo"/>
<xs:element name="member" type="personinfo"/>
<xs:complexType name="personinfo">
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
</xs:complexType>
Вы можете также основать сложный элемент на существующем сложном элементе и добавить некоторые элементы, например:
<xs:element name="employee" type="fullpersoninfo"/>
<xs:complexType name="personinfo">
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="fullpersoninfo">
<xs:complexContent>
<xs:extension base="personinfo">
<xs:sequence>
<xs:element name="address" type="xs:string"/>
<xs:element name="city" type="xs:string"/>
<xs:element name="country" type="xs:string"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>