В этой главе вы получите представление о процессе создания и отображения XML-документа в Web-браузере. Сначала вы создадите простой XML-документ, исследуете его структуру и познакомитесь с основными правилами создания корректно сформированного XML-документа. Затем вы узнаете, как отобразить этот документ в браузере Microsoft Internet Explorer 5 путем создания и присоединения простой стилевой таблицы, которая сообщает браузеру, как форматировать элементы в документе.
Данная глава содержит краткий обзор тем, которые будут обсуждены в книге.
Создание XML-документа
Описание XML-документа представляет собой простой текст, который можно набрать в любом текстовом редакторе, например, редактор Notepad, входящем в состав Microsoft Windows. Еще лучше воспользоваться редактором, в котором предусмотрена возможность анализа исходных кодов, например, текстовым редактором Microsoft Visual Studio, рассчитанным на работу с Microsoft Visual C++, Microsoft Visual InterDev, Microsoft Visual J++ и другими приложениями Visual Studio.
Создайте XML-документ
При желании можно опустить некоторые элементы типа BOOK. Вам не обязательно
набиратьвсе восемь - достаточно будет трех или четырех. (Элемент BOOK включает
в себя теги
Анатомия XML-документа
XML- документ подобный что набранному вами, состоит из двух основных частей: пролога и элемента Документ (его также называют корневым элементом),как показано на рисунке на следующей странице.
Пролог
В данном примере документа пролог состоит из трех строк:
<?xml version="1.0"?>
<!-- Имя файла: Inventory.xml -->
Первая строка представляет собой объявление XML, указывающее на то, что это XML-документ и содержащее номер версии. (На момент создания книги последняя версия XML имела номер 1.0.) Объявление XML не является обязательным, хотя спецификация требует его включения. Если вы включаете XML-объявление, оно должно находиться в начале документа.
Вторая строка пролога состоит из пробела. С целью улучшения внешнего вида документа вы можете вставлять любое количество пустых строк между элементами пролога. При обработке они будут игнорироваться.
Третья строка пролога представляет собой комментарий. Добавление комментариев в XML-документ не обязательно, но позволяет сделать его более понятным. Комментарий начинается с символов <!-- и заканчивается символами -->. Между этими двумя группами символов вы можете поместить любой текст (за исключением --); XML-процессор проигнорирует его.
Примечание. Все составляющие пролога, упомянутые в этом разделе, будут подробно описаны далее в последующих главах.
Пролог может также содержать следующие необязательные компоненты:
Примечание. XML-процессор — это программный модуль, считывающий XML-документ и обеспечивающий доступ к его содержимому. Он также предоставляет этот доступ другим программным модулям, или приложениям, которые манипулируют и отображают содержимое документа. Если вы отображаете XML-документ в Internet Explorer 5, браузер включает в себя как XML-процессор, так и приложение. (Если для отображения XML-документа вы используете HTML и сценарий (скрипт-код), то при этом самостоятельно создаете часть приложения.) Обратите внимание, что термин приложение в данном случае отличен от термина, применяемого для обозначения XML-приложения (или словаря) как целевого набора элементов и структуры документа, которые используются для описания документов определенного типа (см. главу 1).
Элемент Документ
Второй основной частью XML-документа является единый элемент Документ, или корневой элемент, который в свою очередь содержит дополнительные элементы.
В XML-документе элементы определяют его логическую структуру и несут в себе информацию, содержащуюся в документе (в нашем примере это информация о книгах, такая как название, автор, цена). Типовой элемент состоит из начального тега, содержимого элемента и конечного тега. Содержимым элемента могут быть символьные данные, другие (вложенные) элементы, либо сочетание данных и вложенных элементов.
В рассматриваемом примере элемент Документ - INVENTORY. Его начальный тег - <INVENTORY>, конечный тег - </INVENTORY>, а содержимое - восемь вложенных элементов BOOK.
Примечание. Текст в XML-документе представляет собой перемежающиеся символьные данные и данные, относящиеся к разметке. Разметка — это текст, ограниченный разделителями и описывающий структуру документа: начальный и конечный теги элемента, теги пустого элемента, объявления типа документа, инструкции по обработке, ограничители раздела CDATA, символьные ссылки, ссылки на примитивы (entity). (Об элементах разметки вы узнаете в последующих главах.) Остальной текст представляет собой символьные данные — реальное информационное содержимое документа (в нашем примере это названия, фамилии авторов, цена и другая информация о книге).
Примечание. Элемент Документ в XML-документе похож на элемент BODY на HTML-странице, за исключением того, что вы можете присвоить ему любое допустимое имя.
В свою очередь, каждый элемент BOOK содержит ряд вложенных элементов, как показано на следующем рисунке.
Примечание. Имя, которое содержится в начальном и конечном теге, есть тип элемента.
Каждый из элементов, вложенных в элемент BOOK, например, элемент TITLE, содержит только символьные данные, как показано на следующем рисунке.
Во второй части вы узнаете о дополнительных элементах XML-документа и о включении атрибутов в начальный тег элемента.
Некоторые базовые правила XML
Ниже приведено несколько основных правил создания форматированного XML-документа. Форматированный документ соответствует минимальному набору правил, обеспечивающих возможность обработки документа браузером или другой программой. Документ, составленный вами ранее в этой главе (Листинг 2-1), является примером форматированного XML-документа, удовлетворяющего этим правилам.
<TITLE>Leaves of grass<7Title> <!-- некорректный элемент -->
Ссылка. Во второй части вы найдете подробные инструкции по написанию не только корректно сформированных (well-formed), но и валидных (valid) XML-документов, для которых предусмотрен более строгий набор требований.
Отображение ХМL-документа
Вы можете открыть XML-документ непосредственно через Internet Explorer 5, точно так же, как вы бы открыли HTML Web-страницу.
Если XML-документ не содержит связи с таблицей стилей, Internet Explorer 5 помечает различные составные части документа различным цветом, чтобы облегчить их распознавание, а также представляет элемент Документ в виде иерархического дерева с возможностью свертывания и развертывания структуры и просмотра с меньшей или большей степенью детализации.
Если же XML-документ имеет связь с таблицей стиля, Internet Explorer 5 отобразит только символьные данные из элементов документа, отформатировав их в соответствии с правилами, установленными в таблице стиля. Вы можете использовать либо таблицу каскадных стилей (CSS-таб-лицу, аналогичную той, которая используется для HTML-страниц), либо XSL-таблицу стилей (Extensible Stylesheet Language), которая является более мощным инструментом и строится в соответствии с синтаксисом, принятым для XML. Такие таблицы могут использоваться исключительно для XML-документов.
Отобразите XML-документ без таблицы стиля
1. В Windows Explorer (Проводник) или в окне папки дважды щелкните на имени файла Inventory.xml, который вы сохранили в предыдущем упражнении. Internet Explorer 5 отобразит документ, как показано на верхнем рисунке на следующей странице.
2. Попробуйте изменить степень детализации представления элементов документа. Щелкните на символе знака минус (-) слева от начального тега, чтобы свернуть элемент, либо на знаке плюс (+) рядом со свернутым элементом, чтобы развернуть его. Например, щелкнув на знаке минус (-) рядом с элементом INVENTORY, вы получите то же, что представлено на нижнем рисунке на следующей странице.

Обнаружение ошибок XML в Internet Explorer 5
Прежде чем Internet Explorer 5 отобразит ваш XML-документ, его встроенный синтаксический XML-анализатор (parser) просмотрит содержимое документа. Если он обнаружит ошибку, Internet Explorer 5 отобразит страницу с сообщением об ошибке, не предпринимая попытки отобразить документ. Internet Explorer 5 отобразит страницу с сообщением об ошибке независимо от того, связан ли XML-документ с таблицей стиля.
Примечание. Синтаксический XML-анализатор является составной частью XML-процессора, который сканирует XML-документ, анализирует его структуру и обнаруживает синтаксические ошибки.
В следующем упражнении вы исследуете возможности Internet Explorer 5 по обнаружению ошибок, искусственно введя ошибку в документ Inventory.xmi.
- В вашем текстовом редакторе откройте документ Inventory.xml, созданный вами в предыдущем упражнении. Измените первый элемент TITLE с
<TITLE>The Adventures of Huckleberry Finn<TITLE>
на
<TITLE>The Adventures of Huckleberry Finn</Title>
- Сохраните внесенные изменения.
- В Windows Explorer (Проводник), или в окне папки, дважды щелкните на имени файла документа Inventory.xml. Вместо того, чтобы отобразить XML-документ, Internet Explorer 5 теперь отобразит следующую страницу с сообщением об ошибке, как показано на рисунке на следующей странице.
- Поскольку вы еще будете работать с Inventory.xml в этой главе, вам теперь нужно восстановить конечный тег для первого элемента TITLE, вернув ему первоначальный вид (/TITLE), а затем повторно сохранить документ.
Примечание. Когда вы открываете XML-документ непосредственно в Internet Explorer 5, транслятор проверяет лишь соответствие документа формальным правилам построения (корректность формы) и в случае обнаружения несоответствия выдает сообщение об ошибке. Полное соответствие правилам для документа (валидность) не проверяется.
Даже в случае, если вы не связываете таблицу стилей с XML-докумен-том, Internet Explorer 5 использует для отображения документа имеющуюся по умолчанию таблицу стилей; именно поэтому в описании ошибки упоминается использование XSL-таблицы стилей («using XSL style sheet»). О XSL-таблицах стиля вы узнаете в главе 10.
Совет. Если вы последовательно выполняете упражнения из данной книги, имейте в виду, что вы можете быстро проверить, является ли документ корректно сформированным, открыв его непосредственно в Internet Explorer 5. (Если вы отображаете XML-документ через HTML-страницу, как описывается в третьей части, XML-документ с ошибкой не будет отображен, но и сообщение об ошибке не появится, если вы не написали для этого соответствующий сценарий (скрипт-код).
Отобразите XML-документ с использованием таблицы каскадных стилей
- Отображать каждый элемент BOOK с отступом сверху в 12 пт (margin-top: 12pt) с переводом строки сверху и снизу (display:block), используя размер шрифта 10 пт (font-size: lOpt).
- Отображать каждый элемент TITLE курсивом (font-style:italic).
- Отображать каждый элемент AUTHOR полужирным (fdnt-weight:bold).
Листинг 2-2
Inventory01 .css
/* Имя файла: InventoryOI .ess */
BOOK
{display:block; margin-top: 12pt; font-size:! Opt}
TITLE {font-style:italic}
AUTHOR {font-weight:bold}
<?xml - stylesheet type="text/css" href="lnventory01 .css"?>
Эта инструкция по обработке устанавливает связь созданной вами CSS-таблицы и XML-документа. В результате при открытии документа в Internet Explorer 5 браузер отобразит содержимое документа в соответствии с инструкциями, записанными в таблице стилей.
<!-- Имя файла: Inventory.xml -->
на
<!-- Имя файла: Inventory01 .xml -->
В Листинге 2-3 представлен весь XML-документ. (Копия этого листинга содержится на CD-ROM в файле Inventory01.xml.)
Листинг 2-3
Inventory01.xml
<?xml version="1.0"?>
<!-- Имя файла: Inventory01.xm -->
<?xml-stylesheet type="text/css" href="lnventory01.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 Wtiitman</AUTHOR>
<BINDING>hardcover</BINDING>
<PAGES>462</PAGES>
<PRICE>$7.75</PRICE>
</BOOK>
<BOOK>
<TITLE>The Legend of Sleepy Hollow<TITLE>
<AUTHOR>Washington lrving</AUTHOR>
<BINDlNG>mass market paperback</BINDING>
<PAGES>98</PAGES>
<PRICE>$2.95</PRICE>
</BOOK>
<BOOK>
<TITLE>The Marble Pinn<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>
<BOOK>
<TITLE>The Portrait of a Lady<TITLE>
<AUTHOR>Henry James</AUTHOR>
<BIND!NG>mass market paperback</BINDING>
<PAGES>256</PAGES>
<PRICE>$4.95</PRICE>
</BOOK>
<BOOK>
<TITLE>The Scarlet Letter</TITLE>
<AUTHOR>Nathaniel Hawthorne</AUTHOR>
<BINDING>trade paperback</BINDING>
<PAGES>253</PAGES>
<PRICE>$4.25</PRICE>
</BOOK>
<BOOK>
<TITLE>The Turn of the Screw<\TITLE>
<AUTHOR>Henry James</AUTHOR>
<BINDING>trade paperback</BINDING>
<PAGES>384</PAGES>
<PRICE>$3.35</PRICE>
</BOOK>
</INVENTORY>
Созданная вами модифицированная таблица стилей сообщает Internet Explorer 5, каким образом форматировать символьные данные элементов.
Листинг 2-4
Inventory02.css
/* Имя файла: 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}
<?xml-stylesheet type="text/css" href="lnventory02.css"?>
Эта инструкция по обработке устанавливает связь между новой CSS-таблицей, созданной вами, и XML-документом.
<!-- Имя файла: Inventory.xml -->
на
<!-- Имя файла: Inventory02.xml -->
В Листинге 2-5 предсгавлен полный XML-документ. (Копия этого листинга содержится на CD-ROM в файле Inventory02.xml.)
Листинг 2-5
Inventory02.xml
<?xml version="1.0"?>
<!-- Имя файла: Inventory02.xml -->
<?xml-stylesheet type="text/css" href="lnventory02.css"?>
<iNVENTORY>
<BOOK>
<TITLE>The Adventures cf Huckleberry Finn</TITLE>
<AUTHOR>Mark Twain<|AUTHOR>
<BINDING>massmarketpaperback</BINDING>
<PAGES>298</PAGES>
<PRICE>$5.49</PRICE>
</BOOK>
<BOOK>
<TITLE>Leaves of Grass<AITLE>
<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 lrving</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>
<BOOK>
<TITLE>The Portrait of a Lady</TITLE>
<AUTHOR>Henry James</AUTHOR>
<BINDING>mass market paperback</BINDING>
<PAGES>256</PAGES>
<PRICE>$4.95</PRICE>
</BOOK>
<BOOK>
<TITLE>The Scarlet Letter</TITLE>
<AUTHOR>Nathaniel Hawthorne</AUTHOR>
<BINDING>trade paperback</BINDING>
<PAGES>253</PAGES>
<PRICE>$4.25</PRICE>
</BOOK>
<BOOK>
<TITLE>The Turn of the Screw</TITLE>
<AUTHOR>Henry James</AUTHOR>
<BINDING>trade paperback</BINDING>
<PAGES>384</PAGES>
<PRICE>$3.35</PRICE>
</BOOK>
</INVENTORY>
Internet Explorer 5 откроет документ Inventory02.xml и отобразит его в соответствии с правилами, установленными в связанной таблице стилей Inventory02.css, как показано на следующем рисунке (здесь представлено лишь четыре книги; осуществив прокрутку вниз, вы увидите остальные книги).
Ссылка. В третьей части вы найдете подробные и исчерпывающие инструкции для отображения XML-документов в Web. Вы познакомитесь с каскадными таблицами стилей, в главе 7.0 XSL-таблицах рассказывается в главе 10. В главах 8 и 9 вы узнаете об альтернативных методах отображения XML-документов в Web.
Последние комментарии