Введение

Описание типа XML-документа. XML-схемы в целом.

XML-схема – это описание типа XML-документа, обычно выраженное в виде ограничений на структуру и содержание документов этого типа, помимо основных синтаксических ограничений, налагаемых самим XML. Эти ограничения обычно выражаются с использованием комбинации грамматических правил, определяющих порядок элементов, логических условий, которым должно соответствовать содержимое, типов данных, определяющих содержимое элементов и атрибутов, а также более специализированных правил, таких как ограничения уникальности и ссылочной целостности. Существуют языки, разработанные специально для описания XML-схем. Язык определения типа документа (DTD), являющийся частью спецификации XML, представляет собой язык схемы с относительно ограниченными возможностями, но также имеющий и другие применения в XML, помимо описания схем. Два более выразительных языка XML-схем, широко используемых в настоящее время, – XML Schema (с заглавной буквы S) и RELAX NG. Механизм сопоставления XML-документа со схемой зависит от используемого языка схемы. Сопоставление может быть выполнено с помощью разметки непосредственно в XML-документе или внешними средствами. XML Schema Definition обычно называют XSD.

Валидация

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

Недостатки

W3C XML Schema сложна и трудна для изучения, хотя это отчасти связано с тем, что она пытается выполнять функции, выходящие за рамки простой валидации (см. PSVI). Написание на XML является преимуществом, но в некоторых аспектах и недостатком. Язык XML Schema W3C, в частности, может быть весьма многословным, в то время как DTD может быть лаконичным и относительно легко редактируемым. Кроме того, формальный механизм WXS для связывания документа со схемой может представлять потенциальную угрозу безопасности. Для валидаторов WXS, переходящих по URI к произвольному сетевому ресурсу, существует риск получения вредоносного содержимого. W3C XML Schema не реализует большинство возможностей DTD по предоставлению элементов данных в документ. Хотя возможность W3C XML Schema добавлять атрибуты по умолчанию к элементам является преимуществом, она также имеет и недостатки. Это означает, что XML-файл может оказаться непригодным для использования без своей схемы, даже если документ успешно проходит валидацию по этой схеме. По сути, все пользователи такого XML-документа должны также реализовывать спецификацию W3C XML Schema, что исключает использование минималистичных или устаревших XML-парсерoв. Это также может замедлить обработку документа, поскольку процессору потенциально потребуется загрузить и обработать второй XML-файл (схему); однако схема обычно кэшируется, поэтому затраты возникают только при первом использовании.

Поддержка инструментов

WXS поддержка реализована во многих крупных пакетах для разбора XML. Xerces и базовая библиотекa .NET Framework поддерживают валидацию WXS.

RELAX NG

RELAX NG предоставляет большинство преимуществ, которые W3C XML Schema имеет перед DTD.