В этой главе мы обсудим атрибуты DTD. Атрибут дает больше информации об элементе или, точнее, он определяет свойство элемента. Атрибут XML всегда находится в форме пары имя-значение. Элемент может иметь любое количество уникальных атрибутов.
Объявление атрибута очень похоже на объявление элемента во многих отношениях, кроме одного; вместо того, чтобы объявлять допустимый контент для элементов, вы объявляете список допустимых атрибутов для каждого элемента. Эти списки называются декларацией ATTLIST.
Синтаксис
Основной синтаксис объявления атрибутов DTD следующий:
<!ATTLIST element-name attribute-name attribute-type attribute-value>
В приведенном выше синтаксисе —
-
Атрибуты DTD начинаются с ключевого слова <! ATTLIST, если элемент содержит атрибут.
-
element-name указывает имя элемента, к которому применяется атрибут.
-
имя-атрибута указывает имя атрибута, который включен в имя-элемента.
-
attribute-type определяет тип атрибутов. Мы обсудим это подробнее в следующих разделах.
-
Значение атрибута принимает фиксированное значение, которое атрибуты должны определить. Мы обсудим это подробнее в следующих разделах.
Атрибуты DTD начинаются с ключевого слова <! ATTLIST, если элемент содержит атрибут.
element-name указывает имя элемента, к которому применяется атрибут.
имя-атрибута указывает имя атрибута, который включен в имя-элемента.
attribute-type определяет тип атрибутов. Мы обсудим это подробнее в следующих разделах.
Значение атрибута принимает фиксированное значение, которое атрибуты должны определить. Мы обсудим это подробнее в следующих разделах.
пример
Ниже приведен простой пример объявления атрибута в DTD.
<?xml version = "1.0"?> <!DOCTYPE address [ <!ELEMENT address ( name )> <!ELEMENT name ( #PCDATA )> <!ATTLIST name id CDATA #REQUIRED> ]> <address> <name id = "123">Tanmay Patil</name> </address>
Давайте пройдемся по приведенному выше коду —
-
Начните с объявления XML со следующего утверждения —
Начните с объявления XML со следующего утверждения —
<?xml version = "1.0"?>
-
Сразу за заголовком XML следует объявление типа документа, обычно называемое DOCTYPE, как показано ниже —
DOCTYPE сообщает анализатору, что DTD связан с этим документом XML. Объявление DOCTYPE имеет восклицательный знак (!) В начале имени элемента.
Сразу за заголовком XML следует объявление типа документа, обычно называемое DOCTYPE, как показано ниже —
DOCTYPE сообщает анализатору, что DTD связан с этим документом XML. Объявление DOCTYPE имеет восклицательный знак (!) В начале имени элемента.
<!DOCTYPE address [
-
Ниже приводится тело DTD. Здесь мы объявили элемент и атрибут —
Ниже приводится тело DTD. Здесь мы объявили элемент и атрибут —
<!ELEMENT address ( name )> <!ELEMENT name ( #PCDATA )>
-
Идентификатор атрибута для имени элемента определен как дано ниже —
Здесь тип атрибута — CDATA, а его значение — #REQUIRED .
Идентификатор атрибута для имени элемента определен как дано ниже —
Здесь тип атрибута — CDATA, а его значение — #REQUIRED .
<!ATTLIST name id CDATA #REQUIRED>
Правила декларации атрибута
-
Все атрибуты, используемые в документе XML, должны быть объявлены в определении типа документа (DTD) с использованием объявления списка атрибутов.
-
Атрибуты могут появляться только в начальных или пустых тегах.
-
Ключевое слово ATTLIST должно быть в верхнем регистре
-
Повторные имена атрибутов не будут разрешены в списке атрибутов для данного элемента.
Все атрибуты, используемые в документе XML, должны быть объявлены в определении типа документа (DTD) с использованием объявления списка атрибутов.
Атрибуты могут появляться только в начальных или пустых тегах.
Ключевое слово ATTLIST должно быть в верхнем регистре
Повторные имена атрибутов не будут разрешены в списке атрибутов для данного элемента.
Типы атрибутов
При объявлении атрибутов вы можете указать, как процессор должен обрабатывать данные, которые появляются в значении. Мы можем классифицировать типы атрибутов в трех основных категориях —
-
Тип строки
-
Типы токенов
-
Перечисляемые типы
Тип строки
Типы токенов
Перечисляемые типы
В следующей таблице приведена сводка различных типов атрибутов.
Sr.No. | Тип и описание |
---|---|
1 |
CDATA CDATA — это символьные данные (текстовые, а не разметочные). Это тип строкового атрибута . |
2 |
Я БЫ Это уникальный идентификатор атрибута. Оно не должно появляться более одного раза. Это тип атрибута Tokenized . |
3 |
IDREF Он используется для ссылки на идентификатор другого элемента. Он используется для установления связей между элементами. Это тип атрибута Tokenized . |
4 |
IDREFS Он используется для ссылки на несколько идентификаторов. Это тип атрибута Tokenized . |
5 |
ЮРИДИЧЕСКОЕ ЛИЦО Он представляет внешнюю сущность в документе. Это тип атрибута Tokenized . |
6 |
СУБЪЕКТЫ Он представляет собой список внешних объектов в документе. Это тип атрибута Tokenized . |
7 |
NMTOKEN Он похож на CDATA, и значение атрибута состоит из действительного имени XML. Это тип атрибута Tokenized . |
8 |
NMTOKENS Это похоже на CDATA, и значение атрибута состоит из списка допустимого имени XML. Это тип атрибута Tokenized . |
9 |
ОБОЗНАЧЕНИЯ Элемент будет ссылаться на нотацию, объявленную в документе DTD. Это перечисляемый тип атрибута . |
10 |
перечисление Это позволяет определить конкретный список значений, где одно из значений должно совпадать. Это перечисляемый тип атрибута . |
CDATA
CDATA — это символьные данные (текстовые, а не разметочные). Это тип строкового атрибута .
Я БЫ
Это уникальный идентификатор атрибута. Оно не должно появляться более одного раза. Это тип атрибута Tokenized .
IDREF
Он используется для ссылки на идентификатор другого элемента. Он используется для установления связей между элементами. Это тип атрибута Tokenized .
IDREFS
Он используется для ссылки на несколько идентификаторов. Это тип атрибута Tokenized .
ЮРИДИЧЕСКОЕ ЛИЦО
Он представляет внешнюю сущность в документе. Это тип атрибута Tokenized .
СУБЪЕКТЫ
Он представляет собой список внешних объектов в документе. Это тип атрибута Tokenized .
NMTOKEN
Он похож на CDATA, и значение атрибута состоит из действительного имени XML. Это тип атрибута Tokenized .
NMTOKENS
Это похоже на CDATA, и значение атрибута состоит из списка допустимого имени XML. Это тип атрибута Tokenized .
ОБОЗНАЧЕНИЯ
Элемент будет ссылаться на нотацию, объявленную в документе DTD. Это перечисляемый тип атрибута .
перечисление
Это позволяет определить конкретный список значений, где одно из значений должно совпадать. Это перечисляемый тип атрибута .
Объявление значения атрибута
В каждом объявлении атрибута вы должны указать, как значение будет отображаться в документе. Вы можете указать, если атрибут —
-
может иметь значение по умолчанию
-
может иметь фиксированное значение
-
необходимо
-
подразумевается
может иметь значение по умолчанию
может иметь фиксированное значение
необходимо
подразумевается
Значения по умолчанию
Содержит значение по умолчанию. Значения могут быть заключены в одинарные кавычки (‘) или двойные кавычки («).
Синтаксис
Ниже приводится синтаксис значения —
<!ATTLIST element-name attribute-name attribute-type "default-value">
где default-value — это определенное значение атрибута.
пример
Ниже приведен простой пример объявления атрибута со значением по умолчанию —
<?xml version = "1.0"?> <!DOCTYPE address [ <!ELEMENT address ( name )> <!ELEMENT name ( #PCDATA )> <!ATTLIST name id CDATA "0"> ]> <address> <name id = "123"> Tanmay Patil </name> </address>
В этом примере у нас есть элемент name с атрибутом id , значение по умолчанию которого равно 0 . Значение по умолчанию заключено в двойные кавычки.
ИСПРАВЛЕНО Значения
Ключевое слово #FIXED, за которым следует фиксированное значение, используется, когда вы хотите указать, что значение атрибута является постоянным и не может быть изменено. Обычное использование фиксированных атрибутов — указание номеров версий.
Синтаксис
Ниже приводится синтаксис фиксированных значений —
<!ATTLIST element-name attribute-name attribute-type #FIXED "value" >
где #FIXED — определенное значение атрибута.
пример
Ниже приведен простой пример объявления атрибута со значением FIXED —
<?xml version = "1.0"?> <!DOCTYPE address [ <!ELEMENT address (company)*> <!ELEMENT company (#PCDATA)> <!ATTLIST company name NMTOKEN #FIXED "tutorialspoint"> ]> <address> <company name = "tutorialspoint">we are a free online teaching faculty</company> </address>
В этом примере мы использовали ключевое слово #FIXED, где оно указывает, что значение «tutorialspoint» является единственным значением для имени атрибута элемента <company>. Если мы пытаемся изменить значение атрибута, то это дает ошибку.
Следующее является недействительным DTD —
<?xml version = "1.0"?> <!DOCTYPE address [ <!ELEMENT address (company)*> <!ELEMENT company (#PCDATA)> <!ATTLIST company name NMTOKEN #FIXED "tutorialspoint"> ]> <address> <company name = "abc">we are a free online teaching faculty</company> </address>
ТРЕБУЕМЫЕ ЦЕННОСТИ
Всякий раз, когда вы хотите указать, что атрибут является обязательным, используйте ключевое слово #REQUIRED.
Синтаксис
Ниже приведен синтаксис #REQUIRED —
<!ATTLIST element-name attribute-name attribute-type #REQUIRED>
где #REQUIRED — это определенный тип атрибута.
пример
Ниже приведен простой пример объявления атрибута DTD с ключевым словом #REQUIRED —
<?xml version = "1.0"?> <!DOCTYPE address [ <!ELEMENT address ( name )> <!ELEMENT name ( #PCDATA )> <!ATTLIST name id CDATA #REQUIRED> ]> <address> <name id = "123"> Tanmay Patil </name> </address>
В этом примере мы использовали ключевое слово #REQUIRED, чтобы указать, что для имени элемента должен быть указан идентификатор атрибута.
ПОДРАЗУМЕВАЕМЫЕ ЦЕННОСТИ
При объявлении атрибутов вы всегда должны указывать декларацию значения. Если декларируемый вами атрибут не имеет значения по умолчанию, не имеет фиксированного значения и не является обязательным, вы должны объявить этот атрибут как подразумеваемый . Ключевое слово #IMPLIED используется для указания атрибута как подразумеваемого .
Синтаксис
Ниже приводится синтаксис #IMPLIED —
<!ATTLIST element-name attribute-name attribute-type #IMPLIED>
где #IMPLIED — это определенный тип атрибута.
пример
Ниже приведен простой пример # ПРЕДПОЛАГАЕТСЯ
<?xml version = "1.0"?> <!DOCTYPE address [ <!ELEMENT address ( name )> <!ELEMENT name ( #PCDATA )> <!ATTLIST name id CDATA #IMPLIED> ]> <address> <name /> </address>
В этом примере мы использовали ключевое слово #IMPLIED, поскольку мы не хотим указывать какие-либо атрибуты, которые будут включены в имя элемента. Это необязательно.