Введение
Язык схем XML W3C
XSD (XML Schema Definition), рекомендация Консорциума Всемирной паутины (W3C), определяет, как формально описать элементы в документе расширяемого языка разметки (XML). Программисты могут использовать его для проверки каждого фрагмента содержимого в документе, чтобы убедиться в его соответствии описанию элемента, в котором он содержится. Как и все языки схем XML, XSD позволяет задать набор правил, которым должен соответствовать документ XML, чтобы считаться "валидным" согласно данной схеме. Однако, в отличие от большинства других языков схем, XSD также был разработан с целью, чтобы определение валидности документа приводило к формированию набора информации, соответствующей конкретным типам данных. Такой информационный набор после валидации может быть полезен при разработке программного обеспечения для обработки документов XML.
История
XML Schema, опубликованный в качестве рекомендации W3C в мае 2001 года, является одним из нескольких языков схем XML. Он стал первым отдельным языком схем для XML, получившим статус рекомендации W3C. Из-за путаницы между XML Schema как конкретной спецификацией W3C и использованием того же термина для обозначения языков схем в целом, некоторые представители сообщества пользователей называли этот язык WXS – аббревиатурой от W3C XML Schema, а другие – XSD, аббревиатурой от XML Schema Definition. В версии 1.1 W3C принял XSD в качестве предпочтительного названия, и это название используется в данной статье. В приложении со ссылками спецификация XSD признает влияние DTD и других ранних разработок в области XML-схем, таких как DDML, SOX, XML Data и XDR. В ней были заимствованы элементы из каждого из этих предложений, но она также представляет собой компромисс между ними. Из этих языков XDR и SOX продолжали использоваться и поддерживаться в течение некоторого времени после публикации XML Schema. Ряд продуктов Microsoft поддерживали XDR до выпуска MSXML 6.0 (который отказался от XDR в пользу XML Schema) в декабре 2006 года. Компания Commerce One, Inc. поддерживала свой язык схемы SOX до объявления банкротства в конце 2004 года. Наиболее заметными возможностями XSD, отсутствующими в родных определениях типа документа (DTD) XML, являются поддержка пространств имен и типов данных, то есть возможность определять содержимое элементов и атрибутов как содержащее значения, такие как целые числа и даты, а не произвольный текст. Спецификация XSD 1.0 была первоначально опубликована в 2001 году, а в 2004 году вышло второе издание для исправления большого количества ошибок. XSD 1.1 получил статус рекомендации W3C в апреле 2012 года.
Схемы и документы по схемам
С технической точки зрения, схема — это абстрактный набор метаданных, состоящий из набора компонентов схемы: в основном, деклараций элементов и атрибутов, а также определений сложных и простых типов. Эти компоненты обычно создаются путем обработки набора документов схемы, содержащих определения исходного языка этих компонентов. Однако в обиходе документ схемы часто называют просто схемой. Документы схемы организованы по пространствам имен: все именованные компоненты схемы принадлежат целевому пространству имен, которое является свойством всего документа схемы. Документ схемы может включать другие документы схемы для того же пространства имен и импортировать документы схемы для другого пространства имен. При валидации экземпляра документа на соответствие схеме (процесс, известный как проверка), схема, используемая для валидации, может быть передана в механизм валидации в качестве параметра или указана непосредственно в документе экземпляра с помощью двух специальных атрибутов: `xsi:schemaLocation` и `xsi:noNamespaceSchemaLocation`. (Последний механизм требует, чтобы клиент, инициирующий валидацию, доверял документу настолько, чтобы быть уверенным в том, что валидация выполняется по правильной схеме. "xsi" — общепринятый префикс для пространства имен "http://www.w3.org/2001/XMLSchema-instance".) Документы XML-схемы обычно имеют расширение файла ".xsd". Уникальный тип интернет-медиа для XSD пока не зарегистрирован, поэтому следует использовать "application/xml" или "text/xml" в соответствии с RFC 3023.
Вторичное использование XML-схемы
Основная причина определения XML-схемы — формально описать XML-документ, однако полученная схема имеет множество других применений, выходящих за рамки простой валидации.
Создание кода
Схема может быть использована для генерации кода, именуемого XML Data Binding. Этот код позволяет рассматривать содержимое XML-документов как объекты в программной среде.
Создание документации по структуре XML-файлов
Схема может быть использована для создания документации, удобной для чтения человеком, описывающей структуру XML-файла; это особенно полезно, если авторы использовали элементы аннотаций. Хотя формального стандарта для генерации документации не существует, доступно несколько инструментов, таких как таблица стилей Xs3p, которые позволяют создавать высококачественную, легко читаемую HTML-документацию и печатные материалы.
Версия 1.1
XSD 1.1 получил статус Рекомендации W3C в апреле 2012 года, что означает его утверждение в качестве спецификации W3C. Значительными новыми возможностями XSD 1.1 являются:
Возможность определения утверждений относительно содержимого документа с использованием выражений XPath 2.0 (идея, заимствованная из Schematron). Возможность выбора типа, по которому будет выполняться проверка элемента, на основе значений атрибутов этого элемента ("условное присвоение типа"). Ослабление ограничений, согласно которым явные элементы в модели содержимого не должны совпадать с подстановочными знаками (wildcards), также разрешенными в модели. Возможность определения подстановочных знаков (как для элементов, так и для атрибутов), которые применяются ко всем типам в схеме, обеспечивая единую политику расширяемости для всех них. До публикации проекта Рекомендации XSD 1.1 также предлагалось добавить новый числовой тип данных precisionDecimal. Однако это предложение вызвало споры и было отклонено на поздней стадии разработки спецификации.