Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методические указания для Лабораторных работ.docx
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
3.54 Mб
Скачать

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

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

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

Здесь Имя представляет собой имя элемента, ассоциированного с атрибутом или атрибутами. ОпрАтр – это одно или несколько определений атрибутов, каждое из которых определяет один атрибут.

Определение атрибута имеет следующую форму записи:

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

Здесь Имя представляет собой имя атрибута.

ТипАтр представляет собой тип атрибута, т.е. виды значений, которые могут быть присвоены атрибуту. (О типах атрибутов пойдет речь в следующем разделе.) ОбъявУмолч – это объявление по умолчанию, которое указывает на обязательность атрибута и содержит другую информацию. (Об этом будет рассказано далее в этой лекции.)

Допустим, вы объявили тип элемента с именем FILM следующим образом:

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

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

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

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

Рис. 3.3. 

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

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

<?xml version="1.0" encoding="windows-1251" ?>

<!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>The Morning After</TITLE>

<STAR>Morgan Attenbury</STAR>

</FILM>

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

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

Тип атрибута

Тип атрибута является вторым необходимым компонентом в определении атрибута. Он задает вид значений, которые вы можете присваивать атрибуту внутри документа, как показано на рисунке 3.4.

Рис. 3.4. 

Вы можете задавать тип атрибута тремя различными способами.

  • Строковый тип. Строковый тип атрибута может быть назначен любой строке в кавычках (литералу), которая отвечает общим правилам. Вы должны объявить строковый тип атрибута с использованием ключевого слова CDATA, как это сделано для определения атрибута Class в следующем примере:

<!ATTLIST FILM Class CDATA "fictional">

  • Маркерный тип. Значения, которые вы можете присваивать атрибуту маркерного типа, имеют ряд ограничений.

  • Нумерованный тип. Для нумерованного типа атрибута вы можете присваивать одно значение или список определенных значений.