Создание XML-документа
Поскольку описание
XML-документа представляет собой простой
текст, вы можете создать его, используя
ваш любимый текстовый редактор, например,
редактор Notepad, входящий в состав
Microsoft Windows. Еще лучше
воспользоваться редактором, в котором
предусмотрена возможность анализа
исходных кодов, например, текстовым
редактором Microsoft Visual Studio,
рассчитанным на работу с Microsoft
Visual C++, Microsoft Visual InterDev,
Microsoft Visual J++ и другими
приложениями Visual Studio.
Создайте XML-документ
- Откройте
новый файл в вашем текстовом
редакторе и введите текст XML-документа,
листинг которого представлен ниже.
При желании можно опустить некоторые
элементы типа
BOOK. Вам не обязательно
набирать все восемь – достаточно
будет трех или четырех. (Элемент
BOOK
включает в себя теги <BOOK> и
</BOOK> и весь содержащийся между
ними текст.)
-
Воспользуйтесь командой Save (Сохранить)
текстового редактора, для сохранения
документа на вашем жестком диске,
присвоив ему имя Inventory.xml.
<?xml
version="1.0"?>
<!-- File Name: Inventory.xml -->
<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>
<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>
Листинг
2.1. Inventory.xml
Анатомия XML-документа
XML-документ,
подобный только что набранному вами,
состоит из двух основных частей: пролога
и элемента Документ (его также называют
корневым элементом), как показано на
рисунке 2.1.
Рис. 2.1.
Пролог
В
данном примере документа пролог состоит
из двух строк:
<?xml
version="1.0"?>
<!-- File Name: Inventory.xml -->
Первая строка представляет собой
объявление XML, указывающее на то, что
это XML-документ и содержащее номер
версии. (На момент создания курса
последняя версия XML имела номер 1.0.)
Объявление XML не является обязательным,
хотя спецификация требует его включения.
Если вы включаете XML-объявление, оно
должно находиться в начале документа.
Вторая строка пролога состоит из пробела.
С целью улучшения внешнего вида
документа вы можете вставлять любое
количество пустых строк между элементами
пролога. При обработке они будут
игнорироваться.
Третья строка пролога представляет собой
комментарий. Добавление комментариев в
XML-документ не обязательно, но
позволяет сделать его более понятным.
Комментарий начинается с символов <!-- и
заканчивается символами -->. Между этими
двумя группами символов вы можете
поместить любой текст (за исключением
-->); 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
содержит ряд вложенных элементов, как
показано на рисунке 2.2.
Рис. 2.2.
Примечание.
Имя, которое содержится в начальном
и конечном теге, есть тип элемента.
Каждый из элементов, вложенных в элемент
BOOK,
например, элемент
TITLE, содержит только символьные
данные, как показано на рисунке 2.3.
Рис. 2.3.
Во 2
части вы узнаете о дополнительных
элементах XML-документа и о включении
атрибутов в начальный тег элемента.
Некоторые
базовые правила XML
Ниже
приведено несколько основных правил
создания форматированного XML-документа.
Форматированный документ соответствует
минимальному набору правил,
обеспечивающих возможность обработки
документа браузером или другой
программой. Документ, составленный вами
ранее в этой лекции, является примером
форматированного XML-документа,
удовлетворяющего этим правилам.
-
Документ должен иметь только один
элемент верхнего уровня (элемент
Документ или корневой элемент).
Все другие элементы должны быть
вложены в элемент верхнего уровня.
-
Элементы должны быть вложены
упорядоченным образом. То есть,
если элемент начинается внутри
другого элемента, он должен и
заканчиваться внутри этого элемента.
- Каждый
элемент должен иметь начальный и
конечный тег. В отличие от HTML,
в XML не разрешается опускать
конечный тег – даже в том случае,
когда браузер в состоянии определить,
где заканчивается элемент. (В лекции
3 вы познакомитесь с усеченной
нотацией, которую можно применять
для пустых элементов – т.е.
элементов, не имеющих содержимого.)
- Имя
типа элемента в начальном теге
должно в точности соответствовать
имени в соответствующем конечном
теге.
- Имена
типов элементов чувствительны к
регистру, в котором они набраны.
В действительности весь текст внутри
XML-разметки является чувствительным
к регистру. Например, следующее
описание элемента является
неправильным, поскольку имя типа
элемента в начальном теге не
соответствует имени типа в конечном
теге:
<TITLE>Leaves
of grass</Title> <!--
некорректный элемент -->
Ссылка. Во второй части вы
найдете подробные инструкции по
написанию не только корректно
сформированных (well-formed), но и
валидных (valid) XML-документов, для
которых предусмотрен более строгий
набор требований.
Отображение
XML-документа
Вы
можете открыть XML-документ
непосредственно через Internet Explorer
5, точно так же, как вы бы открыли HTML
Web-страницу.
Если
XML-документ не содержит связи с
таблицей стилей, Internet Explorer 5
помечает различные составные части
документа различным цветом, чтобы
облегчить их распознавание, а также
представляет элемент Документ в виде
иерархического дерева с возможностью
свертывания и развертывания структуры и
просмотра с меньшей или большей степенью
детализации.
Если
же XML-документ имеет связь с таблицей
стиля, Internet Explorer 5 отобразит
только символьные данные из элементов
документа, отформатировав их в
соответствии с правилами, установленными
в таблице стиля. Вы можете использовать
либо таблицу каскадных стилей (CSS-таблицу,
аналогичную той, которая используется
для HTML-страниц), либо XSL-таблицу
стилей (Extensible Stylesheet Language),
которая является более мощным
инструментом и строится в соответствии с
синтаксисом, принятым для XML. Такие
таблицы могут использоваться
исключительно для XML-документов.
Отобразите XML-документ
без таблицы стиля
- В Windows
Explorer (Проводник), или в окне
папки, дважды щелкните на имени
файла Inventory.xml, который вы
сохранили в предыдущем упражнении.
Internet Explorer 5 отобразит
документ, как показано на рисунке
2.4.
Рис. 2.4.
- Попробуйте
изменить степень детализации
представления элементов документа.
Щелкните на символе знака минус (-)
слева от начального тега, чтобы
свернуть элемент, либо на знаке плюс
(+) рядом со свернутым элементом,
чтобы развернуть его. Например,
щелкнув на знаке минус (-) рядом с
элементом
INVENTORY, вы получите то же,
что представлено на рисунке 2.5.
Рис. 2.5.
Обнаружение
ошибок XML в Internet Explorer 5
Прежде чем Internet Explorer 5 отобразит
ваш XML-документ, его встроенный
синтаксический XML-анализатор (parser)
просматривает содержимое документа. Если
он обнаружит ошибку, Internet Explorer 5
отобразит страницу с сообщением об
ошибке, не предпринимая попытки
отобразить документ. Internet Explorer 5
отобразит страницу с сообщением об
ошибке независимо от того, связан ли
XML-документ с таблицей стиля.
Примечание.
Синтаксический XML-анализатор
является составной частью XML-процессора,
который сканирует XML-документ,
анализирует его структуру и
обнаруживает синтаксические ошибки.
В
следующем упражнении вы исследуете
возможности Internet Explorer 5 по
обнаружению ошибок, искусственно введя
ошибку в документ Inventory.xml.
- В вашем
текстовом редакторе откройте
документ 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 теперь отобразит
следующую страницу с сообщением об
ошибке, как показано на рисунке 2.6.
Рис. 2.6.
- Поскольку
вы еще будете работать с
Inventory.xml в этой лекции, вам
теперь нужно восстановить конечный
тег для первого элемента TITLE,
вернув ему первоначальный вид
(/TITLE), а затем повторно сохранить
документ.
Примечание.
Когда вы открываете XML-документ
непосредственно в Internet Explorer
5, транслятор проверяет лишь
соответствие документа формальным
правилам построения (корректность
формы), и в случае обнаружения
несоответствия выдает сообщение об
ошибке. Полное соответствие правилам
для документа (валидность) не
проверяется. Даже в случае, если вы
не связываете таблицу стилей с XML-документом,
Internet Explorer 5 использует для
отображения документа имеющуюся по
умолчанию таблицу стилей; именно
поэтому в описании ошибки
упоминается использование
XSL-таблицы стилей ("using XSL style
sheet"). О XSL-таблицах стиля вы
узнаете в лекции 10.
Совет. Если вы последовательно
выполняете упражнения из данного курса,
имейте в виду, что вы можете быстро
проверить, является ли документ
корректно сформированным, открыв его
непосредственно в Internet Explorer 5. (Если
вы отображаете XML-документ через HTML-страницу,
как описывается в 3 части, XML-документ
с ошибкой не будет отображен, но и
сообщение об ошибке не появится, если вы
не написали для этого соответствующий
сценарий (скрипт-код).
Отобразите XML-документ
с использованием таблицы каскадных
стилей
- Откройте
новый, пустой текстовый файл в вашем
текстовом редакторе и заполните
CSS-таблицу, как показано в Листинге
2.2.
- С помощью
команды Save (Сохранить) вашего
текстового редактора сохраните
таблицу стиля на жестком диске,
задав имя файла Inventory01.css.
Созданная вами CSS-таблица сообщает
Internet Explorer 5, каким образом
форматировать символьные данные
элементов.
-
Отображать каждый элемент
BOOK
с отступом сверху в 12 пт
(margin-top:12pt) с
переводом строки сверху и снизу
(display:block),
используя размер шрифта 10 пт
(font-size:10pt).
-
Отображать каждый элемент TITLE
курсивом
(font-style:italic).
-
Отображать каждый элемент AUTHOR
полужирным
(font-weight:bold).
/* File Name: Inventory01.css */
BOOK
{display:block;
margin-top:12pt;
font-size:10pt}
TITLE
{font-style:italic}
AUTHOR
{font-weight:bold}
Листинг
2.2. Inventory.xml
- В вашем
текстовом редакторе откройте
документ Inventory.xml, созданный
вами в предыдущем упражнении.
Добавьте в конце пролога документа (непосредственно
над элементом
INVENTORY) следующую
инструкцию по обработке:
<?xml-stylesheet
type="text/css" href="Inventory01.css"?>
Эта инструкция по обработке
устанавливает связь созданной вами
CSS-таблицы и XML-документа. В
результате при открытии документа в
Internet Explorer 5 браузер
отобразит содержимое документа в
соответствии с инструкциями,
записанными в таблице стилей.
- Чтобы
отразить новое имя файла, которое вы
собираетесь присвоить, измените
комментарий в начале документа с
<!-- File
Name: Inventory.xml -->
на
<!-- File
Name: Inventory01.xml -->
В Листинге 2.3 представлен весь XML-документ.
-
Воспользуйтесь командой Save As (Сохранить
как) вашего текстового редактора,
чтобы сохранить копию измененного
документа под именем
Inventory01.xml. Проверьте, чтобы
этот файл был сохранен в той же
папке, что и файл Inventory01.css.
<?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>
<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>
Листинг 2.3.
Inventory01.xml
- В Windows
Explorer (Проводник) или в окне
папки дважды щелкните на файле
Inventory01.xml, чтобы открыть
документ.
Internet
Explorer 5 откроет документ
Inventory01.xml и отобразит его в
соответствии с правилами из
связанной таблицы стилей, как
показано на рисунке 2.8.
- Чтобы
почувствовать, как можно изменять
представление XML-документа путем
модификации связанной таблицы стилей,
откройте новый, пустой текстовый
файл в вашем текстовом редакторе и
введите измененную CSS-таблицу, как
показано в Листинге 2.4.
-
Воспользуйтесь командой Save (Сохранить)
вашего текстового редактора, чтобы
сохранить новую таблицу стилей на
жестком диске, присвоив ей имя файла
Inventory02.css.
Рис. 2.7.
Созданная вами
модифицированная таблица стилей
сообщает Internet Explorer 5, каким
образом форматировать символьные
данные элементов.
-
Отображать каждый элемент
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).
/* 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}
Листинг
2.4. Inventory02.xml
- В вашем
текстовом редакторе откройте
документ Inventory.xml. Добавьте в
конце пролога документа (над
элементом INVENTORY) следующую
инструкцию по обработке:
<?xml-stylesheet
type="text/css" href="Inventory02.css"?>
Эта инструкция
по обработке устанавливает связь
между новой CSS-таблицей, созданной
вами, и XML-документом.
- Чтобы
отразить новое присвоенное вами имя
файла, измените комментарий в начале
документа с
<!-- File
Name: Inventory.xml -->
на
<!-- File
Name: Inventory02.xml -->
В Листинге 2.5
представлен полный XML-документ.
-
Воспользуйтесь командой Save As (Сохранить
как), чтобы сохранить копию
измененного документа под именем
Inventory02.xml. Проверьте, чтобы
этот файл был сохранен в той же
папке, что и файл Inventory02.css.
<?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>
<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>
Листинг
2.5.
- В Windows
Explorer (Проводник) или в окне
папки дважды щелкните на имени файла
Inventory02.xml, чтобы открыть его.
Internet
Explorer 5 откроет документ
Inventory02.xml и отобразит его в
соответствии с правилами,
установленными в связанной таблице
стилей Inventory02.css, как показано
на рисунке 2.8 (здесь представлено
лишь четыре книги; осуществив
прокрутку вниз, вы увидите остальные).
Рис. 2.8.
Ссылка.
В 3 части вы найдете подробные и
исчерпывающие инструкции для
отображения XML-документов в
Web. Вы познакомитесь с
каскадными таблицами стилей,
подобными только что созданным
вами, в лекции 7. О XSL-таблицах
рассказывается в лекции 10. В
лекциях 8 и 9 вы узнаете об
альтернативных методах
отображения XML-документов в
Web.
|