<?xml version="l.0” encoding=”Windows-1251"?>
<! DOCTYPE notebook SYSTEM "ntb.dtd">
<notebook>
<person>
<name first=''Иван" second="Петрович" surname=”Сидоров"/>
<birthday>25.03.1577</birthday>
<address>
<street>Садовая, 23-15</street>
<city>Урюпинск</city>
<zip>123456</zip>
</address>
<phone-list>
<work-phone>265432l</work-phone>
<work-phone>2654023</work-phone>
<home-phone>3456781</home-phone>
</phone-list>
</person>
<person>
<name first=”Мария” second=”Петровна” surname=”Сидорова” />
<birthday>17.05.1969</birthday>
<address>
<street>Ягодная, 17</street>
<city>Жмеринка</city>
<zip>23456K/zip>
</address>
<phone-list>
<home-phone>2331455<:/home-phone>
</phone-list>
</person>
</notebook>
Атрибуты открывающего тега удобны и для указания типа элемента. Например, мы не уточняем, в городе живет наш родственник, в поселке или деревне. Можно ввести в тег <city> атрибут type, принимающий одно из значений: город, поселок, деревня. Например:
<city type=“город“>Москва</city>
Для описания адресной книжки нам понадобились открывающие теги <notebook>, <person>, <name>, <address>, <street>, <city>, <zip>, <phone-list>, <work-phone>, <home-phone> и соответствующие им закрывающие теги, помеченные наклонной чертой. Теперь необходимо дать их описание. В описании указываются только самые общие признаки логической взаимосвязи элементов и их тип.
|
|
□ Элемент <notebook> может содержать в себе только нуль или больше элементов <person>.
• Элемент <person> содержит ровно один элемент <name>, нуль или несколько элементов <address> и нуль или один элемент <phone-list>.
• Элемент <name> пустой.
• В открывающем теге <name> три атрибута first, second, surname, значения которых — строки СИМВОЛОВ.
• Элемент <address> содержит по одному элементу <street>, <city> и <zip>.
• Элементы <street> и <city> содержат по одной текстовой строке.
• Элемент <zip> содержит одно целое число.
• У открывающего тега <city> есть один необязательный атрибут type, принимающий одно из трех значений город, поселок или деревня. Значение по умолчанию город.
• Необязательный элемент <phone-list> содержит нуль или более элементов <work-phone> и <home-phone>.
• Элементы <work-phone> и <home-phone> содержат по одной строке, состоящей только из цифр.
Это словесное описание, называемое схемой документа XML, формализуется несколькими способами. Наиболее распространены два способа: можно сделать описание DTD, пришедшее в XML из SGML, или описать схему на языке XSD.
Ограниченные средства DTD не позволяют полностью описать структуру документа XML. В частности, описание DTD не указывает точное количество повторений вложенных элементов, оно не задает точный тип тела элемента. Например, в листинге 14.3 из описания DTD не видно, что в элементе <birthday> содержится дата рождения. Эти недостатки DTD привели к появлению других схем описания документов XML. Наиболее развитое описание дает язык XSD. Поэтому в 2001 году консорциум W3C (WWW Consortium) рекомендовал описывать структуру документов XML на языке описания схем XSD. Мы будем называть описание на этом языке просто схемой XML (XML Schema).
|
|
Посмотрим, как создаются схемы XML, но сначала познакомимся еще с одним понятием XML — пространством имен.