DTD - атрибуты

В DTD атрибуты объявляются с помощью оператора ATTLIST.

Объявление атрибутов

Использование синтаксиса для объявления атрибутов:

!ATTLIST 元素名称 属性名称 属性类型 Значение по умолчанию>

Пример DTD:

!ATTLIST payment type CDATA "check"

Пример XML:

<payment type="check" />

Ниже приведены:Тип атрибутаварианты:

Тип Описание
CDATA Значение является данными字符а (character data)
(en1|en2|..) Это значение из списка значений перечисления
ID Значение является уникальным идентификатором
IDREF Значение является идентификатором другого элемента
IDREFS Значение является списком других идентификаторов
NMTOKEN Значение является合法ым именем XML
NMTOKENS Значение является списком合法ых имен XML
ENTITY Значение является entidad
ENTITIES Значение является списком entidades
NOTATION Это имя символа
xml: Значение является предопределенным значением XML

Параметры значения по умолчанию могут быть следующими:

Значение Объяснение
Значение Значение по умолчанию атрибута
#REQUIRED Значение атрибута обязательно
#IMPLIED Атрибут не обязателен
#FIXED value Значение атрибута фиксировано

Определение значения по умолчанию для атрибута

DTD:

!ELEMENT square EMPTY
!ATTLIST square width CDATA "0"

Правильный XML:

<square width="100" />

В предыдущем примере "square" определен как пустой элемент с атрибутом "width" типа CDATA. Если ширина не установлена, значение по умолчанию составляет 0.

#IMPLIED

Грамматика

!ATTLIST 元素名称 属性名称 属性类型 #IMPLIED

Пример

DTD:

!ATTLIST contact fax CDATA #IMPLIED

Правильный XML:

<contact fax="555-667788" />

Правильный XML:

<contact />

Если вы не хотите принудительно включать атрибуты автора, и у вас нет опции с значениями по умолчанию, пожалуйста, используйте ключевое слово #IMPLIED.

#REQUIRED

Грамматика

!ATTLIST 元素名称 属性名称 属性类型 #REQUIRED

Пример

DTD:

<!ATTLIST person number CDATA #REQUIRED>

Правильный XML:

<person number="5677" />

Неправильный XML:

<person />

Если у вас нет варианта значения по умолчанию, но вы все же хотите заставить автора предоставить атрибут, используйте ключевое слово #REQUIRED.

#FIXED

Грамматика

<!ATTLIST элементовое_имя имя_атрибута тип_атрибута #FIXED "значение">

Пример

DTD:

<!ATTLIST sender company CDATA #FIXED "Microsoft">

Правильный XML:

<sender company="Microsoft" />

Неправильный XML:

<sender company="W3School" />

Если вы хотите, чтобы значение свойства было фиксированным и не позволяло автору изменить его, используйте ключевое слово #FIXED. Если автор использовал другое значение, XML-анализатор вернет ошибку.

Перечисление значений свойств

Грамматика:

<!ATTLIST элементовое_имя имя_атрибута (en1|en2|..) значение_по_умолчанию>

Пример DTD:

<!ATTLIST payment type (check|cash) "cash">

Пример XML:

<payment type="check" />

Или

<payment type="cash" />

Если вы хотите, чтобы значение свойства было одним из фиксированных допустимых значений, перечислите значения свойства.