Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМК_XML.doc
Скачиваний:
16
Добавлен:
03.05.2019
Размер:
3.94 Mб
Скачать

Тема 1. Простой xml-документ

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

Описание XML-документа представляет собой простой текст, который можно набрать в любом текстовом редакторе, например, редактор Блокнот (Notepad), входящем в состав операционной системы Microsoft Windows. Для создания простого XML-документа нужно выполнить действия, описанные ниже.

  1. Создать новый файл в текстовом редакторе и ввести текст XML-документа, представленного далее в Листинге 1.1. Количество элементов BOOK зависит от количества книг в вашей библиотеке. (Элемент BOOK включает в себя теги <BOOK> и </BOOK> и весь содержащийся между ними текст.)

  2. Сохранить созданный файл, присвоив ему, например, имя Inventory.xml.

<?xml version="1.0"?>

<!-- Имя файла: Inventory.xml -->

<INVENTORY>

<BOOK>

<TITLE>Война и мир</TITLE>

<AUTHOR>Лев Толстой</AUTHOR>

<BINDING>Жёсткая обложка</BINDING>

<PAGES>510</PAGES>

<PRICE>12 000 рублей</PRICE>

</BOOK>

<BOOK>

<TITLE>Преступление и наказание</TITLE>

<AUTHOR>Фёдор Достоевский</AUTHOR>

<BINDING>Мягкая обложка</BINDING>

<PAGES>590</PAGES>

<PRICE>14 000 рублей</PRICE>

</BOOK>

<BOOK>

<TITLE>Королева Марго</TITLE>

<AUTHOR>Александр Дюма</AUTHOR>

<BINDING> Мягкая обложка </BINDING>

<PAGES>410</PAGES>

<PRICE>10 000 рублей</PRICE>

</BOOK>

<BOOK>

<TITLE>Затерянный мир</TITLE>

<AUTHOR>Артур Конан Дойль</AUTHOR>

<BINDING>Жёсткая обложка</BINDING>

<PAGES>350</PAGES>

<PRICE>9 000 рублей</PRICE>

</BOOK>

</INVENTORY>

Листинг 1.1

Созданный XML-документ состоит из двух основных частей: пролога и элемента “Документ” (его также называют корневым элементом), как показано на рисунке.

Рисунок 2. Общая структура XML-документа

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

<?xml version="1.0"?>

<!-- Имя файла: Inventory.xml -->

Первая строка представляет собой объявление XML, указывающее на то, что это XML-документ, и содержащее номер версии XML. Кроме этого, объявление XML может содержать указание на кодировку символов, в которой написан документ. В случае отсутствия указания на кодировку символов, считается, что документ записан в кодировке UTF-8, являющейся кодировкой по умолчанию. Поэтому объявление XML:

<?xml version="1.0"?>

эквивалентно такому:

<?xml version="1.0" encoding="UTF-8"?>

Для этого в системном окне сохранения файла, вызываемом при сохранении созданного в текстовом редакторе “Блокнот” XML-документа, нужно указать соответствующую кодировку.

Для указания другой кириллической кодировки, отличной от кодировки, принятой по умолчанию, первая строка пролога может выглядеть следующим образом:

<?xml version="1.0" encoding="Windows-1251"?>

Объявление XML не является обязательным, хотя спецификация требует его включения. При включении XML-объявления, оно должно находиться в начале документа. Иногда для улучшения внешнего вида документа можно вставлять пустые строки, которые при обработке игнорируются.

Вторая строка пролога представляет собой комментарий. Добавление комментариев в XML-документ не обязательно, но позволяет сделать его более понятным. Комментарий начинается с символов <!-- и заканчивается символами -->. Между этими двумя группами символов вы можете поместить любой текст (за исключением --), который XML-процессор проигнорирует. Внутрь комментария можно вставлять символ левой угловой скобки (<) и знак амперсанда (&). Вот пример правильно записанного комментария:

<!--Здесь вы можете поместить любой текст, за исключением двойного тире. Символы < и & также допустимы! -->

Комментарий можно вставить в любое место XML-документа, но вне описания разметки, например, поместить их в пролог документа:

<?xml version="1.0"?>

<!-- Это комментарий в прологе. -->

<DOCELEMENT>

Это очень простой XML-документ.

</DOCELEMENT>

Можно поместить их вслед за элементом Документ:

<?xml version="1.0"?>

<DOCELEMENT>

Это очень простой XML-документ.

</DOCELEMENT>

<!-- Это комментарий, следующий за элементом Документ. -->.

