XML - статьи



              

Рассмотрение определения производных сложных типов посредством расширения


При расширении сложных типов получается производный сложный тип, модель содержания которого является расширенным множеством модели содержания его базового типа. Другими словами, к модели содержания базового типа в составе производного типа добавляются дополнительные атрибуты или элементы. При этом добавленные элементы трактуются так, как будто бы они были последовательно присоединены к модели содержания базового типа (конструкция sequence). Этот подход удобен для извлечения общих свойств из набора сложных типов с последующим использованием этих общностей посредством расширения определения базового типа.

В приведенной ниже схеме используется расширение сложного типа для получения из сложного типа, характеризующего подписчика списка рассылки XML-DEV, типа, описывающего автора. Таким образом, экземпляр типа DareObasanjo необязательно является допустимым экземпляром типа XML-Deviant.

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

<!-- базовый тип -->

<xs:complexType name="XML-Deviant"> <xs:sequence> <xs:element name="numPosts" type="xs:integer" minOccurs="0" maxOccurs="1" /> <xs:element name="email" type="xs:string" /> </xs:sequence> <xs:attribute name="firstSubscribed" type="xs:date" use="optional" /> <xs:attribute name="lastPostDate" type="xs:date" use="optional" /> </xs:complexType>

<!-- производный тип --> <xs:complexType name="DareObasanjo"> <xs:complexContent> <xs:extension base="XML-Deviant"> <xs:sequence> <xs:element name="signature" type="xs:string" /> </xs:sequence> <xs:attribute name="mailReader" type="xs:string" fixed="Microsoft Outlook" /> </xs:extension> </xs:complexContent> </xs:complexType>

</xs:schema>




Содержание  Назад  Вперед