Учебники

XML — DTD

Объявление типа документа XML, обычно известное как DTD, является способом точного описания языка XML. DTD проверяют словарный запас и правильность структуры документов XML на соответствие грамматическим правилам соответствующего языка XML.

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

Синтаксис

Основной синтаксис DTD выглядит следующим образом —

<!DOCTYPE element DTD identifier
[
   declaration1
   declaration2
   ........
]>

В приведенном выше синтаксисе,

  • DTD начинается с <! DOCTYPE delimiter.

  • Элемент указывает синтаксическому анализатору проанализировать документ из указанного корневого элемента.

  • DTD-идентификатор — это идентификатор для определения типа документа, который может быть путем к файлу в системе или URL-адресом к файлу в Интернете. Если DTD указывает на внешний путь, он называется External Subset.

  • Квадратные скобки [] заключают в себе необязательный список объявлений сущностей, который называется Internal Subset .

DTD начинается с <! DOCTYPE delimiter.

Элемент указывает синтаксическому анализатору проанализировать документ из указанного корневого элемента.

DTD-идентификатор — это идентификатор для определения типа документа, который может быть путем к файлу в системе или URL-адресом к файлу в Интернете. Если DTD указывает на внешний путь, он называется External Subset.

Квадратные скобки [] заключают в себе необязательный список объявлений сущностей, который называется Internal Subset .

Внутренний DTD

DTD называется внутренним DTD, если элементы объявлены в файлах XML. Чтобы обозначить его как внутренний DTD, автономный атрибут в объявлении XML должен быть установлен в yes . Это означает, что объявление работает независимо от внешнего источника.

Синтаксис

Ниже приводится синтаксис внутреннего DTD —

<!DOCTYPE root-element [element-declarations]>

где root-element — это имя корневого элемента, а element-объявлений — это место, где вы объявляете элементы.

пример

Ниже приведен простой пример внутреннего DTD —

<?xml version = "1.0" encoding = "UTF-8" standalone = "yes" ?>
<!DOCTYPE address [
   <!ELEMENT address (name,company,phone)>
   <!ELEMENT name (#PCDATA)>
   <!ELEMENT company (#PCDATA)>
   <!ELEMENT phone (#PCDATA)>
]>

<address>
   <name>Tanmay Patil</name>
   <company>TutorialsPoint</company>
   <phone>(011) 123-4567</phone>
</address>

Давайте пройдемся по приведенному выше коду —

Начать объявление — Начните объявление XML со следующего утверждения.

<?xml version = "1.0" encoding = "UTF-8" standalone = "yes" ?>

DTD — Сразу после заголовка XML следует объявление типа документа , обычно называемое DOCTYPE —

<!DOCTYPE address [

Объявление DOCTYPE имеет восклицательный знак (!) В начале имени элемента. DOCTYPE сообщает анализатору, что DTD связан с этим документом XML.

Тело DTD — за объявлением DOCTYPE следует тело DTD, где вы объявляете элементы, атрибуты, сущности и нотации.

<!ELEMENT address (name,company,phone)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT company (#PCDATA)>
<!ELEMENT phone_no (#PCDATA)>

Здесь объявлено несколько элементов, которые составляют словарь документа <name>. <! ELEMENT name (#PCDATA)> определяет имя элемента типа «#PCDATA». Здесь #PCDATA означает анализируемые текстовые данные.

Завершение объявления — Наконец, раздел объявления DTD закрывается с помощью закрывающей скобки и закрывающей угловой скобки ( ]> ). Это эффективно завершает определение, и после этого документ XML следует сразу же.

правила

  • Объявление типа документа должно появляться в начале документа (с предшествующим только заголовком XML) — оно не разрешено где-либо еще в документе.

  • Подобно объявлению DOCTYPE, объявления элементов должны начинаться с восклицательного знака.

  • Имя в объявлении типа документа должно соответствовать типу элемента корневого элемента.

Объявление типа документа должно появляться в начале документа (с предшествующим только заголовком XML) — оно не разрешено где-либо еще в документе.

Подобно объявлению DOCTYPE, объявления элементов должны начинаться с восклицательного знака.

Имя в объявлении типа документа должно соответствовать типу элемента корневого элемента.

Внешний DTD

Во внешних DTD элементы объявляются вне XML-файла. Доступ к ним осуществляется путем указания системных атрибутов, которые могут быть либо легальным файлом .dtd, либо действительным URL-адресом. Чтобы обозначить его как внешнее DTD, автономный атрибут в объявлении XML должен быть установлен как no . Это означает, что декларация включает в себя информацию из внешнего источника.

Синтаксис

Ниже приводится синтаксис для внешнего DTD —

<!DOCTYPE root-element SYSTEM "file-name">

где file-name — это файл с расширением .dtd .

пример

В следующем примере показано использование внешнего DTD —

<?xml version = "1.0" encoding = "UTF-8" standalone = "no" ?>
<!DOCTYPE address SYSTEM "address.dtd">
<address>
   <name>Tanmay Patil</name>
   <company>TutorialsPoint</company>
   <phone>(011) 123-4567</phone>
</address>

Содержимое файла DTD address.dtd выглядит так:

<!ELEMENT address (name,company,phone)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT company (#PCDATA)>
<!ELEMENT phone (#PCDATA)>

Типы

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

Системные идентификаторы

Системный идентификатор позволяет указать местоположение внешнего файла, содержащего объявления DTD. Синтаксис выглядит следующим образом —

<!DOCTYPE name SYSTEM "address.dtd" [...]>

Как видите, он содержит ключевое слово SYSTEM и ссылку URI, указывающую на местоположение документа.

Публичные идентификаторы

Открытые идентификаторы предоставляют механизм для определения местоположения ресурсов DTD и записываются следующим образом:

<!DOCTYPE name PUBLIC "-//Beginning XML//DTD Address Example//EN">

Как видите, он начинается с ключевого слова PUBLIC, за которым следует специальный идентификатор. Публичные идентификаторы используются для идентификации записи в каталоге. Публичные идентификаторы могут следовать любому формату, однако обычно используемый формат называется формальными общедоступными идентификаторами или FPI .