Можно поместить их внутри содержимого элемента:

<?xml version="1.0"?>

<DOCELEMENT>

<!-- Это комментарий, который является частью содержимого корневого

элемента. -->

Это очень простой XML-документ.

</DOCELEMENT>

Ниже приведен пример неправильной записи комментария, поскольку он помещен внутри разметки:

<?xml version="1.0"?>

<DOCELEMENT <!-- Это НЕПРАВИЛЬНАЯ ЗАПИСЬ комментария! --> >

Это очень простой XML-документ.

</DOCELEMENT>

Тем не менее, комментарий можно помещать внутри определения типа элемента (DTD) - несмотря на то, что DTD является видом разметки - если только при этом комментарий не находится внутри другой разметки, входящей в состав DTD. Подробнее о DTD и правилах размещения комментариев внутри него будет рассказано далее.

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

  • объявление типа документа, определяющее тип и структуру документа. Объявление типа документа должно следовать после XML-объявления;

  • одну или несколько инструкций по обработке, содержащих информацию о порядке проходов при обработке приложения XML-процессором. Инструкция по обработке для связывания таблицы стиля с XML-документом будет рассмотрена позже.

XML-процессор — это программный модуль, считывающий XML-документ и обеспечивающий доступ к его содержимому. Он также предоставляет этот доступ другим программным модулям, или приложениям, которые манипулируют и отображают содержимое документа. При отображении XML-документа в Internet Explorer, браузер включает в себя как XML-процессор, так и приложение. (Если для отображения XML-документа используется HTML и сценарий (скрипт-код), то для этого необходимо создать часть приложения.)

Второй основной частью XML-документа является единый элемент “Документ”, или корневой элемент, который в свою очередь содержит дополнительные элементы.

В XML-документе элементы определяют его логическую структуру и несут в себе информацию, содержащуюся в документе (в нашем примере это информация о книгах, такая как название, автор, цена). Типовой элемент состоит из начального тега, содержимого элемента и конечного тега. Содержимым элемента могут быть символьные данные, другие (вложенные) элементы, либо сочетание данных и вложенных элементов. В рассматриваемом примере элемент Документ - INVENTORY. Его начальный тег - <INVENTORY>, конечный тег - </INVENTORY>, а содержимое - четыре вложенных элементов BOOK.

Текст в XML-документе представляет собой перемежающиеся символьные данные и данные, относящиеся к разметке. Разметка — это текст, ограниченный разделителями и описывающий структуру документа: начальный и конечный теги элемента, теги пустого элемента, объявления типа документа, инструкции по обработке, ограничители раздела CDATA, символьные ссылки, ссылки на примитивы (entity). Остальной текст представляет собой символьные данные — реальное информационное содержимое документа (в нашем примере это названия, фамилии авторов, цена и другая информация о книге).

Элемент Документ в XML-документе похож на элемент BODY на HTML-странице, за исключением того, что ему можно присвоить любое допустимое имя.

В свою очередь, каждый элемент BOOK содержит ряд вложенных элементов, как показано на следующем рисунке.

Рисунок 3. Структура элемента, содержащего вложенные элементы

Имя, которое содержится в начальном и конечном теге, есть тип элемента. Каждый из элементов, вложенных в элемент BOOK, например, элемент TITLE, содержит только символьные данные, как показано на следующем рисунке.

Рисунок 4. Структура вложенного элемента

Ниже приведено несколько основных правил создания форматированного XML-документа. Форматированный документ соответствует минимальному набору правил, обеспечивающих возможность обработки документа браузером или другой программой. Документ, представленный ранее в этой главе (Листинг 1.1), является примером форматированного XML-документа, удовлетворяющего этим правилам.

  • Документ должен иметь только один элемент верхнего уровня (элемент Документ, или корневой элемент). Все другие элементы должны быть вложены в элемент верхнего уровня.

  • Элементы должны быть вложены упорядоченным образом. Если элемент начинается внутри другого элемента, он должен и заканчиваться внутри этого документа.

  • Каждый элемент должен иметь начальный и конечный тег. В отличие от HTML, в XML не разрешается опускать конечный тег - даже в том случае, когда браузер в состоянии определить, где заканчивается элемент.

  • Имя типа элемента в начальном теге должно в точности соответствовать имени в соответствующем конечном теге.

  • Имена типов элементов чувствительны к регистру, в котором они набраны. В действительности весь текст внутри XML-разметки является чувствительным к регистру. Например, следующее описание элемента является неправильным, поскольку имя типа элемента в начальном теге не соответствует имени типа в конечном теге:

