Основы XML

       

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


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

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

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

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

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

Здесь Имя представляет собой имя атрибута. (Правила выбора имен атрибутов приведены в разделе "Правила создания атрибутов" в лекции 3.)

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

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

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

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

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

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


Рис. 5.3. 

Вы можете присвоить атрибуту 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>The Morning After</TITLE> <STAR>Morgan Attenbury</STAR> </FILM>


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

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

Содержание раздела