Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ППТС-2 / Лекции / Lect4-02.doc
Скачиваний:
5
Добавлен:
12.05.2015
Размер:
137.22 Кб
Скачать

4.1.7. Определение атрибутов элемента

Список атрибутов некоторого элемента задается следующим образом:

<!ATTLISTэлемент

атрибут-1 тип-1 значение-1

атрибут-2 тип-2 значение-2...

>

В этом определении параметр элементзадает имя элемента, для которого определяет­ся данный список атрибутов,атрибут-i–имяi-го атрибута,тип-i– типi-го атрибута изначение-i–значениеi-го атрибута.

Параметр значение-iопределяет, как и какие значения должны быть присвоены атрибу­ту.Параметр может принимать одно из следующих значений:

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

  • ключевое слово #IMPLIED, которое показывает, что атрибут является необязательным и может отсутствовать в элементе;

  • ключевое слово #FIXED, за которым следует значение, заключенное в ка­вычки (задает атрибут, который всегда должен иметь одно и то же фиксированное значение);

  • значение, заключенное в кавычки, которое определяет значение атрибута по умолчанию.

Параметр тип-iопределяет тип атрибута. ВXMLсуществуют три различных типа атрибутов:

  • строковые атрибуты (StringType);

  • маркированные атрибуты (TokenizedType);

  • перечислимые атрибуты (EnumeratedType).

4.1.7.1. Строковые атрибуты

Строковые атрибуты (тип CDATA) могут принимать в качестве значения любые символьные строки, например,атрибутhrefэлементаaвHTMLимеет типCDATA:

<a href="http://www.microsoft.com">…</a>

Описание атрибута hrefдля элементаaбудет выглядеть следующим образом:

<!ATTLIST a

href CDATA #REQUIRED

>

4.1.7.2. Маркированные атрибуты

Маркированные атрибуты имеют один из следующих фиксированных значений типов:

  • ID–уникальный идентификатор для элемента в документе. ЗначениеIDдолжно состоять из имени – буквы или символа подчеркивания, за которыми могут следовать другие символы;

  • IDREF–указывает на элемент с заданным значениемID;

  • IDREFS– указывает на два и более элемента в документе при помощи списка ID, в котором элементы списка отделены друг от друга пробелами;

  • ENTITY–указывает на внешнюю сущность (значение должно состоять из имени, а также должно соответствовать имени внешней сущности);

  • ENTITIES–указывает на две и более внешних сущностей при помощи списка сущностей, в котором элементы списка отделены друг от друга пробелами;

  • NMTOKEN–принимает значение имени (в отличие от значений типа CDATA, которые могут содержать любые символы, значенияNMTOKENмогут содержать только буквы, цифры, а также ".", "-", "_" и ":");

  • NMTOKENS–принимает значение двух или более имен, разделенных пробелами.

Пример задания атрибутов ID, IDREF и IDREFS:

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

<!DOCTYPE e-mail [

<!ELEMENT e-mail (address+, letter*, proposal*)>

<!ELEMENT address (#PCDATA)>

<!ATTLIST address name ID #REQUIRED>

<!ELEMENT letter (#PCDATA)>

<!ATTLIST letter

from IDREF #REQUIRED

to IDREF #REQUIRED

subject CDATA #IMPLIED

>

<!ELEMENT proposal (#PCDATA)>

<!ATTLIST proposal

from IDREFS #REQUIRED

to IDREF #REQUIRED

subject CDATA #IMPLIED

>

]>

<e-mail>

<address name="Ivanov">ivanov@post.com</address>

<address name="Petrov">petrov@post.com</address>

<address name="Sidorov">sidorov@post.com</address>

<letter from="Ivanov" to="Petrov"

subject="Поздравление">

Поздравляю с днем рождения!

</letter>

<proposal from="Petrov Sidorov" to="Ivanov">

Предложение Иванову от Петрова и Сидорова

</proposal>

</e-mail>

Пример задания атрибутов NMTOKEN и NMTOKENS:

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

<!DOCTYPE user-list [

<!ELEMENT user-list user+>

<!ELEMENT user EMPTY>

<!ATTLIST user

name NMTOKENS #REQUIRED

birth_date NMTOKEN #REQUIRED

address NMTOKENS #REQUIRED

>

]>

<user-list>

<user name="Иванов Иван Иванович"

birth_date="01:12:1979"

address="Country:Украина City:Киев

Street:Полевая Building:56 Flat:12"/>

<user name="John Smith" birth_date="24:08:1979"

address="Country:USA City:New-York

Street:1-th Avenue Building:125 Flat:84"/>

</user-list>

Если дату рождения первого пользователя представить в виде 01/12/1979, то при анализе документа будет зафиксирована ошибка, поскольку символ "/" является недопустимым в значениях атрибутов типаNMTOKEN.

Соседние файлы в папке Лекции