5.1 Проверяющие и непроверяющие процессоры
XML процессоры, отвечающие требованиям спецификации, делятся на два класса: проверяющие и непроверяющие.
И проверяющие, и непроверяющие процессоры должны докладывать о нарушениях правил корректности данной спецификации, выявленных в содержимом сущности документа и содержимом других читаемых разобранных сущностей.
[Определение: Проверяющие процессоры должны сообщить (по выбору пользователя) о нарушении ограничений, сформулированных в декларациях DTD, а также невозможности соответствовать критериям действительности, представленным в данной спецификации.] Чтобы выполнить это тренбование, проверяющий XML процессор должен прочесть и обработать весь DTD и все внешние разобранные сущности, на которые в данном документе делается ссылка.
Для проверки корректности от непроверяющего процессора требется проанализировать лишь сущность документа, включая полный внутренний набор DTD. [Определение: Хотя непроверяющий процессор и не обязан проверять действительность документа, он должен обработать все декларации, найденные во внутреннем наборе DTD, а также во всех прочитанных им сущностях параметров, но только до первой ссылки на сущность параметра, которую он уже не должен читать. Иными словами, он должен использовать сведения из этих деклараций для нормализации значений атрибутов, подстановки текста замены для внутренних сущностей и предоставления значений по умолчанию для атрибутов.] За исключением случая standalone="yes"
, процессорам запрещается обрабатывать декларации сущностей и списков атрибутов, расположенные после ссылки на сущность параметра, последняя не читается, поскольку может содержать переопределяющие декларации.
5.2 Использование XML процессоров
Поведение проверяющего XML процессора в значительной мере предсказуемо: он должен почесть все части документа и сообщить обо всех нарушениях правил корректности и действительности. Меньшее требуется от непроверяющего процессора: он не должен читать какие-либо части документа кроме сущности документа. Для использования XML процессоров существенное значение могут иметь два эффекта:
Непроверяющим процессором могут не распознаваться определенные ошибки корректности, особенно те, которые требуют прочтения внешних сущностей. Примером здесь служит нарушение ограничений Entity Declared, Parsed Entity и No Recursion, а также некоторые варианты, описанные в качестве запрещенных в главе 4.4 Обработка XML процессором сущностей и ссылок.
Информация, передаваемая процессором приложению, может меняться в зависимости от того, прочел ли этот процессор параметры и внешние сущности. Например, непроверяющий процессор может не выполнить нормализации значений атрибутов, не осуществить подстановки текста замены для внутренних сущностей или не предоставить значений по умолчанию для атрибутов, если это связано с прочтением деклараций во внешних сущностях и сущностях параметров.
Для достижения максимальной надежности взаимодействия различных XML процессоров, приложения, использующие непроверяющий процессор, не должны обращаться к функциям этих процессоров, не являющимся необязательными. Приложения, которым необходимы такие возможности, как использование атрибутов по умолчанию или внутренние сущности, декларированные во внешней сущности, должны пользоваться проверяющими XML процессорами.
Назад |
Содержание |
Вперед