- •1. Технологии публикации баз данных
- •1.1. Сценарии JavaScript, jScript и vbScript
- •1.2. Элементы управления ActiveX
- •1.3. Апплеты и сервлеты Java
- •1.4. Интерфейсы cgi и WinCgi
- •1.5. Интерфейсы isapi/nsapi
- •1.6. Asp, php и idc/htx-страницы
- •1.7. Формирование Web-страниц
- •1.9. Статическая публикация бд
- •1.8. Интерфейсы ole db, ado, odbc
- •1.10. Динамическая публикация бд
- •1.12. Протоколы передачи данных
- •1.13. Универсальный указатель ресурсов
- •3. Расширяемый язык разметки xml
- •3.1. Составляющие xml-документа
- •3.2. Информационные объекты
- •3.3. Определение типа документа
- •3.4. Xml как средство обмена данными
- •4. Программа xml Mapper
3.2. Информационные объекты
Обычно документ XML состоит из двух частей: пролога и данных. Данные представляют собой размеченный текст, а пролог в свою очередь включает в себя объявление XML и описание типа документа DTD. В общем случае документ XML может содержать данные и объявления из различных источников: баз данных, сценариев и др., т. е. документ XML состоит из пролога и следующих за ним информационных объектов (entity). В качестве информационного объекта может выступать файл, запись базы данных или другой элемент данных.
Информационные объекты позволяют задавать имена для наборов символьных данных или файлов так, чтобы их можно было включать в состав XML-документа. Например, если в документе многократно используется символьная строка с информацией об издательстве, то целесообразно создать информационный объект с помощью следующего кода:
<!ENTITY redBHV "СПб.: BHV - Санкт-Петербург"
Теперь в документе достаточно указать ссылки вида &redBHV, которые при обработке документа синтаксическим анализатором будут заменены на строку СПб.: BHV — Санкт-Петербург.
Приведенный пример показывает использование внутреннего информационного объекта, описание которого содержится в самом документе. Кроме того, допустимо использование внешних информационных объектов, которые включают имя и ссылку на контейнер, хранящий его содержание. Объявление внешних информационных объектов выполняется с помощью оператора следующего формата:
<!ENTITY name (PUBLIC|SYSTEM) "content")
Здесь строка name задает имя информационного объекта, а ключевые слова public и system указывают на доступность использования информационного объекта в документах.
В XML имеется 5 предопределенных общих ссылок: <, >, ', "e; и &, которые ссылаются на текстовые информационные объекты (символы) <, >, ', " и &, соответственно. Они применяются в документах XML, чтобы избежать неправильной интерпретации соответствующих символов как части разметки документа. Например, символы < и > при их непосредственном использовании могут интерпретироваться как начальный и конечный теги.
3.3. Определение типа документа
Создание отдельного определения типа документа DTD для каждого документа XML обеспечивает:
возможность аналитическому анализатору проверять корректность документа;
удобство задания и изучения структуры документа определенного типа;
возможность применять не только элементы и атрибуты, но и информационные объекты.
В DTD входят пять составляющих его частей:
типы документов;
элементы;
атрибуты;
информационные объекты;
комментарии.
Определение типа документа может размещаться внутри документа XML, в этом случае говорят о внутреннем DTD, или быть задано во внешнем файле — внешнее DTD. Применительно к внешним DTD различают системное (system) и общее (public) определения типа документа. Системное DTD может использоваться одним или несколькими документами XML, а общее DTD — в любом документе XML.
Одно из важнейших назначений DTD заключается в определении структуры документа как иерархии составляющих его элементов. В частности, применительно к книге соответствующее внутреннее DTD и сам документ XML могут быть заданы следующим образом.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE book [
<!ENTITY % phras "PCDATA | emphasis">
<!ELEMENT book (title_page, content}>
<!ELEMENT title_page (author, title)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT content (part, chapter+)>
<!ELEMENT part (#PCDATA)>
<!ELEMENT chapter (#PCDATA)>
]>
<book>
<title_page>
<author> Ivanov Dm. </author>
<title> Name of book </title>
</title_page>
<content>
<part> Name of Part </part>
<chapter> Text of Chapterl </chapter>
<chapter> Text of Chapter2 </chapter>
<chapter> Text of Chapter3 </chapter>
</content>
</book>
Здесь первая строка кода указывает, что это XML-документ, и определяет используемую систему кодирования — 8-битовую кодировку Unicode, соответствующую символам ASCII. Ter <!DCTYPE book [ указывает на начало описания DTD с именем book, а тег ]> — на окончание DTD. В строке
<!ELEMENT content (part, chapters+)>
знак + говорит о том, что элементов chapter (глава) в родительском элементе content (содержание) книги может быть несколько.
При обнаружении ошибок в исходном коде документа XML браузер выдает сообщение о характере и местоположении первой из них, как показано, например, на рис. 13.2. Отметим, что при подготовке документов HTML возможность контроля синтаксических ошибок отсутствует в принципе.
Рис. 13.2. Сообщение об ошибке в окне браузера
Для приведенного документа XML и его описания DTD в окне браузера Microsoft Internet Explorer 5.0 будет отображаться структура, изображенная на рис. 13.3.
Для создания внешнего DTD следует поместить объявления всех размещаемых в нем элементов, атрибутов и информационных объектов в отдельном файле с расширением DTD, например, book.dtd. В состав внешнего DTD нужно поместить также инструкцию по обработке кода XML, включив строку
<?xml version="1.0" encoding="UTF-8" ?>
Чтобы получить доступ к внешнему DTD, размещенному в сети, в XML-документ нужно включить следующее описание:
<!DOCTYPE book SYSTEM "http://www.xom.com/dtds/book.dtd"
Здесь http://www.xom.com/dtds/book.dtd - адрес размещения файла DTD в сети. Если DTD является общим, в приведенной строке вместо слова system требуется указать PUBLIC.
Рис. 13.3. Вид структуры в окне браузера
