Опубликован: 24.01.2007 | Уровень: для всех | Доступ: платный
Лекция 5:

Создание валидных XML-документов

Аннотация: Валидные XML-документы отвечают более строгому набору критериев, чем обычные корректно сформированные документы, с которыми вы имели дело в предыдущих лекциях. В этой лекции вы прежде всего познакомитесь с основными требованиями для валидных XML-документов и оцените преимущества валидных документов. Затем вы узнаете, как создавать объявление типа документа, которое требуется для всех валидных XML-документов. После этого будут представлены подробные инструкции по определению элементов и атрибутов в валидном документе. В завершение вы выполните упражнение по преобразованию документа, созданного вами в лекции 2, в валидный документ.

Основной критерий для валидного документа

Каждый XML-документ должен быть корректно сформированным, т.е. отвечать минимальным требованиям по составлению XML-документа. Если документ не является корректно сформированным, он не может считаться XML-документом.

Корректно сформированный XML-документ также может быть валидным. Валидным (valid) называется корректно сформированный (well-formed) документ, отвечающий двум дополнительным требованиям:

  • пролог документа должен содержать специальное объявление типа документа, которое содержит определение типа документа (DTD), задающее структуру документа;
  • остальной документ должен отвечать структуре, заданной в DTD.

В последующих разделах этой лекции, а также в "Определение и использование примитивов" , вы узнаете, как создавать документы, отвечающие этим двум общим требованиям.

Требования корректности формирования и валидности

Требования корректности формирования представляют собой набор правил, определенных в спецификации XML, которым вы должны следовать – в дополнение к основным синтаксическим требованиям, – чтобы создать правильно составленный документ. Поскольку XML-документ должен быть корректно сформированным, любое отклонение от требований корректности формирования считается фатальной ошибкой (fatal error). Если XML-процессор сталкивается с фатальной ошибкой, он должен остановить нормальную обработку документа и не пытаться ее возобновить.

Требования валидности представляют собой дополнительный набор правил в спецификации XML, которым вы должны следовать, чтобы создать валидный документ. Поскольку валидность является не обязательной для XML-документа, отклонение от требований валидности считается лишь ошибкой (error), но не фатальным сбоем. Если XML-процессор встречает ошибку, он может просто выдать сообщение о ней и продолжить выполнение обработки. Требования валидности состоят из специальных правил по созданию соответствующего объявления типа с его DTD, а также созданию документа, отвечающего описанию внутри вашего DTD.

Преимущества использования валидных XML-документов

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

Однако, если вы хотите быть уверенным, что ваш документ отвечает определенной структуре или набору стандартов, включение DTD, которое описывает эту структуру, дает возможность XML-процессору (например, Microsoft Internet Explorer 5) проверить, соответствует ли документ структуре. Другими словами, DTD обеспечивает стандартный шаблон для процессора, чтобы при проверке валидности он мог следовать требуемой структуре и гарантировать, что ваш документ соответствует установленным стандартам. Если какая-либо часть документа не отвечает DTD-спецификации, процессор может отобразить сообщение об ошибке, чтобы вы могли отредактировать документ и исправить несоответствия.

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

Предположим, компании, занимающейся публикацией в Web, требуется, чтобы все ее редакторы создавали XML-документы, отвечающие единой структуре. Создание одного DTD и включение его во все документы может обеспечить условия соответствия документов требуемой структуре, в то время как редакторы будут избавлены от необходимости добавлять новые элементы, помещать информацию в неправильном порядке, присваивать неправильные типы данных и т.д. Конечно, валидность документа должна быть проверена при его обработке процессором.

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

На деле большинство реальных XML-приложений, список которых приведен в конце "Знакомство с XML" , например, MathML, состоят из стандартного DTD, которое все пользователи приложения включают в свои XML-документы, чтобы при проверке валидности обеспечивалось соответствие структуре приложения, и документы были распознаны любой программой, разработанной для этого приложения.

Совет. Если вы открываете XML-документ (самостоятельный или с присоединенной таблицей стилей) непосредственно в Internet Explorer 5, процессор Internet Explorer 5 проверяет весь документ (в том числе объявление типа документа, если оно присутствует) на корректность формы составления, и выводит сообщение о фатальной ошибке при любом обнаруженном несоответствии. Однако процессор Internet Explorer 5 не проверяет документ на валидность.

Чтобы проверить документ на валидность, вы можете использовать сценарий проверки на валидность, приведенный в "Отображение XML-документов с использованием сценариев объектной модели документа" в разделе "Проверка валидности XML-документа". Вы можете прочесть приведенные в этом разделе указания сейчас, чтобы иметь возможность осуществлять проверку на валидность создаваемых вами XML-документов.

Добавление DTD

Объявление типа документа представляет собой блок XML-разметки, который вы должны добавить в пролог валидного XML-документа. Он может располагаться в любом месте пролога – вне другой разметки – после XML-объявления, как показано на рисунке 5.1. (Напомним, что если вы включаете XML-объявление, оно должно располагаться в начале документа.)


Рис. 5.1.

Объявление типа документа определяет структуру документа. Если вы открываете документ, не содержащий объявления типа, в Internet Explorer 5, процессор Internet Explorer 5 всего лишь осуществляет проверку документа на корректность формы составления. Если же вы открываете документ, содержащий объявление типа документа, процессор Internet Explorer 5 будет проверять документ на валидность вместе с проверкой на корректность формы составления, так что ваш документ должен отвечать всем имеющимся декларациям в объявлении типа документа. Так, вы не сможете включить в документ какие-либо элементы или атрибуты, если вы не объявили их в объявлении типа документа. Каждый элемент и атрибут, который вы включаете, должен соответствовать спецификации (например, допустимости применения данного содержимого элемента или типа атрибута), выраженной в соответствующем объявлении.

Примечание. Процессор Internet Explorer 5 проверяет документ на валидность только в том случае, если вы открываете документ через HTML Web-страницу (с использованием техники, с которой вы познакомитесь в "Отображение XML-документов с использованием связывания данных" и "Отображение XML-документов с использованием сценариев объектной модели документа" ). Если вы открываете XML-документ непосредственно в Internet Explorer 5, процессор будет проверять документ (включая любое объявление типа документа, которое он содержит) на корректность формы составления, но не будет проверять документ на валидность, даже если он содержит объявление типа документа.

Максим Попов
Максим Попов

Почему при использовании скриптов, приведенных в курсе Основы XML

лекция Лекция 8: 

Отображение XML-документов с использованием связывания данных

не происходит связывания XLM документа с HTML?

Отображаются пустые поля. Браузер IE11

Владислав Нагорный
Владислав Нагорный

Подскажите, пожалуйста, планируете ли вы возобновление программ высшего образования? Если да, есть ли какие-то примерные сроки?

Спасибо!

Зарина Каримова
Зарина Каримова
Казахстан, Алматы, Гимназия им. Ахмета Байтурсынова №139, 2008
Akiyev Begench
Akiyev Begench
Беларусь, Полоцк, полоцкий государственный университет