Языки информационного обмена



Проблемы определений DTD


У определений DTD имеется ряд недостатков, которые выявляются при углубленной работе с XML:

  • Их сложно писать и понимать.

    Синтаксис определений DTD отличается от языка XML. Он является расширенной формой Бэкуса-Науэра (Extended Backus Naur Form, EBNF), и многие находят его трудным для чтения и использования. Предлагаемые схемы XML фактически, используют язык XML для описания определяемых ими языков, что устраняет необходимость изучения языка EBNF для их чтения и записи.

  • Программная обработка их метаданных затруднена.

    Использование языка EBNF, кроме того, затрудняет автоматизированную обработку метаданных в определениях DTD. Разумеется, для DTD существуют специальные анализаторы. Он должен загрузить и прочитать DTD, после чего сможет проверить соответствующий документ на допустимость. К сожалению, не предусмотрена возможность обратиться к DTD из программы, использующей модель DOM. Объектная модель не позволяет получить доступ к метаданным словаря, написанным на языке EBNF. Анализатор прочитает DTD и сохранит его информацию для себя. Безусловно, было бы удобно, если бы DTD было написано на языке XML, так что мы могли бы исследовать их так же легко, как мы исследуем документы, написанные в соответствии с содержащимися в них правилами. Такая возможность позволила бы при помощи DOM изучить структуру обнаруженных нами словарей и даже модифицировать их правила проверки допустимости в соответствии с теми или иными условиями программы.

  • Они не являются расширяемыми и не поддерживают пространства имен.

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

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


    - Начало -  - Назад -  - Вперед -