Элемент Документ
Второй основной частью XML-документа является единый элемент Документ, или корневой элемент, который в свою очередь содержит дополнительные элементы.
В XML-документе элементы определяют его логическую структуру и несут в себе информацию, содержащуюся в документе (в нашем примере это информация о книгах, такая как название, автор, цена). Типовой элемент состоит из начального тега, содержимого элемента и конечного тега. Содержимым элемента могут быть символьные данные, другие (вложенные) элементы, либо сочетание данных и вложенных элементов.
В рассматриваемом примере элемент Документ – INVENTORY. Его начальный тег – <INVENTORY>, конечный тег – </INVENTORY>, а содержимое – восемь вложенных элементов BOOK. В свою очередь, каждый элемент BOOK содержит ряд вложенных элементов
Каждый из элементов, вложенных в элемент BOOK, например, элемент TITLE, содержит только символьные данные.
Некоторые базовые правила xml
Создаваемый документ должен соответствовать т минимальному набору правил, обеспечивающих возможность обработки документа браузером или другой программой:
Документ должен иметь только один элемент верхнего уровня (элемент Документ или корневой элемент). Все другие элементы должны быть вложены в элемент верхнего уровня.
Элементы должны быть вложены упорядоченным образом. То есть, если элемент начинается внутри другого элемента, он должен и заканчиваться внутри этого элемента.
Каждый элемент должен иметь начальный и конечный тег. В отличие от HTML, в XML не разрешается опускать конечный тег – даже в том случае, когда браузер в состоянии определить, где заканчивается элемент.
Имя типа элемента в начальном теге должно в точности соответствовать имени в соответствующем конечном теге.
Имена типов элементов чувствительны к регистру, в котором они набраны. В действительности весь текст внутри XML-разметки является чувствительным к регистру. Например, следующее описание элемента является неправильным, поскольку имя типа элемента в начальном теге не соответствует имени типа в конечном теге:
<TITLE>Leaves of grass</Title> <!-- некорректный элемент -->
Отображение XML-документа
Вы можете открыть XML-документ непосредственно через браузер. Если XML-документ не содержит связи с таблицей стилей, браузер помечает различные составные части документа различным цветом, чтобы облегчить их распознавание, а также представляет элемент Документ в виде иерархического дерева с возможностью свертывания и развертывания структуры и просмотра с меньшей или большей степенью детализации. Если же XML-документ имеет связь с таблицей стиля, браузер отобразит только символьные данные из элементов документа, отформатировав их в соответствии с правилами, установленными в таблице стиля.
Открыв файл Inventory.xml, в браузере вы увидите структуру документа (рис. 2), нажав на символ знака минус (-) слева от начального тега, чтобы свернуть элемент, либо на знаке плюс (+) рядом со свернутым элементом, можно детализировать структуру документа (рис. 3).
Рисунок 2 – Отображение XML-документ в браузере
Рисунок 3 – Изменение степени детализации XML-документа
Отображение XML-документ с использованием таблицы каскадных стилей
Для отображения XML-документа с помощью каскадной таблицы стилей ее нужно создать. В текстовом редакторе создадим CSS-таблицу, что бы она символьные данные элементов XML-документа следующим образом
Отображать каждый элемент BOOK с отступом сверху в 12 пт (margin-top:12pt) с переводом строки сверху и снизу (display:block), используя размер шрифта 10 пт (font-size:10pt).
Отображать каждый элемент TITLE курсивом (font-style:italic).
Отображать каждый элемент AUTHOR полужирным (font-weight:bold).
Созданную CSS-таблицу сохраним в файл с именем Inventory01.css.
Листинг файла Inventory01.css
/* File Name: Inventory01.css */
BOOK
{display:block;
margin-top:12pt;
font-size:10pt}
TITLE
{font-style:italic}
AUTHOR
{font-weight:bold}
Далее отредактируем наш файл Inventory.xml, добавим в конце пролога документа (непосредственно над элементом INVENTORY) следующую инструкцию по обработке:
<?xml-stylesheet type="text/css" href="Inventory01.css"?>
Эта инструкция по обработке устанавливает связь созданной CSS-таблицы и XML-документа. В результате при открытии документа браузер отобразит содержимое документа в соответствии с инструкциями, записанными в таблице стилей.
Чтобы отразить новое имя файла, которое вы собираетесь присвоить, измените комментарий в начале документа с
<!-- File Name: Inventory.xml -->
на
<!-- File Name: Inventory01.xml -->
Листинг файла Inventory01.xml
<?xml version="1.0"?>
<!-- File Name: Inventory01.xml -->
<?xml-stylesheet type="text/css" href="Inventory01.css"?>
<INVENTORY>
<BOOK>
<TITLE>The Adventures of Huckleberry Finn</TITLE>
<AUTHOR>Mark Twain</AUTHOR>
<BINDING>mass market paperback</BINDING>
<PAGES>298</PAGES>
<PRICE>$5.49</PRICE>
</BOOK>
<BOOK>
<TITLE>Leaves of Grass</TITLE>
<AUTHOR>Walt Whitman</AUTHOR>
<BINDING>hardcover</BINDING>
<PAGES>462</PAGES>
<PRICE>$7.75</PRICE>
</BOOK>
<BOOK>
<TITLE>The Legend of Sleepy Hollow</TITLE>
<AUTHOR>Washington Irving</AUTHOR>
<BINDING>mass market paperback</BINDING>
<PAGES>98</PAGES>
<PRICE>$2.95</PRICE>
</BOOK>
<BOOK>
<TITLE>The Marble Faun</TITLE>
<AUTHOR>Nathaniel Hawthorne</AUTHOR>
<BINDING>trade paperback</BINDING>
<PAGES>473</PAGES>
<PRICE>$10.95</PRICE>
</BOOK>
<BOOK>
<TITLE>Moby-Dick</TITLE>
<AUTHOR>Herman Melville</AUTHOR>
<BINDING>hardcover</BINDING>
<PAGES>724</PAGES>
<PRICE>$9.95</PRICE>
</BOOK>
</INVENTORY>
В браузере xml-документ отобразится в виде, показаном на рис. 4.
Рисунок 4 – отображение XML-документа с помощью таблицы CSS
Теперь для изменения вида отображения XML-документа достаточно вносить изменения в файл связанной таблицы стилей или добавлять новую CSS-таблицу.
Например, мы хотим отформатировать наш документ следующим образом:
Отображать каждый элемент BOOK с отступом сверху в 12 пт (margin-top:12pt) и с переводом строки сверху и снизу (display:block), используя размер шрифта 10 пт (font-size:10pt).
Отображать каждый из элементов TITLE, AUTHOR, BINDING и PRICE в отдельной строке (display:block).
Отображать элемент TITLE шрифтом с размером 12 пт (font-size:12pt), полужирным (font-weight:bold), курсивом (font-style:italic). (Обратите внимание, что установка для элемента TITLE размера шрифта 12 пт превалирует над установкой размера 10 пт для родительского элемента BOOK.)
отступ слева для каждого из элементов AUTHOR, BINDING и PRICE на 15 пт (margin-left:15pt).
Отображать элемент AUTHOR полужирным (font-weight:bold).
Не отображать элемент PAGES (display:none).
Созданную CSS-таблицу сохраним в файл с именем Inventory02.css
Листинг Inventory02.css
/* File Name: Inventory02.css */
BOOK
{display:block;
margin-top:12pt;
font-size:10pt}
TITLE
{display:block;
font-size:12pt;
font-weight:bold;
font-style:italic}
AUTHOR
{display:block;
margin-left:15pt;
font-weight:bold}
BINDING
{display:block;
margin-left:15pt}
PAGES
{display:none}
PRICE
{display:block;
margin-left:15pt}
В документ Inventory.xml. добавим в конце пролога документа (над элементом INVENTORY) следующую инструкцию по обработке:
<?xml-stylesheet type="text/css" href="Inventory02.css"?>
Эта инструкция по обработке устанавливает связь между новой CSS-таблицей, созданной вами, и XML-документом. Чтобы отразить новое присвоенное вами имя файла, измените комментарий в начале документа с
<!-- File Name: Inventory.xml -->
на
<!-- File Name: Inventory02.xml -->
Листинг Inventory02.xml.
<?xml version="1.0"?>
<!-- File Name: Inventory02.xml -->
<?xml-stylesheet type="text/css" href="Inventory02.css"?>
<INVENTORY>
<BOOK>
<TITLE>The Adventures of Huckleberry Finn</TITLE>
<AUTHOR>Mark Twain</AUTHOR>
<BINDING>mass market paperback</BINDING>
<PAGES>298</PAGES>
<PRICE>$5.49</PRICE>
</BOOK>
<BOOK>
<TITLE>Leaves of Grass</TITLE>
<AUTHOR>Walt Whitman</AUTHOR>
<BINDING>hardcover</BINDING>
<PAGES>462</PAGES>
<PRICE>$7.75</PRICE>
</BOOK>
<BOOK>
<TITLE>The Legend of Sleepy Hollow</TITLE>
<AUTHOR>Washington Irving</AUTHOR>
<BINDING>mass market paperback</BINDING>
<PAGES>98</PAGES>
<PRICE>$2.95</PRICE>
</BOOK>
<BOOK>
<TITLE>The Marble Faun</TITLE>
<AUTHOR>Nathaniel Hawthorne</AUTHOR>
<BINDING>trade paperback</BINDING>
<PAGES>473</PAGES>
<PRICE>$10.95</PRICE>
</BOOK>
<BOOK>
<TITLE>Moby-Dick</TITLE>
<AUTHOR>Herman Melville</AUTHOR>
<BINDING>hardcover</BINDING>
<PAGES>724</PAGES>
<PRICE>$9.95</PRICE>
</BOOK>
</INVENTORY>
Результат вывода документа Inventory02.xml показан на рисунке 5.
Рисунок 5 – Вывод Inventory02.xml
