Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМК_XML.doc
Скачиваний:
16
Добавлен:
03.05.2019
Размер:
3.94 Mб
Скачать

4.6. Объявление нотаций

Нотация описывает определенный формат данных. Это делается путем указания адреса описания формата, адреса программы, которая может обрабатывать данные в этом формате, либо просто описание формата. Нотацию можно использовать для того, чтобы описать формат общего внешнего не разбираемого примитива (см. в предыдущем разделе), либо можно присвоить нотацию атрибуту, который имеет нумерованный тип NOTATION (см. раздел “Задание нумерованных типов”). Нотация имеет следующую форму записи:

<!NOTATION ИмяНотации SYSTEM CистемЛитерал>

Здесь Имя Нотации есть имя нотации. Можно выбрать любое имя, при условии, что оно начинается с буквы или символа подчеркивания (_), после чего могут идти или не идти другие буквы, цифры, точки (.), тире (-) или символы подчеркивания. Лучше выбирать информативное имя, позволяющее идентифицировать формат. Например, при определении нотации, описывающей точечный формат (bitmap), следует использовать имя BMP.

Систем Литерал есть системный литерал, который может быть ограничен одинарными (') или двойными (") кавычками и содержать любые символы, за исключением символа кавычек, используемого в качестве ограничителя. Можно включить в системный литерал любое описание формата, которое проинформирует приложение, как отображать или обрабатывать XML-документ. (Нужно помнит., что XML-процессор сам не использует информацию нотации; он просто передает ее приложению, в качестве которого может выступать сценарий на Web-странице.) Например, в системный литерал можно включить одно из следующих описаний.

  • URI программы, которая может обрабатывать или отображать формат данных, как в следующих примерах:

<!NOTATION BMP SYSTEM "Pbrush.exe">

<!NOTATION GIF SYSTEM "http://bogus.com/ShowGif.exe">

  • URI документа в сети, который описывает формат данных, например:

<!NOTATION STRANGEFORMAT SYSTEM "http://bogus.com/

StrangeFormat.htm">

  • Простое описание формата, например:

<!NOTATION GIF SYSTEM "Graphic Interchange Format">

Лабораторная работа №7

  1. Для объявления всех элементов и атрибутов в XML-документе из лабораторной работы №6 воспользуйтесь только внутренним DTD.

  2. Вставьте элемент для описания специальности, получаемой студентами в группе.

  3. Содержимое данного элемента объявите при помощи общего внутреннего разбираемого примитива.

  4. Элемент, содержимым которого является дата поступления в вуз, объявите при помощи общего внешнего разбираемого примитива.

  5. Для отображения документа в браузере создайте новую таблицу какскадных стилей, предварительно согласовав её с преподавателем.

  6. Сохраните созданный документ в папке под своей фамилией.

  7. Закройте текстовый редактор “Блокнот”.

  8. Откройте для просмотра созданный XML-документ в браузере Internet Explorer.

  9. При появлении сообщений об ошибках, постарайтесь их найти и устранить.

  10. Сдайте работу преподавателю.

4.7. Объявление параметрического внутреннего разбираемого примитива

Форма объявления разметки параметрического примитива аналогична форме объявления, используемой для общих примитивов.

Объявление для параметрического внутреннего разбираемого примитива имеет следующую общую форму записи:

<!ENTITY % ИмяПримитива ЗначениеПримитива>

Здесь ИмяПримитива есть имя примитива. Можно выбрать любое имя, соблюдая следующие правила:

  • имя должно начинаться с буквы или символа подчеркивания (_), вслед за которым могут идти (или не идти) буквы, цифры, точки, тире или символы подчеркивания;

  • примитив может иметь такое же имя, что и общий примитив в документе. (Параметрические и общие примитивы занимают различные пространства имен.) Имя примитива также может совпадать с именем элемента или атрибута;

  • нужно помнить, что для всего текста разметки, в том числе и для имен примитивов, имеет значение регистр, в котором набраны символы. Так, примитив под именем Spot будет отличаться от примитива под именем spot.

ЗначениеПримитива есть значение примитива. Значение, присваиваемое параметрическому примитиву, представляет собой группу символов, заключенных в кавычки (литерал). Можно присвоить параметрическому примитиву любое значение типа литерал, при соблюдении следующих правил:

  • строка должна быть ограничена одинарными (') или двойными (") кавычками;

  • строка не может содержать символов кавычек, которые используются в качестве ограничителей;

  • строка не может содержать символа процентов (%) и символа амперсенда (&), если это не начальный символ в ссылке на символ или общий примитив;

  • можно поместить параметрический примитив в DTD только как объявление разметки, но не внутри объявления разметки. Следовательно, строка ЗначениеПримитива должна содержать один или несколько типов объявлений разметки, которые разрешено использовать в DTD. Эти типы объявлений разметки описаны выше. В частности, параметрический примитив может содержать объявления типа элемента, объявления списка атрибутов, объявления общих примитивов, объявления нотаций, инструкции по обработке, или комментарии. (Объявления параметрических примитивов и ссылки не допускаются.)

Приведенные здесь правила использования значений примитивов, которые вы можете без опасения применять в любых ситуациях, являются несколько упрощенными в отличие от правил, содержащихся в спецификации XML. Спецификация, в определенных обстоятельствах, разрешает включать в значение примитива дополнительные составляющие, а также помещать ссылку на примитив внутри разметки и между объявлениями разметки. Например, следующее DTD объявляет параметрический внутренний не разбираемый примитив с именем author, который содержит три объявления разметки: комментарий, объявление типа элемента и объявление списка атрибутов. Содержимое примитива (т.е. замещающий его текст) помещается в конец DTD посредством ссылки на параметрический примитив (%author;);

<!DOCTYPE BOOK

[

<!ENTITY % author

"<!-- информация об авторе -->

<!ELEMENT AUTHOR (#PCDATA)>

<!ATTLIST AUTHOR Nationality CDATA 'Американец'>"

>

<!ELEMENT BOOK (TITLE, AUTHOR)>

<!ELEMENT TITLE (#PCDATA)>

%author;

]

>

Значение атрибута по умолчанию, которое содержится в объявлении примитива ('American'), ограничено одинарными кавычками, чтобы избежать использования такого же символа, который применяется для ограничения всего значения примитива. Приведенное выше DTD эквивалентно следующему:

<!DOCTYPE BOOK

[

<!ELEMENT BOOK (TITLE, AUTHOR)>

<!ELEMENT TITLE (#PCDATA)>

<! -- информация об авторе -->

<!ELEMENT AUTHOR (#PCDATA)>

<!ATTLIST AUTHOR Nationality CDATA 'Американец'

]

>