Комплексные элементы XSD
- Предыдущая страница Ограничения в XSD
- Следующая страница Пустые элементы XSD
Составной элемент содержит другие элементы и/или атрибуты.
Что такое составной элемент?
Составной элемент指的是包含其他元素及/или атрибутов XML элемент.
Есть四种类型的 составных элементов:
- Пустые элементы
- Элементы, содержащие другие элементы
- Элементы, содержащие только текст
- Элементы, содержащие элементы и текст
Комментарий:Все вышеупомянутые элементы могут содержать атрибуты!
Пример составного элемента
Составной элемент, "product", пуст:
<product pid="1345"/>
Составной элемент, "employee", содержит только другие элементы:
<employee> <firstname>John</firstname> <lastname>Smith</lastname> </employee>
Составной элемент, "food", содержит только текст:
<food type="dessert">Мороженое</food>
Составной элемент, "description", содержит элементы и текст:
<description> Это произошло <date lang="norwegian">03.03.99</date> .... </description>
Как определить составной элемент?
Пожалуйста, посмотрите на этот сложный XML элемент, "employee", который содержит только другие элементы:
<employee> <firstname>John</firstname> <lastname>Smith</lastname> </employee>
В XML Schema у нас есть два способа определить сложный элемент:
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" элемент может использовать атрибут type, который указывает на имя используемого сложного типа:
<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>
- Предыдущая страница Ограничения в XSD
- Следующая страница Пустые элементы XSD