Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Структура документа XML. Верный документ




Любой XML-документ состоит из следующих частей:

 Необязательный пролог.

 Тело документа.

 Необязательный эпилог, следующего за деревом элементов.

У хорошо оформленного документа все, что находится после пролога, обязательно должно содержаться в корневом элементе (root element). Такое требование возникло потому, что один документ XML можно вложить в другой. При этом корневой элемент вложенного документа станет просто одним из элементов документа, в который он вложен. Такое вложение не нарушит структуру документа.

Имя корневого элемента считается именем всего документа и указывается во второй части пролога — объявлении типа документа (Document Туре Declaration) — после слова DОСТУРЕ. В ней после слова DOCTYPE И имени документа, в квадратных скобках должно идти определение типа документа — DTD (Document Туре Definition):

<!DOCTYPE notebook [ Сюда заносится описание DTD ]>

Очень часто определение DTD составляется сразу для нескольких документов XML. В таком случае его удобно записать отдельно от документа. Если определение DTD отделено от документа, то во второй части пролога вместо квадратных скобок записывается одно из слов SYSTEM ИЛИ PUBLIC. За словом SYSTEM идет адрес в форме UR1 файла с определением DTD, а за словом PUBLIC, кроме того, можно записать дополнительную информацию. Определение DTD дает возможность убедиться в верности документа.

<?xml version="1.0" encoding="ASCII"?>

<notebook>

<person>

<name first="Иван" second="Петрович" surname="Сидоров" />

<birthday>25.03.1977</birthday>

<address>

<street>Садовая, 23, кв. 15</street>

<city>Санкт-Петербург</city>

<zip>192345</zip>

</address>

</person>

</notebook>

Для описания адресной книжки необходимы открывающие теги <notebook>, <person>, <name>, <address>, < street > и соответствующие им закрывающие теги, помеченные наклонной чертой. Теперь необходимо дать им объявление. В объявлении указываются только самые общие признаки логической взаимосвязи элементов и их тип. Документ, выдерживающий такую взаимосвязь, будет верным документом. Программа, анализирующая документ, сможет проверить правильность его разметки, сверив ее с объявлениями тегов.

Вот как может выглядеть объявление тегов:

- элемент <notebook> может содержать в себе только нуль или больше элементов <person> и больше ничего;

- элемент <person> содержит ровно один элемент <name>, нуль или несколько элементов <address>, а также нуль или один элемент <phone-list>;

элемент <name> имеет не более чем по одному элементу <first>, <second> и <surname>, содержимое которых — строки символов;

- элемент <address> содержит по одному элементу <street>, <city> и <zip>;

- элементы <street> и <city> содержат по одной текстовой строке;

- элемент <zip> содержит одно целое число;

Это словесное описание, называемое схемой документа XML, формализуется несколькими способами. Наиболее распространены два способа: можно сделать определение DTD (Document Type Definition), пришедшее в XML из SGML, или описать схему на языке XSD (XML Schema Definition Language).

Прочитав формализованное описание и узнав из него схему документа, программа-анализатор может проверить соответствие каждого документа его схеме и сделать вывод, верен этот документ или нет.

 

Ссылки на сущности, секция CDATA. Комментарии, атрибуты, имена

Ссылки на сущности (entity references), начинающиеся с амперсанда и заканчивающиеся точкой с запятой, — это указание программе-анализатору подставить вместо них заранее определенную строку символов — сущность. Например, можно записать ссылку на сущность &author;. Программа-анализатор подставит вместо нее фамилию автора. Сущности задаются в определении типа документа (Document Type Definition).

Если текст содержит много знаков "больше", "меньше" и амперсандов, например, требуется весь вложенный элемент понимать как простую строку символов, то удобнее организовать так называемую секцию CDATA.

Секция CDATA (character data) начинается со строки <! [CDATA[. Дальше записывается все то, что следует считать не разметкой, а простой строкой символов. Секция завершается двумя закрывающими квадратными скобками и знаком "больше".

<![CDATA[<surname>Сидорова</surname>]]>

Все знаки "больше", "меньше" и амперсанды, расположенные в секции CDATA, понимаются как обычные символы, не определяющие никакой разметки.

Секции CDATA можно создать в содержимом любого элемента XML. Внутри секции CDATA нельзя создать новую секцию, секции CDATA нельзя вкладывать друг в друга.

<progcode>

<![CDATA[if (х < MAX_VALUE && х > MIN_VALUE) procl(х);]]> </progcode>

Программа-анализатор не разбивает секцию CDATA на элементы, а считает ее просто набором символов, которые надо передать без изменений на выход программы.

Комментарии

Если надо сделать какой-то фрагмент документа XML вообще "невидимым" для программы-анализатора, то его можно оформить как комментарий, записав перед ним символы <!--, а после него — символы --> с двумя дефисами подряд. Например:

<!-- Это комментарий -->

Программа-анализатор пропустит всю эту конструкцию, даже не "заглянув" в нее.

Такой синтаксис комментария накладывает на него два ограничения:

- в комментарии нельзя записывать два дефиса подряд;

- комментарий нельзя завершить дефисом.

У открывающих тегов XML могут быть атрибуты, состоящие из имени и значения, связанных знаком равенства. Например, имя, отчество и фамилию можно записать как атрибуты first, second и surname тега <name>:

<name first="Иван" second="Петрович" surname="Сидоров" />

В отличие от языка HTML, в языке XML значения атрибутов обязательно надо заключать в кавычки или в апострофы.

Атрибуты удобны для описания простых значений. Элемент <name> с атрибутами пустой, у него нет содержимого, следовательно, не нужен закрывающий тег. Поэтому тег <name> с атрибутами завершается символами "/>".

Атрибуты открывающего тега удобны и для указания типа элемента. Например, мы не уточняем, в городе живет наш родственник, в поселке или в деревне. Можно ввести в открывающий тег <city> атрибут type, принимающий одно из значений город, поселок, деревня. Например:

<city type="ropoд">Москва</city>

Значения атрибутов можно записывать не только латинскими, но и русскими буквами. Спецификация XML допускает для записи значений атрибутов и содержимого элементов практически все символы Unicode.

Имена

Правила записи имен довольно просты и заключаются в следующем:

 имена элементов и атрибутов могут содержать только буквы, входящие в секцию букв кодировки Unicode, арабские цифры, дефисы, знаки подчеркивания, точки и двоеточия;

 имя может начинаться с буквы, знака подчеркивания или двоеточия;

 имя не может начинаться со строки xml в любом регистре, поскольку такие имена зарезервированы для самой спецификации XML.

С введением понятия пространства имен двоеточие получило особое значение. Теперь оно используется только для отделения префикса от локального имени.

В имени не может быть пробелов. Запись <my cool element> неверна!

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

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...