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

3.8. Форма записи объявления списка атрибутов

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

  • определяет имена атрибутов, ассоциированных с элементом. В валидном документе можно включить в начальный тег элемента только те атрибуты, которые определены для элемента;

  • устанавливает тип данных каждого атрибута;

  • задает востребованность для каждого атрибута. Если атрибут не востребован, в объявлении списка атрибутов указывается, что должен делать процессор, если атрибут опущен. (В объявлении должно, например, содержаться значение атрибута по умолчанию, которое будет использовать процессор.)

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

<!ATTLIST Имя ОпрАтр>

Здесь “Имя” представляет собой имя элемента, ассоциированного с атрибутом или атрибутами. “OпрAтp” - это одно или несколько определений атрибутов, каждое из которых определяет один атрибут. Определение атрибута имеет следующую форму записи:

Имя ОпрАтр ОбъявУмолч

Здесь “Имя” представляет собой имя атрибута. (Правила выбора имен атрибутов приведены ранее). “OпрAтр” представляет собой тип атрибута, т.е. виды значений, которые могут быть присвоены атрибуту. (О типах атрибутов пойдет речь далее.) “ОбъявУмолч” - это объявление по умолчанию, которое указывает на востребованность атрибута и содержит другую информацию. (Об этом будет рассказано далее.) Допустим, вы объявили тип элемента с именем FILM следующим образом:

<!ELEMENT FILM (TITLE, (STAR | NARRATOR | INSTRUCTOR))>

Вот пример объявления списка атрибутов, которое описывает два атрибута - Class и Year - для элемента FILM:

<!ATTLIST FILM Class CDATA "fictional" Year CDATA #REQUIRED>

На следующем рисунке представлены составные части этого объявления.

Можно присвоить атрибуту Class любую строку в кавычках (ключевое слово CDATA); если опустить атрибут для определенного элемента, ему будет автоматически присвоено значение по умолчанию “fictional”. Можно присвоить атрибуту Year любую строку в кавычках; этот атрибут, однако, должен быть обязательно присвоен для каждого элемента FILM (ключевое слово #REQUIRED), поэтому он не имеет значения по умолчанию.

Следующий полный XML-документ включает это объявление списка атрибутов, а также элемент FILM:

<?xml version="1.0"?>

<!DOCTYPE FILM

[

<!ELEMENT FILM (TITLE, (STAR | NARRATOR | INSTRUCTOR))>

<!ATTLIST FILM Class CDATA "fictional" Year CDATA #REQUIRED>

<!ELEMENT TITLE (#PCDATA)>

<!ELEMENT STAR (#PCDATA)>

<!ELEMENT NARRATOR (#PCDATA)>

<ELEMENT INSTRUCTOR (#PCDATA)>

]

>

<FILM Year="1948">

<TITLE>После утра</TITLE>

<STAR>Морган Атенбери</STAR>

</FILM>

Для элемента FILM атрибуту Year присвоено значение “1948”. Атрибут Class опущен; однако, поскольку этот атрибут имеет значение по умолчанию (“fictional”), оно присваивается атрибуту, как если бы он был записан в качестве значения атрибута.

Если вы использовали для данного типа элемента более одного объявления списка атрибутов, содержания двух объявлений объединяются. Если атрибут с заданным именем объявлен для одного и того же элемента несколько раз, первое объявление используется, а последующие - игнорируются. (Множественные объявления списков атрибутов могут иметь место, если документ имеет как внутренние, так и внешние DTD, о чем пойдет речь далее.)