- •Оглавление введение 4
- •Тема 1. Простой xml-документ 8
- •Тема 2. Создание корректно сформированных xml-документов 20
- •Тема 3. Создание валидных xml-документов 37
- •Тема 4. Определение и использование примитивов 72
- •Тема 5. Таблицы каскадных стилей 94
- •Тема 6. Связывание данных 169
- •Тема 7. Сценарии объектной модели документа 219
- •Тема 8. Xsl-таблицы стилей 261
- •Тема 9. Описание схемы документа на языке xsd 288
- •Список литературы 320 введение
- •Тема 1. Простой xml-документ
- •Лабораторная работа №1
- •Тема 2. Создание корректно сформированных xml-документов
- •2.1. Составные части корректно сформированного xml-документа
- •Лабораторная работа №2
- •2.2. Добавление элементов в документ
- •2.3. Анатомия элемента
- •2.4. Типы содержимого элемента
- •2.5. Пустые элементы
- •Лабораторная работа №3
- •2.6. Задание атрибутов для элементов
- •2.7. Правила для создания атрибутов
- •2.8. Правила для корректного задания значений атрибутов
- •Тема 3. Создание валидных xml-документов
- •3.1. Основной критерий для валидного документа
- •3.2. Преимущества использования валидных xml-документов
- •3.3. Добавление dtd
- •3.4. Форма записи dtd
- •3.5. Форма записи объявления типа элемента
- •3.6. Описание содержимого элемента
- •3.7. Задание содержимого элемента
- •3.8. Задание смешанного содержимого
- •Лабораторная работа №4
- •3.8. Форма записи объявления списка атрибутов
- •3.9. Тип атрибута
- •3.10. Задание атрибута маркерного типа
- •3.11. Задание атрибута нумерованного типа
- •3.12. Объявление значения по умолчанию
- •Лабораторная работа №5
- •3.13. Использование внешних подмножеств dtd
- •3.14. Использование внешних и внутренних подмножеств dtd одновременно
- •3.15. Условия игнорирования разделов внешнего подмножества dtd
- •Лабораторная работа №6
- •3.16. Преобразование корректно сформированного документа в валидный
- •Тема 4. Определение и использование примитивов
- •4.1. Определения и классификация примитивов
- •4.2. Типы примитивов
- •4.3. Объявление общего внутреннего разбираемого примитива
- •4.4. Объявление общего внешнего разбираемого примитива
- •4.5. Объявление общего внешнего не разбираемого примитива
- •4.6. Объявление нотаций
- •Лабораторная работа №7
- •4.7. Объявление параметрического внутреннего разбираемого примитива
- •4.8. Объявление параметрического внешнего разбираемого примитива
- •4.9. Вставка ссылок на примитив
- •4.10. Ссылка на примитив. Пример 1
- •4.11. Ссылка на примитив. Пример 2
- •4.12. Вставка ссылок на символы
- •4.13. Использование предварительно определённых примитивов
- •4.14. Объявление документа автономным (standalone)
- •Лабораторная работа №8
- •Тема 5. Таблицы каскадных стилей
- •5.1. Создание файла таблицы стилей
- •5.2. Нечувствительность к регистру в css
- •5.3. Наследование установок свойств
- •5.4. Использование множественных элементов и множественных правил
- •5.5. Использование контекстуальных селекторов
- •5.6. Использование атрибута style
- •5.7. Импорт других таблиц стилей
- •5.8. Задание значений url
- •5.9. Связывание таблицы стилей с xml-документом
- •5.9. Присвоение значений в таблицах каскадных стилей
- •5.10. Установка свойства display
- •5.11. Задание ключевых слов css в качестве значений
- •5.12. Установка свойства font-family
- •5.13. Установка свойства font-size
- •Задание размера шрифта относительно размера шрифта браузера
- •5.14. Установка свойства font-style
- •Ключевые слова, используемые для свойства font-style
- •5.15. Установка свойства font-weight
- •Ключевые слова, используемые для свойства font-weight
- •5.16. Установка свойства font-variant
- •Ключевые слова, используемые для свойства font-variant
- •5.17. Установка свойства color
- •5.18. Установка свойства background-color
- •5.19. Установка свойства background-image
- •5.20. Установка свойства background-repeat
- •5.21. Установка свойства background-position
- •5.22. Установка свойства letter-spacing
- •5.23. Установка свойства vertical-align
- •Ключевые слова, используемые для свойства vertical-align
- •5.24. Установка свойства text-align
- •5.25. Установка свойства text-indent
- •5.26. Установка свойства line-height
- •5.27. Установка свойства text-transform
- •Ключевые слова, используемые для свойства text-transform
- •5.28. Установка свойства text-decoration
- •Ключевые слова, используемые для свойства text- decoration
- •5.29. Установка свойств управоения полями
- •5.30. Установка свойства border-style
- •Ключевые слова, используемые для свойства border-style
- •5.31. Установка свойства border-width
- •Ключевые слова, используемые для свойства border-width
- •5.31. Установка свойства border-color
- •5.32. Установка свойств просвета между обрамлением и текстом
- •5.33. Установка свойств размеров
- •5.34. Установка свойства позиционирования float
- •Ключевые слова, используемые для свойства float
- •5.35. Установка свойства позиционирования clear
- •Ключевые слова, используемые для свойства clear
- •5.36. Вставка элементов html в xml-документы и использование пространства имён
- •Тема 6. Связывание данных
- •6.1. Основные шаги при связывании данных
- •6.1. Шаг первый: установка связи xml-документа с html-страницей
- •6.2. Как хранятся данные xml
- •6.3. Проверка на наличие ошибок
- •6.4. Шаг второй: сцепление html-элементов с xml-элементами. Использование табличного сцепления
- •6.5. Использование одной html-таблицы для отображения простого набора записей
- •6.6. Использование постраничного отображения
- •Методы перемещения по записям таблицы
- •6.7. Использование вложенных таблиц для отображения иерархической структуры записей
- •Лабораторная работа №9
- •6.8. Использование связывания данных по одной записи
- •6.9. Перемещение между записями
- •Методы объекта recordset
- •6.10. Другие способы связывания данных
- •Сцепляемын html-элементы (за исключением элемента table)
- •6.11. Связывание с другими html-элементами
- •6.12. Передача html-разметки
- •6.13. Обновление накопленных данных
- •Методы объекта recordset
- •6.14. Использование dtd при сявзывании данных
- •6.15. Связывание html-элементов с xml-атрибутами
- •Лабораторная работа №10
- •6.16. Использование сценариев для dso
- •Тема 7. Сценарии объектной модели документа
- •7.1. Связывание xml-документа с html-страницей
- •7.2. Структура dom
- •7.3. Доступ и отображение элементов xml-документа
- •Полезные свойства и методы, предоставляемые узлами Document/
- •7.4. Использование объекта NodeList
- •7.5. Извлечение символьных данных элемента
- •7.6. Отображение переменного числа xml-элементов
- •7.7. Использование других способов доступа к элементам
- •Лабораторная работа №11
- •7.8. Доступ и отображение значений атрибутов в xml-документе
- •7.9. Доступ к примитивам и нотациям xml
- •Лабораторная работа №12
- •7.10. Перемещение внутри xml-документа
- •7.11. Проверка валидности xml-документа
- •Тема 8. Xsl-таблицы стилей
- •8.1. Основы использования xsl-таблиц стилей
- •8.2. Использовании одного шаблона xsl
- •8.3. Отображение переменного числа элементов
- •8.4. Использование нескольких шаблонов
- •Лабораторная работа №13
- •8.5. Фильтрация и сортировка данных xml
- •8.6. Доступ к атрибутам xml
- •Лабораторная работа №14
- •Тема 9. Описание схемы документа на языке xsd
- •9.1. Встроенные простые типы xsd
- •9.1.1. Вещественные числа
- •9.1.2. Целые числа
- •9.1.3. Строки символов
- •9.1.4. Дата и время
- •9.1.5. Двоичные типы
- •9.1.6. Прочие встроенные простые типы
- •9.2. Определение простых типов
- •9.2.1. Сужение
- •9.2.2. Список
- •9.2.3. Объединение
- •9.3. Обявление элементов и их атрибутов
- •9.4. Определение сложных типов
- •9.4.1. Определение типа пустого элемента
- •Лабораторная работа №15
- •9.4.2. Определение типа элемента с простым телом
- •9.4.3. Определение типа вложенных элементов
- •9.5. Определение типа со сложным телом
- •9.6. Безымянные типы
- •9.7. Пространства имён языка xsd
- •9.8. Включение файлов схемы в другую схему
- •9.9. Связь документа xml со своей схемой
- •Лабораторная работа №16
- •Вопросы для тестирования
- •Список литературы
Тема 1. Простой xml-документ
В данном разделе мы рассмотрим общий процесс создания и отображения XML-документа в Web-браузере. Сначала будет создан простой XML-документ, исследована его структура и приведены основные правила создания корректно сформированного XML-документа. Затем отобразим этот документ при помощи браузера путем создания и присоединения простой стилевой таблицы, которая сообщает браузеру, как форматировать элементы в документе.
Описание XML-документа представляет собой простой текст, который можно набрать в любом текстовом редакторе, например, редактор Блокнот (Notepad), входящем в состав операционной системы Microsoft Windows. Для создания простого XML-документа нужно выполнить действия, описанные ниже.
Создать новый файл в текстовом редакторе и ввести текст XML-документа, представленного далее в Листинге 1.1. Количество элементов BOOK зависит от количества книг в вашей библиотеке. (Элемент BOOK включает в себя теги <BOOK> и </BOOK> и весь содержащийся между ними текст.)
Сохранить созданный файл, присвоив ему, например, имя 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-документа, в котором допущена ошибка