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 Значение - это список entidad
NOTATION Это имя символа
xml: Значение - это предопределенное значение XML

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

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

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

DTD:

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

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

<square width="100" />

В приведенном выше примере, "square" определено как пустой элемент с типом свойств CDATA для свойства "width". Если ширина не установлена, значение по умолчанию равно 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 "value">

Пример

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" />

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