Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 13.doc
Скачиваний:
9
Добавлен:
01.05.2025
Размер:
392 Кб
Скачать
☆

3.2. Информационные объекты

Обычно документ XML состоит из двух частей: пролога и данных. Данные представляют собой размеченный текст, а пролог в свою очередь включает в себя объявление XML и описание типа документа DTD. В общем случае доку­мент XML может содержать данные и объявления из различных источников: баз данных, сценариев и др., т. е. документ XML состоит из пролога и следующих за ним информационных объектов (entity). В качестве информационного объекта может выступать файл, запись базы данных или другой элемент данных.

Информационные объекты позволяют задавать имена для наборов символьных данных или файлов так, чтобы их можно было включать в состав XML-документа. Например, если в документе многократно используется символьная строка с информацией об издательстве, то целесообразно создать информаци­онный объект с помощью следующего кода:

<!ENTITY redBHV "СПб.: BHV - Санкт-Петербург"

Теперь в документе достаточно указать ссылки вида &redBHV, которые при обра­ботке документа синтаксическим анализатором будут заменены на строку СПб.: BHV — Санкт-Петербург.

Приведенный пример показывает использование внутреннего информационного объекта, описание которого содержится в самом документе. Кроме того, допус­тимо использование внешних информационных объектов, которые включают имя и ссылку на контейнер, хранящий его содержание. Объявление внешних информационных объектов выполняется с помощью оператора следующего формата:

<!ENTITY name (PUBLIC|SYSTEM) "content")

Здесь строка name задает имя информационного объекта, а ключевые слова public и system указывают на доступность использования информационного объекта в документах.

В XML имеется 5 предопределенных общих ссылок: &lt;, &gt;, &apos;, &quote; и &amp;, которые ссылаются на текстовые информационные объекты (символы) <, >, ', " и &, соответственно. Они применяются в документах 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 в окне браузера Micro­soft 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. Вид структуры в окне браузера