Общие
сведения
Если Вы
знакомы с HTML,
изучение XML не
потребует от вас особых
усилий. Хотя XML,
безусловно, сильно
отличается по своим
возможностям и
предназначению от языка
гипертекстовой разметки,
оба эти языка являются
подмножествами SGML,
и, следовательно,
наследуют его базовые
принципы.
Структура
документа
Простейший
XML- документ может
выглядеть так, как это
показано в Примере 1
<?xml version="1.0"?>
<list_of_items>
<item id="1"><first/>Первый</item>
<item id="2">Второй <sub_item>подпункт 1</sub_item></item>
<item id="3">Третий</item>
<item id="4"><last/>Последний</item>
</list_of_items>
Обратите
внимание на то, что этот
документ очень похож на
обычную HTML-страницу.
Также, как и в HTML,
инструкции, заключенные в
угловые скобки называются
тэгами и служат для
разметки основного текста
документа. В XML
существуют открывающие,
закрывающие и пустые тэги
(в HTML понятие
пустого тэга тоже
существует, но
специального его
обозначения не требуется).
Тело
документа XML
состоит из элементов
разметки (markup) и
непосредственно
содержимого документа -
данных (content). XML -
тэги предназначены для
определения элементов
документа, их атрибутов и
других конструкций языка.
Более подробно о типах
применяемой в документах
разметки мы поговорим чуть
позже.
Любой
XML- документ должен
всегда начинаться с
инструкции <?xml?>, внутри
которой также можно
задавать номер версии
языка, номер кодовой
страницы и другие
параметры, необходимые
программе-анализатору в
процессе разбора
документа
В
общем случае XML-
документы должны
удовлетворять следующим
требованиям:
- В
заголовке документа
помещается объявление
XML, в котором
указывается язык
разметки документа,
номер его версии и
дополнительная
информация
- Каждый
открывающий тэг,
определяющий
некоторую область
данных в документе
обязательно должен
иметь своего
закрывающего
"напарника", т.е.,
в отличие от HTML,
нельзя опускать
закрывающие тэги
- В
XML
учитывается регистр
символов
- Все
значения атрибутов,
используемых в
определении тэгов,
должны быть заключены
в кавычки
- Вложенность
тэгов в XML строго
контролируется,
поэтому необходимо
следить за порядком
следования
открывающих и
закрывающих тэгов
- Вся
информация,
располагающаяся между
начальным и конечными
тэгами,
рассматривается в XML
как данные и поэтому
учитываются все
символы
форматирования ( т.е.
пробелы, переводы
строк, табуляции не
игнорируются, как в HTML)
Если
XML- документ не
нарушает приведенные
правила, то он называется
формально-правильным и все
анализаторы,
предназначенные для
разбора XML-
документов, смогут
работать с ним корректно.
Однако
кроме проверки на
формальное соответствие
грамматике языка, в
документе могут
присутствовать средства
контроля над содержанием
документа, за соблюдением
правил, определяющих
необходимые соотношений
между элементами и
формирующих структуру
документа. Например,
следующий текст, являясь
вполне правильным XML-
документом, будет
абсолютно бессмысленным:
<country><title>Russia</title><city><title>Novosibirsk</country></title></city>
Для
того, чтобы обеспечить
проверку корректности XML-
документов, необходимо
использовать анализаторы,
производящие такую
проверку и называемые
верифицирующими.
На
сегодняшний день
существует два способа
контроля правильности XML-
документа: DTD -
определения(Document
Type Definition)
и схемы данных(Semantic
Schema).
Более подробно об
использовании DTD
и схемах мы поговорим в
следующих разделах. В
отличии от SGML,
определение DTD-
правил в XML не
является необходимостью, и
это обстоятельство
позволяет нам создавать
любые XML-
документы, не ломая пока
голову над весьма
непростым синтаксисом DTD.
Содержимое
XML- документа
представляет собой набор
элементов, секций CDATA,
директив анализатора,
комментариев,
спецсимволов, текстовых
данных. Рассмотрим каждый
из них подробней.
Элемент
- это структурная единица XML-
документа. Заключая слово rose в тэги <flower>
</flower>
, мы определяем непустой
элемент, называемый <flower>, содержимым
которого является rose. В общем случае
в качестве содержимого
элементов могут выступать
как просто какой-то текст,
так и другие, вложенные,
элементы документа, секции
CDATA, инструкции по
обработке, комментарии, -
т.е. практически любые
части XML-
документа.
Любой
непустой элемент должен
состоять из начального,
конечного тэгов и данных,
между ними заключенных.
Например, следующие
фрагменты будут являться
элементами:
<flower>rose</flower>
<city>Novosibirsk</city>
,а
эти - нет:
<rose>
<flower>
rose
Набором
всех элементов,
содержащихся в документе,
задается его структура и
определяются все
иерархическое
соотношения. Плоская
модель данных
превращается с
использованием элементов
в сложную иерархическую
систему со множеством
возможных связей между
элементами. Например, в
следующем примере мы
описываем
месторасположение
Новосибирских
университетов (указываем,
что Новосибирский
Университет расположен в
городе Новосибирске,
который, в свою очередь,
находится в России),
используя для этого
вложенность элементов XML
:
<country id="Russia">
<cities-list>
<city>
<title>Новосибирск</title>
<state>Siberia</state>
<universities-list>
<university id="2">
<title>Новосибирский Государственный Технический Университет</title>
<noprivate/>
<address URL="www.nstu.ru"/>
<description>очень хороший институт</description>
</university>
<university id="2">
<title>Новосибирский Государственный Университет</title>
<noprivate/>
<address URL="www.nsu.ru"/>
<description>тоже не плохой</description>
</university>
</universities-list>
</city>
</cities-list>
</country>
Производя
в последствии поиск в этом
документе, программа
клиента будет опираться на
информацию, заложенную в
его структуру - используя
элементы документа. Т.е.
если, например, требуется
найти нужный университет в
нужном городе, используя
приведенный фрагмент
документа, то необходимо
будет просмотреть
содержимое конкретного
элемента <university>, находящегося
внутри конкретного
элемента <city>. Поиск при
этом, естественно, будет
гораздо более эффективен,
чем нахождение нужной
последовательности по
всему документу.
В XML
документе, как правило,
определяется хотя бы один
элемент, называемый
корневым и с него
программы-анализаторы
начинают просмотр
документа. В приведенном
примере этим элементом
является <country>
В
некоторых случаях тэги
могут изменять и уточнять
семантику тех или иных
фрагментов документа, по
разному определяя одну и
ту же информацию и тем
самым предоставляя
приложению-анализатору
этого документа сведения о
контексте использования
описываемых данных.
Например, прочитав
фрагмент <city>Holliwood</city> мы можем
догадаться, что речь в этой
части документа идет о
городе, а вот во фрагменте <restaurant>Holliwood</restaurant> - о
забегаловке.
В
случае, если элемент не
имеет содержимого, т.е. нет
данных, которые он должен
определять, он называется
пустым. Примером пустых
элементов в HTML могут
служить такие тэги HTML,
как <br>, <hr>, <img>;.
Необходимо только помнить,
что начальный и конечные
тэги пустого элемента как
бы объединяется в один, и
надо обязательно ставить
косую черту перед
закрывающей угловой
скобкой (например, <empty/>;)
Комментариями
является любая область
данных, заключенная между
последовательностями
символов <!-- и -->
Комментарии пропускаются
анализатором и поэтому при
разборе структуры
документа в качестве
значащей информации не
рассматриваются.
Если
при определении элементов
необходимо задать
какие-либо параметры,
уточняющие его
характеристики, то имеется
возможность использовать
атрибуты эдлемента.
Атрибут - это пара "название"
= "значение", которую надо
задавать при определении
элемента в начальном тэге.
Пример:
<color RGB="true">#ff08ff</color>
<color RGB="false">white</color>
или
<author id=0>Ivan Petrov</author>
Примером
использования атрибутов в HTML
является описание
элемента <font>:
<font color=”white” name=”Arial”>Black</font>
Для
того, чтобы включить в
документ символ,
используемый для
определения каких-либо
конструкций языка
(например, символ угловой
скобки) и не вызвать при
этом ошибок в процессе
разбора такого документа,
нужно использовать его
специальный символьный
либо числовой
идентификатор. Например, <
, > "
или $(десятичная
форма записи),  (шестнадцатеричная)
и т.д. Строковые
обозначения спецсиволов
могут определяться в
XML документе при
помощи компонентов (entity), о чем мы еще
поговорим немного позже.
Инструкции,
предназначенные для
анализаторов языка,
описываются в XML
документе при помощи
специальных тэгов - <? и ?>;. Программа
клиента использует эти
инструкции для управления
процессом разбора
документа. Наиболее часто
инструкции используются
при определении типа
документа (например, <? Xml
version=”1.0”?>) или создании
пространства имен.
Чтобы
задать область документа,
которую при разборе
анализатор будет
рассматривать как простой
текст, игнорируя любые
инструкции и специальные
символы, но, в отличии от
комментариев, иметь
возможность использовать
их в приложении,
необходимо использовать
тэги <![CDATA] и ]]>. Внутри этого блока
можно помещать любую
информацию, которая может
понадобится программе-
клиенту для выполнения
каких-либо действий (в
область CDATA, можно
помещать, например,
инструкции JavaScript).
Естественно, надо следить
за тем, чтобы в области,
ограниченной этими тэгами
не было
последовательности
символов ]].
Мы
рассмотрели в общих чертах
основные структурные
части XML-
документа, правила
описания элементов XML и
теперь можем создать
синтаксически правильный XML-
документ, содержащий
каким-то образом
структурированные данные.Однако при
этом почти не коснулись
вопросов практического
применения XML. Как
отображать содержимое XML-
документов на Web-
страницах, осуществлять
контроль над
правильностью их
составления; существуют ли
уже сегодня какие-либо
удобные средства для
создания, анализа и
просмотра таких
документов? В следующих
разделах мы попробуем
ответить на эти вопросы.
назад
содержание
вперед
|