DTD - Синтаксис

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

Синтаксис

Основной синтаксис DTD следующий:

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

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

  • DTD начинается с разделителя <! DOCTYPE.

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

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

  • В square brackets [ ] приложите необязательный список объявлений сущностей, называемых internal subset.

Внутренний DTD

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

Синтаксис

Синтаксис внутреннего DTD следующий:

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

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

пример

Ниже приводится простой пример внутреннего 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>

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

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

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

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

<!DOCTYPE address [

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

DTD Body - За объявлением DOCTYPE следует тело DTD, в котором вы объявляете элементы, атрибуты, сущности и нотации -

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

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

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

Правила

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

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

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

Внешний DTD

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

Синтаксис

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

<!DOCTYPE root-element SYSTEM "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, используя system identifiers или же public identifiers.

System Identifiers

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

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

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

Public Identifiers

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

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

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