Главная » Java, Web, XML » Пример: схема адресной книги

0

В листинге 1.4 записана схема документа, приведенного в листинге 1.2

; Лис I ин1 1,4. С         мен на XML                                             

<?xml version=" 1.0" ?>

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

<xsd:element name="notebook" type="notebookTVpe" />

<xsd:complexType name="notebookType">

<xsd:element name= "person" type="personType" min0ccurs="0" maxOccurs="unbounded" />

</xsd:complexType>

<xsd: complexType name="personType"> <xsd:sequence>

<xsd: element name="name">

<xsd:complexType>

<xsd: attribute name="first"   type="xsd: string"

use="cptional" />

<xsd: attribute name=" second" type="xsd: string"

?use="optio:nal" />

<xsd:attribute name="surname"    type="xsd:string" use="required" /> </xsd:complexType>

</xsd:element>

<xsd:element name="birthday" type="ruDate" min0ccurs="0" />

<xsd:element name="address" type="addressType" minOccurs="0" maxOccurs="unbounded" />

<xsd:element name="phone-list" type="phone-listType" minOccurs="0" />

</xsd:sequence» </xsd:complexType>

<xsc^:ccnplexType name=" adobes sType" > <xsd: sequencer

<xsd:element name="street" type="xsd:string" />

<xsd:element name="city" type="cityType" />

<xsd:element name="zip" t^e="xsd:positiveInteger" />

</xsd:sequence» </xsd:complexType»

<xsd: complexType name=’ cityType’ >

<xsd:simpleContent»

<xsd:attribute name=’type’ type=’placeType’ default=’город’ /> </xsd:extension» </xsd:simpleContent»

</xsd:complexType»

<xsd:simpleType name="placeType">

<xsd:restriction base = "xsd:string">

/>

/> />

</xsd:restriction> </xsd:simpleType>

<xsd: complexType name="phone-listType">

<xsd:element name="work-phone" type="xsd:string" minOccurs="0" maxOccurs="unbounded" />

<xsd:element name="home-phone" type="xsd:string"

/>

</xsd:complexType>

<xsd:simpleType name="ruDate">

<xsd:restriction base="xsd:string">

<xsd:pattern value=" [0-9] (2|.[0-9] {2} . [0-9] {4}" /> </xsd:restriction>

</xsd:simpleType> </xsd:schema>

Листинг 1.4, как обычный документ XML, начинается с пролога, показывающего версию XML и определяющего стандартное пространство имен схемы XML с идентификатором http://www.w3^rg/2001/XMLSchema. Этому идентификатору дан префикс xsd." Конечно, префикс может быть другим, часто пишут префикс xs.

Все описание схемы нашей адресной книжки заключено в одной третьей строке, в которой указано, что адресная книга состоит из одного элемента с именем notebook, имеющего сложный тип notebookType. Этот элемент должен появиться в документе ровно один раз. Остаток листинга 1.4 посвящен описанию типа этого элемента и других типов.

Описание сложного типа notebookType несложно (простите за каламбур). Оно занимает три строки листинга, не считая открывающего и закрывающего тега, и просто говорит о том, что данный тип составляют несколько

элементов person типа personType.

Описание типа personType немногим сложнее. Оно говорит, что этот тип составляют четыре элемента name, birthday, address И phone-list. Для элемента name сразу же определены необязательные атрибуты first и second простого типа string, определенного в пространстве имен xsd. Тип обязательного атрибута surname — тоже string.

Далее в листинге 1.4 определяются оставшиеся типы addressType, p’none- listType и ruDate. Необходимость определения простого типа ruDate возникает потому, что встроенный в схему XML тип date предписывает записывать дату в виде 2003-02-22, а в России принят формат 22.02.2003. Тип ruDate определяется как сужение (restriction) типа string с помощью шаблона. Шаблон (pattern) для записи даты в виде ДД.ММ.ПТГ задается регулярным выражением [8].

Литература:

Хабибуллин И. Ш. Разработка Web-служб средствами Java. — СПб.: БХВ-Петербург, 2003. — 400 с: ил.

По теме:

  • Комментарии