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.