Xml dtd что такое
Для того, чтобы использовать DTD в нашем документе, мы можем или описать его во внешнем файле и при описании DTD просто указать ссылку на этот файл или же непосредственно внутри самого документа выделить область, в которой определить нужные правила. В первом случае в документе указывается имя файла, содержащего DTD- описания:
Внутри же документа DTD- декларации включаются следующим образом:
Определение элемента
Например, для элемента можно определить следующее правило:
Ключевое слово ELEMENT указывает, что данной инструкцией будет описываться элемент XML. Внутри этой инструкции задается название элемента(flower) и тип его содержимого.
В этом примере указывается, что внутри элемента должны быть определены элементы title, author и table-of-contents, причем элемент title является обязательным элементом и может встречаться лишь однажды, элемент author может встречаться несколько раз, а элемент table-of-contents является опциональным, т.е. может отсутствовать. В том случае, если существует несколько возможных вариантов содержимого определяемого элемента, их следует разделять при помощи символа «|» :
Символ * в этом примере указывает на то, что определяемая последовательность внутренних элементов может быть повторена несколько раз или же совсем не использоваться.
Если в определении элемента указывается «смешанное» содержимое, т.е. текстовые данные или набор элементов, то необходимо сначала указать PCDATA, а затем разделенный символом «|» список элементов.
Пример корректного XML- документа:
Определение атрибутов
В данном примере для элемента article определяются три атрибута: id, about и type, которые имеют типы ID(идентификатор), CDATA и список возможных значений соответственно. Всего существует шесть возможных типов значений атрибута:
Также в определении атрибута можно использовать следующие параметры:
Определение компонентов(макроопределений)
В общем случае, внутри DTD можно задать три типа макроопределений:
В XML существует пять предустановленных внутренних символьных констант:
Например, для следующего фрагмента документа:
можно использовать более короткую форму записи:
Макроопределения часто используются для описания параметров в правилах атрибутов. В этом случае появляется возможность использовать одинаковые определения атрибутов для различных элементов:
Типизация данных
Если в качестве программы на стороне клиента используется верифицирующий XML-процессор, то информацию о типе можно передавать при помощи специально созданного для этого атрибута элемента, имеющего соответствующее DTD- определение. В процессе разбора программа-анализатор передаст значение этого атрибута клиентскому приложению, которое сможет использовать эту информацию должным образом. Например, чтобы указать, что содержимое элемента должно быть длинным целым, можно использовать следующее DTD- определение:
Вот пример XML- документа, в котором определяются и используются несколько элементов с различными типами данных:
Как видно из примера, механизм создания элементов документа при этом нисколько не изменился. Все необходимая для проверки типов данных информация заложена в определения элементов внутри блока DTD.
В заключении хотелось бы отметить, что DTD предоставляет нам весьма удобный механизм осуществления контроля за содержимым документа. На сегодняшний день, практически все программы просмотра документов Интернет используют DTD-правила. Однако это далеко не единственный способ проверки корректности документа. В настоящий момент в W3 консорциуме находится на рассмотрении новый стандарт языка описания структуры документов, называемый схемами данных. Следующий раздел посвящен работе с ними.
XML DTD — проверка грамматики XML-документов (валидация) при помощи DTD
Это очередная статья в цикле «Основы XML» и в ней мы рассмотрим основы описания структуры XML данных при помощи DTD. Это довольно таки старый способ описания структуры XML-документов, но он до сих пор используется, поэтому мы его все же рассмотрим.
Также хочу отметить, что это отличный способ показать, как в XML идет проверка содержимого документа, его грамматики и т.д. Более новый и совершенный способ описания структуры XML-документов с использованием технологии XML Schema мы рассмотрим в следующей статье, ну а пока перейдем непосредственно к изучению DTD XML.
В рамках данной статьи мы рассмотрим сразу несколько важных моментов. Это что такое XML DTD и для чего он нужен, поговорим о недостатках DTD, а также научимся самостоятельно составлять собственный DTD для валидации XML-документов. Все это, как обычно, будет изложено пошагово, максимально кратко и понятно с целью экономии вашего времени.
Что такое DTD в XML и для чего он нужен
DTD – это язык описания, который позволяет нам определить, какие элементы должны быть в XML-документе, сколько раз они должны повторяться, какие атрибуты должны быть у этих элементов, какие атрибуты обязательные и какие не обязательные, а также какие сущности могут использоваться в документе. Подробнее про конструкции XML читайте в статье «Элементы, теги и атрибуты XML».
Если говорить кратко, то DTD в XML используется для проверки грамматики документа и соответствия его стандарту (тому, который придумал разработчик или вы сами). Это позволяет парсеру (обработчику) на этапе обработки определить, соответствует ли документ нашим требованиям. То есть, проходит валидация XML-документа.
Необходимость проверки грамматики XML-документов заключается в следующем:
Итак, мы разобрались с тем, что такое XML DTD и зачем он нужен. Теперь давайте кратко рассмотрим недостатки DTD, после чего перейдем непосредственно к рассмотрению процесса создания DTD файлов для валидации XML-документов.
Недостатки XML DTD
Это был краткий список недостатков DTD, которые с успехом исправлены в XML схемах, о которых мы поговорим в следующих статьях.
Объявление элементов, атрибутов и сущностей в DTD. Модификаторы «*», «?», «+»
Для объявления элементов, атрибутов и сущностей в DTD используются специальные декларации и модификаторы. Чтобы подробно во всем разобраться, давайте для начала рассмотрим теоритическую информацию, а затем во второй части статьи перейдем к практическим примерам.
Определение элемента XML и последовательности элементов XML
Элемент book содержит по одному элементу title, author, price и description.
Альтернативы элементов
Элемент pricelist содержит элементы title, price и один элемент из трех на выбор – author, company либо sample.
Пустые элементы
Элемент none должен быть пустым.
Объявление атрибута
Элемент pricelist может содержать два атрибута – атрибут id и атрибут name. При этом атрибут id является обязательным, так как указано #REQUIRED, а атрибут name – не обязательным (указано #IMPLIED). В свою очередь CDATA указывает обработчику, что разбирать содержимое атрибутов не нужно.
Определение сущностей
Если встретится сущность «&myname;», то вместо нее автоматически подставится «Дмитрий Денисов».
Модификаторы (объясняют повторения элементов)
* — ноль или много.
? – ноль или один.
+ — один или много.
Элемент books может содержать один или более элементов book.
Теперь давайте рассмотрим, как это все выглядит на более практических примерах.
Создание DTD-файла для валидации XML-документа на примере прайс-листа книг
Пусть у нас будет все тот же прайс-лист книг, который мы используем для примеров практически в каждой статье про XML. Сам XML-документ будет выглядеть примерно следующим образом.
Конечно, вышеприведенный пример не является пределом мечтаний, но для примера вполне сойдет. Как видно с примера, у нас есть корневой элемент pricelist, который содержит вложенные элементы book. Внутри элементов book находятся элементы title, author, price и возможно description, которые могут содержать какие-то текстовые данные.
Для валидации данного прайс-листа мы можем использовать DTD-документ следующего содержания.
Теперь разберем все более подробно.
Подключение DTD для валидации XML-документов
Декларативный способ
Данный способ очень редко используется, так как его суть состоит в создании самодостаточных документов. То есть, документ будет сразу содержать и DTD и XML. Для добавления DTD в XML используется следующая конструкция.
где вместо DOCUMENT указываем корневой элемент XML-документа.
Для наглядности рассмотрим пример готового самодостаточного документа с декларативным способом включения DTD.
Внешнее определение DTD — подключение DTD-документа
Суть данного метода состоит в том, чтобы подключить к XML-документу файл DTD при помощи следующей конструкции.
где DOCUMENT – указываем корневой элемент XML-документа.
file.dtd – ссылка на файл DTD.
Для наглядности рассмотрим следующий пример.
На этом данная статья подошла к концу. Все основные моменты при работе с XML DTD мы рассмотрели и, надеюсь, у меня получилось понятно все объяснить. Если вы не хотите пропустить выпуска других уроков по XML и XSLT, рекомендую подписаться на новостную рассылку, воспользовавшись формой ниже.
На этом все. Удачи вам и успехов в изучении XML!
Языки описания cхем XML
Идея создания собственных тэгов, имеющих специальное значение и помогающих описать содержание документа, сама по себе просто замечательна. Но если каждый пользователь может создавать свои собственные описания, каким образом их распознавать? С этой целью в спецификации XML для описания подобных «самодеятельных» тэгов используются схемы. Они необходимы для того, чтобы:
Наиболее известными языками описания схем являются следующие:
Рассмотрим подробнее первые два из них. Третий язык описания схем рассматривается в лабораторной работе 11.
DTD схема
В рамках DTD модель содержимого XML документа можно описать следующим образом:
Каждый элемент документа может иметь один из типов:
Содержание | Синтаксис | Комментарий |
---|---|---|
Данные | Содержит только текстовые данные | |
Другие элементы | Содержит только дочерние элементы | |
Смешанное | Содержит комбинацию текстовых данных и дочерних элементов | |
EMPTY | Ничего не содержит | |
ANY | Может содержать текстовые данные или дочерние элементы |
Атрибуты, находящиеся внутри тэгов документа, описываются отдельно с помощью синтаксиса:
При этом атрибут в DTD может иметь один из трех типов:
Кроме типа атрибута можно также задавать и его модальность:
Значение | Описание |
---|---|
#REQUIRED | Атрибут обязательно должен быть указан |
#FIXED | Значение атрибута не должно отличаться от указанного |
#IMPLIED | Необязательное значение |
Рассмотрим в качестве примера описание атрибутов строкового типа для элемента, описывающего некоторое сообщение:
Если этот элемент содержит атрибуты с перечислением, то их описание может выглядеть, например, следующим образом:
Маркированных атрибуты элемента могут быть четырех типов:
Значение | Описание |
---|---|
ID | Уникальный идентификатор элемента (начинается с буквы, двоеточия или подчеркивания) |
IDREF | Ссылка на элемент, содержащий атрибуты ID |
ENTITIES | Ссылка на внешний элемент |
NMTOKEN | Содержит буквы, цифры, точки, знаки подчеркивания, переносы, двоеточия, но не пробелы |
И, наконец, в DTD можно использовать следующие индикаторы вхождения последовательностей:
В качестве примера приведем DTD схему, описывающую структуру электронного почтового ящика:
Исходный XML документ, удовлетворяющий данной схеме, может выглядеть, например, так:
В принципе, DTD допускает два способа использования в XML документе.
В заключение укажем на следующие недостатки DTD схем:
Описание структуры XML документа средствами DTD – Document Type Definition
Шпаргалка по DTD.
DTD – Один из способов формализованного описания схемы документа XML, сделанного на языке, понятном программе-анализатору.
В настоящее время идет отказ от использования DTD в пользу XSD (XML Schema Definition), по ряду причин:
Тем не менее этот способ ещё широко применяется поскольку является более простым и удобным для описания несложных схем документов.
КОНСТРУКЦИИ DTD
Описание схемы состоит из объявлений разметки (markup declaration), начинающихся с пары символов “ ”
ОБЪЯВЛЕНИЕ ТИПА ЭЛЕМЕНТА
(должен быть описан каждый элемент документа)
ОБЪЯВЛЕНИЕ АТРИБУТОВ
Атрибуты объявляются после объявления самого элемента. Все атрибуты одного элемента объявляются сразу, одним списком.
Для каждого атрибута записывается его имя, тип и признак обязательности.
Типы атрибутов:
признак обязательности:
При исп пространства имен надо всегда указывать уточненное (QName), а не локальное имя.
Атрибуты не входят в пространство имен по умолчанию.
Атрибуты “xml:lang” и “xml:space” так же дол быть объявлены в DTD в случае их применения
ОБЪЯВЛЕНИЕ СУЩНОСТЕЙ
Внутренние сущности – задаются при объявлении сущности.
— можно применять дальше в самом DTD ниже объявления.
Внешние сущности – содержатся в отдельном файле или встроены в программу-анализатор.
Параметризованные сущности – исп только внутри описания DTD
Сущности делятся на разбираемые(parsed) и не разбираемые (unparsed). Разбираемые предст собой фрагмент документа XML или целый документ и подлежат обработке программой-анализатором после подстановки. После подстановки разборки сущность становится частью XML документа.
ПРЕДОПРЕДЕЛЕННЫЕ СУЩНОСТИ В XML
ОБЪЯВЛЕНИЕ ОБОЗНАЧЕНИЯ (NOTATION)
Объявляются подобно сущностям, также могут быть внутренними и внешними.
Внутренняя
Внешняя
SYSTEM | PUBLIC — в данном случае равнозначны т.к. в public не обязательно общеизвестная ссылка.
РАЗМЕЩЕНИЕ DTD
Либо в отдельном файле “*.dtd” указав его имя в кавычках во второй части пролога DOCTYPE, либо включить описание непосредственно во вторую часть пролога, заключив его в квадратные скобки.
Xml dtd что такое
Определение типа документа (Document Type Definition, DTD) является тем фундаментом, на котором создаются XML-документы. Вы можете создать DTD или использовать заранее определенные DTD, которые специально созданы для применения в таких отраслях, как медицина и автомобильная промышленность, и которые описывают стандартизованные документы. Независимо от того, создаете ли вы собственное DTD, или же используете заранее определенное, вам необходимо знать, что такое DTD, как оно составляется и как работает.
В этой главе мы покажем, как правильно читать, разбирать и создавать DTD. Вы узнаете, как определить, когда необходимо внешнее DTD, и когда — внутреннее DTD. Мы исследуем, почему иногда предпочтительнее пользоваться заранее определенными DTD. Создание DTD является первым шагом в правильном структурировании XML-документов. Именно DTD обеспечивают XML-анализатор информацией, которая ему необходима для выполнения своей работы.
DTD определяет части документа и указывает, каким образом они могут использоваться, что может быть в них размещено, и требуются ли им фрагменты документа. DTD представляет собой набор правил, определяющий инструкции, которые могут быть переданы анализатору (parser) для обработки им этого документа. DTD может включать в себя набор объявлений элементов и атрибутов, а также сущности (entities), условные обозначения (notations) и комментарии. Различные объявления компонентов определяют, как документ будет структурирован, и эта информация (в виде инструкций) передается анализатору (parser). Анализатор, в свою очередь, отправляет результаты в приложение, обеспечивающее просмотр данных.
На примере DTD, созданного для относительно простого документа, рассмотрим, что оно собой представляет и как работает. Это пример внутреннего DTD, то есть такого, которое содержится непосредственно в самом XML-документе:
Обратите внимание, что данное DTD целиком размещено в самом документе. Эти определения, которые в действительности являются ничем иным как инструкциями по обработке данных, точно указывают анализатору XML, как именно следует управлять различными данными, которые будут размещены в документе, а также какой информацией или текстом должны быть замещены расположенные в документе сущности. DTD, который включен в состав самого XML-документа, называется внутренним подмножеством DTD (internal DTD subset), поскольку все инструкции по обработке информации, а также сами данные документа расположены внутри единого документа.
После того как предыдущий пример будет обработан анализатором и отображен браузером на экране, результат может быть следующим (предполагается, что соответствующая таблица стилей уже подключена):
Today's Memo Памятка на сегодня
August 1, 2000 1 августа 2000 г.
200 West 34th Suite 953, Anchorage. 200 West 34th Suite 953, Anchorage.
This memo is to alert you to the Это — извещение о том, что
new XML Black Book has now been издательство Coriolis, в серии
printed. Published by The Coriolis Black Book, выпустило новую книгу
Group, this book outlines пo XML, которая содержит все
everything you need to know необходимые сведения об этом языке
about XML. разметки.
Анализатор XML сверяет разметку документа по объявлениям различных элементов. Он также осуществляет замещение сущности, для которой в DTD было определено конкретное значение. В данном примере анализатор заменяет ссылку на сущность &PUBLISHER;- объявленным значением этой сущности, т. е. — The Coriolis Group. Таблица стилей, которая будет описана позднее в отдельном HTML-файле, управляет отображением данных.
Рассмотрим наш пример более детально, чтобы понять назначение каждой строки кода в определении документа. Вот краткая сводка наиболее важных компонентов данного документа:
Объявления
Объявлением называют разметку, которая служит для процессора XML специальной инструкцией, указывающей, как он должен обрабатывать данный документ. Существуют объявления элементов, атрибутов, сущностей, условных обозначений, объявление процессора и объявление типа документа. Рассмотрим два самых важных из них — объявление процессора и объявление типа документа. В отличие от остальных объявлений, объявление процессора и объявление типа документа не участвуют в конструировании самого документа. Они не поясняют структурную роль каждого отдельного элемента или атрибута. Наоборот, они указывают процессору, какой стандарт необходимо использовать, к какому типу относится обрабатываемый документ, а также где хранится DTD, в соответствии с которым сконструирован данный документ. Еще раз обратите внимание на две строки кода, которые определяют объявление процессора или так называемое объявление XML (XML declaration) и объявление типа документа:
<?XML version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE DOC [
Объявление XML
Первая строка в предыдущем примере называется объявлением XML. Это объявление указывает процессору, что для обработки XML-документа необходимо использовать спецификацию XML используемой версии (в настоящее время — версии 1.0. Вторая часть объявления XML указывает кодировку символов в данном документе. В этом примере применена 8-битная кодировка Unicode.
Заключительный фрагмент информации, который мы включаем в объявление XML, называется объявлением отдельного документа (standalone document declaration). Это объявление указывает, существуют ли внешние источники информации для данного документа. Так, значение «yes» говорит, что в данном документе не используется внешнее DTD или же какие-либо внешние параметрические сущности (external parameter entities). Другими словами, данный документ является самодостаточным и вся необходимая информация содержится в нем самом. Значение «yes» также указывает процессору, что в разметке необходимо игнорировать любые объявления внешних ссылок. Значение «nо» указывает процессору, что он может обрабатывать любые внешние объявления. Устанавливая для атрибута standalone значение «nо», вы сообщаете XML-процессорy, что данный документ может иметь ссылки на любые внешние объявления, например на любые внешние DTD. Это не означает, что вы должны включать внешние ссылки, а лишь то, что процессор должен принять и обработать любую внешнюю ссылку, если она указана в документе.
Когда устанавливать значение «yes», а когда «nо»? Если внешнее DTD содержит объявления атрибутов с любыми установками значений по умолчанию, и эти значения применяются по отношению к элементам, встречающимся в вашем документе, то следует установить значение «nо». Также необходимо установить значение «nо», если документ содержит какие-либо пустые участки, или в документе есть сущности, и ссылки на них встречаются в самом содержании документа. Значение «yes» можно установить, если в документе нет ссылок на внешние сущности, и если вы только используете общие сущности (general entities), являющиеся частью языка XML, например, амперсанд, символы «больше чем», «меньше чем», апостроф или же кавычки.
Объявление типа документа
Строка кода <! DOCTYPE DOC [ называется объявлением типа документа, и она служит для связи XML-документа с соответствующим DTD. Выражение, следующее за <! DOCTYPE, является именем используемого DTD. В том случае если DTD является внутренним, то за объявлением <! DOCTYPE следует список элементов и атрибутов, определенных для внутреннего DTD. Именно в объявлении типа документа автор XML-документа указывает, является ли данное DTD общим (public), или же частным (private). Далее, после закрывающей скобки указывается либо само DTD, либо локатор ссылки (reference locator)-на его местоположение. Если вы не опишете DTD, то процессор не получит информацию, необходимую для конструирования документа.
Вы можете указать, что DTD является частью документа, поместив его в скобках в самом документе, либо можете указать внешнее DTD. Далее в этой главе в разделе «Внешние и внутренние DTD» рассматривается вопрос, когдаа следует применять внешнее, а когда внутреннее DTD.
Вот пример DTD, содержащегося в самом документе:
<!DOCTYPE DOC [
<!ELEMENT DOC (SUBJECT, DATE, ADDRESS, MEMO) >
<ELEMENT SUBJECT (#PCDATA)>
<!ELEMENT DATE (#PCDATA)>
<!ELEMENT ADDRESS (#PCDATA)>
<!ELEMENT MEMO (# PCDATA) >
<!ENTITY PUBLISHER "The Corioiis Group">
]>
Вот пример того, как DTD хранится вне документа:
Где могут храниться DTD
DTD могут храниться как внутри самого документа, так и вне его. В данном примере мы храним DTD внутри документа:
<?XML version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE DOC [
Внутренние DTD объединяют все элементы, атрибуты, условные обозначения и сущности в самом документе. Внутренние DTD размещаются вначале документа, в объявлении типа документа. Объявление типа документа указывает процессору на DTD. Это объявление соединяет DTD с документом. Внутренние DTD указываются при помощи следующей строки кода, содержащейся в определении типа документа:
Внешние DTD также указываются в объявлении типа документа, но в них, в отличие от внутренних DTD, не содержатся все элементы, атрибуты, сущности, а указывается лишь внешний файл, в котором хранится сам DTD. Не требуется, чтобы имя файла внешнего DTD было аналогичным имени XML-документа, нужно чтобы у него было расширение DTD. Например, если документу присвоено имя BIZMEMO, то вы вполне можете присвоить файлу, хранящему DTD, имя MEMO.DTD. Помните, однако, что одно DTD может использоваться в нескольких документах. В этом заключается одна из наиболее мощных функциональных возможностей XML — единственное DTD может охватывать множество различных документов, основанных на общей структуре, позволяя создавать стандартизованные способы представления информации.
Общие и системные DTD
У вас есть возможность использовать как общедоступные (publicy available) DTD, которые разработаны для определенных целей, либо создать собственные DTD. Работая с общедоступными DTD, необходимо в объявлении типа документа указать ключевое имя PUBLIC. А если вы собираетесь использовать собственное DTD, то укажите ключевое слово SYSTEM. Вот пример кода для объявления общедоступного DTD:
<! DOCTYPE book PUBLIC "-//CompanyXYZ//DTD book//EN"
”http://www.site.com/dtds/book.dtd">
В XML для указания общедоступных DTD применяется точно такая же структура, как и в SGML. Если указанная сущность или DTD является стандартом ISO, то DTD начинается словом ISO. Если же указанная сущность или DTD не является стандартом ISO, однако используемый стандарт официально принят группой стандартизации, то объявление следует начинать со знака плюс (+). Если же он не принят официально группой стандартизации, то объявление следует начинать со знака минус (-). Далее следуют две наклонных черты (//), а затем владелец данного DTD. Если мы проанализируем DTD из предыдущего примера, то обнаружим, что указанное DTD не является стандартным, и что владельцем данного DTD является компания CompanyXYZ. Мы также увидим, что имя данного DTD — book, и что DTD расположено по адресу http://www.site.com/ в каталоге dtds.
Посмотрим, как выглядит объявление типа документа, когда в нем указывается DTD, расположенное на локальной машине:
<! DOCTYPE book SYSTEM "http://www.site.com/dtds/book.dtd">
В этом объявлении размещается ключевое слово SYSTEM, за которым следует адрес и имя файла, в котором хранится DTD. Поскольку предполагается, что данное DTD используется лишь его владельцем, то двойные наклонные чертыы не ставятся и имя владельца DTD не указывается.
Примечание
Можно встраивать одно DTD в другое, тогда встроенное DTD вызывается внешним DTD.
Быть или не быть DTD
Как вы уже знаете, в XML применение DTD не обязательно (в отличие от SGML). Поскольку XML был изначально приспособлен для работы в World Wide Web, в нем предусмотрены случаи, когда DTD просто не может работать из-за ограничений, накладываемых пропускной способностью. В таких случаях можно включать определения элементов и атрибутов непосредственно в сам документ.
Как же узнать, когда нужно использовать DTD, а когда нет? И как узнать каким DTD должно быть — внутренним или внешним?
Итак, мы показали, в каких случаях следует использовать DTD, а в каких — нет, но фактически следует рассматривать вариант создания DTD для каждого документа и хранить это DTD отдельно от документов, для работы с которыми это DTD предназначено. Хранение DTD в отдельных файлах не только обеспечит возможность их многократного использования, но и упростит их обновление и изменение. Это также будет препятствовать случайному вмешательству в DTD.
Внешние и внутренние DTD
Приняв решение о создании DTD, следует определить способ его хранения. Размер документа — лишь один из факторов, которые следует учитывать Необходимо также тщательно рассмотреть, нужна ли проверка действительности (validity) документа.
Внутренние DTD
Первый вопрос, на который следует ответить при создании документа, можно сформулировать так: нужно ли, чтобы документ был самодостаточным (self-contained). Самодостаточный документ можно перемещать из системы в систему, без потери компонентов. С таким документом можно работать в локальной системе, без выхода в Internet, а можно поместить его сменный носитель и иметь его при себе. И любой процессор XML сможет его обработать.
Кроме того, размещение информации в едином файле снижает время загрузки, анализа, отображения и обработки файла. При размещении DTD в самом документе процессор XML для отображения информации должен прочитать один файл, а не два или три (или больше).
Наконец, применение внутреннего DTD означает, что вы создаете самодостаточный файл, который является действительным и полным. Любой процессор XML может его обработать, не прибегая к поиску файла с внешним DTD.