В DTD атрибуты объявляются с декларацией ATTLIST.
Декларирование Атрибуты
Объявление атрибута имеет следующий синтаксис:
<!ATTLIST element-name attribute-name attribute-type attribute-value>
DTD example:
<!ATTLIST payment type CDATA "check">
XML example:
<payment type="check" />
attribute-type может быть одним из следующих:
Тип | Описание |
---|---|
CDATA | Значение данных символов |
( en1 | en2 |..) | Значение должно быть одним из нумерованного списка |
ID | Значение представляет собой уникальный идентификатор |
IDREF | Значение идентификатор другого элемента |
IDREFS | Значение представляет собой список других идентификаторов |
NMTOKEN | Значение является допустимым именем XML |
NMTOKENS | Значение представляет собой список допустимых имен XML |
ENTITY | Значение является юридическим лицом |
ENTITIES | Значение представляет собой список объектов, |
NOTATION | Значение имя нотации |
xml: | Значение является предустановленное значение XML |
attribute-value может быть одним из следующих:
Стоимость | объяснение |
---|---|
value | Значение по умолчанию атрибута |
#REQUIRED | Атрибут обязателен |
#IMPLIED | Атрибут является необязательным |
#FIXED value | Значение атрибута фиксировано |
Атрибут Значение по умолчанию
DTD:
<!ELEMENT square EMPTY>
<!ATTLIST square width CDATA "0">
Valid XML:
<square width="100" />
В приведенном выше примере, "square" элемент определяется как пустой элемент с "width" атрибут типа CDATA. Если не указано ширина, он имеет значение по умолчанию, равное 0.
#ОБЯЗАТЕЛЬНЫЙ
Синтаксис
<!ATTLIST element-name attribute-name attribute-type #REQUIRED>
пример
DTD:
<!ATTLIST person number CDATA #REQUIRED>
Valid XML:
<person number="5677" />
Invalid XML:
<person />
Используйте ключевое слово #REQUIRED, если у вас нет опции для значения по умолчанию, но по-прежнему хотят, чтобы заставить атрибут присутствовать.
#IMPLIED
Синтаксис
<!ATTLIST element-name attribute-name attribute-type #IMPLIED>
пример
DTD:
<!ATTLIST contact fax CDATA #IMPLIED>
Valid XML:
<contact fax="555-667788" />
Valid XML:
<contact />
Используйте ключевое слово #IMPLIED, если вы не хотите, чтобы заставить автора включить атрибут, и вы не имеете вариант для значения по умолчанию.
#ИСПРАВЛЕНО
Синтаксис
<!ATTLIST element-name attribute-name attribute-type #FIXED "value">
пример
DTD:
<!ATTLIST sender company CDATA #FIXED "Microsoft">
Valid XML:
<sender company="Microsoft" />
Invalid XML:
<sender company="w3ii" />
Используйте ключевое слово помеченный как #FIXED, когда вы хотите, чтобы атрибут иметь фиксированное значение, не позволяя автору, чтобы изменить его. Если автор включает в себя другое значение, то XML-анализатор вернет ошибку.
Перечислимые Значения атрибутов
Синтаксис
<!ATTLIST element-name attribute-name (en1|en2|..) default-value>
пример
DTD:
<!ATTLIST payment type (check|cash) "cash">
XML example:
<payment type="check" />
or
<payment type="cash" />
Используйте перечисляемые значения атрибутов, когда вы хотите, чтобы значение атрибута, чтобы быть одним из фиксированного набора допустимых значений.