<TITLE>Война и мир</Title> <!-- некорректный элемент -->

XML-документ можно открыть непосредственно при помощи браузера Internet Explorer, точно так же, как HTML Web-страницу. Если XML-документ не содержит связи с таблицей стилей, браузер помечает различные составные части документа различным цветом (рисунок 5), чтобы облегчить их распознавание, а также представляет элемент Документ в виде иерархического дерева с возможностью свертывания структуры щелчком левой клавиши мыши на знаке (-) и развертывания структуры щелчком на знаке (+) и просмотра с меньшей или большей степенью детализации.

Рисунок 5. Отображение развёрнутой структуры XML-документа, который не содержит связи с таблицами стилей

Рисунок 6. Отображение свёрнутой структуры XML-документа, представленного на рисунке 5

Если же XML-документ имеет связь с таблицей стиля, браузер отобразит только символьные данные из элементов документа, отформатировав их в соответствии с правилами, установленными в таблице стилей. Можно использовать либо таблицу каскадных стилей (CSS-таблицу, аналогичную той, которая используется для HTML-страниц), либо XSL-таблицу стилей (Extensible Stylesheet Language), которая является более мощным инструментом и строится в соответствии с синтаксисом, принятым для XML. Такие таблицы могут использоваться исключительно для XML-документов. Ниже представлены листинг файла Inventory01.xml, связанного с файлом таблицы стилей Inventory01.css (файлы сохранены в одной папке), и отображение данного файла при помощи браузера (рисунок 7).

<?xml version="1.0"?>

<!-- Имя файла: Inventory01.xml -->

<?xml-stylesheet type="text/css" href="Inventory01.css"?>

<INVENTORY>

<BOOK>

<TITLE>Война и мир</TITLE>

<AUTHOR>Лев Толстой</AUTHOR>

<BINDING>Жёсткая обложка</BINDING>

<PAGES>510</PAGES>

<PRICE>12 000 рублей</PRICE>

</BOOK>

<BOOK>

<TITLE>Преступление и наказание</TITLE>

<AUTHOR>Фёдор Достоевский</AUTHOR>

<BINDING>Мягкая обложка</BINDING>

<PAGES>590</PAGES>

<PRICE>14 000 рублей</PRICE>

</BOOK>

<BOOK>

<TITLE>Королева Марго</TITLE>

<AUTHOR>Александр Дюма</AUTHOR>

<BINDING> Мягкая обложка </BINDING>

<PAGES>410</PAGES>

<PRICE>10 000 рублей</PRICE>

</BOOK>

<BOOK>

<TITLE>Затерянный мир</TITLE>

<AUTHOR>Артур Конан Дойль</AUTHOR>

<BINDING>Жёсткая обложка</BINDING>

<PAGES>350</PAGES>

<PRICE>9 000 рублей</PRICE>

</BOOK>

</INVENTORY>

Листинг 1.2

Таблица стилей, сохранённая в файле Inventory01.css, сообщает браузеру, каким образом форматировать символьные данные элементов.

  • Отображать каждый элемент BOOK с отступом сверху в 12 пт (margin-top: 12pt) с переводом строки сверху и снизу (display: block), используя размер шрифта 10 пт (font-size: 10pt).

  • Отображать каждый элемент TITLE курсивом (font-style: italic).

  • Отображать каждый элемент AUTHOR полужирным (font-weight: bold).

/*Имя файла: Inventory01.css*/

BOOK

{display: block;

margin-top: 12pt;

font-size: 10pt}

TITLE

{font-style: italic}

AUTHOR

{font-weight: bold}

Листинг 1.3

Рисунок 7. Отображение XML-документа, связанного с таблицей стилей

Прежде чем браузер отобразит XML-документ, его встроенный синтаксический XML-анализатор (parser) просмотрит содержимое документа. Если он обнаружит ошибку, браузер отобразит страницу с сообщением об ошибке, не предпринимая попытки отобразить документ. Браузер отобразит страницу с сообщением об ошибке независимо от того, связан ли XML-документ с таблицей стилей. Синтаксический XML-анализатор является составной частью XML-процессора, который сканирует XML-документ, анализирует его структуру и обнаруживает синтаксические ошибки. На рисунке 8 представлено отображение XML-документа, в котором сознательно допущена ошибка (один из конечных тегов записан строчными символами).

Рисунок 8. Отображение XML-документа, в котором допущена ошибка