Описание сложных элементов

При описании документов, имеющих сложную иерархическую структуру, можно сначала определить все элементы и атрибуты, а затем ссылаться на них.

Рассмотрим следующий пример:

<employee>

<firstname>John</firstname>

<lastname>Smith</lastname>

</employee>

Сложный элемент в схеме можно определить следующим образом:

<example><xs:element name="firstname" type="xs:string"/>

<xs:element name="lastname" type="xs:string"/>

 

<xs:element name="employee">

<xs:complexType>

<xs:sequence>

<xs:element ref="firstname"/>

<xs:element ref="lastname"/>

</xs:sequence>

</xs:complexType>

</xs:element>

Другой подход заключается в повторном использовании именованных элементов.

  • Элемент "employee" element может быть объявлен непосредственно по имени:

· <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>

Поскольку дочерние элементы "firstname" и "lastname" окружены индикатором <sequence>, то они должны в документе появляться именно в этой последовательности.

  • Элемент "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>

Пустой сложный элемент не может иметь содержимого, только атрибуты.

С помощью специальных индикаторов можно указывать, как элементы могут использоваться в документах.

Всего используется семь индикаторов:

  • Индикатор порядка (Order):
    • All
    • Choice
    • Sequence
  • Индикатор вхождения (Occurrence):
    • maxOccurs
    • minOccurs
  • Групповые (Group) индикаторы:
    • Group name
    • attributeGroup name

Пример:

<xs:element name="person">

<xs:complexType>

<xs:sequence>

<xs:element name="full_name" type="xs:string"/>

<xs:element name="child_name" type="xs:string" maxOccurs="10"/>

</xs:sequence>

</xs:complexType>

</xs:element>








Дата добавления: 2015-12-29; просмотров: 717;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.008 сек.