stringtranslate.com

XML-схема (W3C)

XSD ( XML Schema Definition ), рекомендация Консорциума Всемирной паутины ( W3C ), определяет, как формально описывать элементы в документе Extensible Markup Language ( XML ). Он может использоваться программистами для проверки каждого фрагмента содержимого элемента в документе, чтобы убедиться, что он соответствует описанию элемента, в который он помещен. [1]

Как и все языки схем XML , XSD может использоваться для выражения набора правил, которым должен соответствовать документ XML, чтобы считаться «действительным» согласно этой схеме. Однако, в отличие от большинства других языков схем, XSD также был разработан с намерением, чтобы определение действительности документа создавало набор информации, соответствующей определенным типам данных . Такой набор данных после проверки может быть полезен при разработке программного обеспечения для обработки документов XML.

История

XML Schema , опубликованный в качестве рекомендации W3C в мае 2001 года, [2] является одним из нескольких языков схем XML . Это был первый отдельный язык схем для XML, получивший статус Рекомендации от W3C. Из-за путаницы между XML Schema как конкретной спецификацией W3C и использованием того же термина для описания языков схем в целом, некоторые части сообщества пользователей называли этот язык WXS , аббревиатура от W3C XML Schema, в то время как другие называли его XSD , аббревиатура от XML Schema Definition. [3] [4] В версии 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 года. [5] 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 Schema обычно имеют расширение имени файла ".xsd". Уникальный тип интернет-носителя пока не зарегистрирован для XSD, поэтому следует использовать "application/xml" или "text/xml" в соответствии с RFC 3023.

Компоненты схемы

Основными компонентами схемы являются:

Другие более специализированные компоненты включают аннотации, утверждения, нотации и компонент схемы , который содержит информацию о схеме в целом.

Типы

Простые типы (также называемые типами данных) ограничивают текстовые значения, которые могут появляться в элементе или атрибуте. Это одно из наиболее существенных отличий XML Schema от DTD. Например, атрибут может быть ограничен только допустимой датой или десятичным числом.

XSD предоставляет набор из 19 примитивных типов данных ( anyURI, base64Binary, boolean, date, dateTime, decimal, double, duration, float, hexBinary, gDay, gMonth, gMonthDay, gYear, gYearMonth, NOTATION, QName, string, и time). Он позволяет создавать новые типы данных из этих примитивов с помощью трех механизмов:

Двадцать пять производных типов определены в самой спецификации, а дополнительные производные типы могут быть определены пользователями в их собственных схемах.

Механизмы, доступные для ограничения типов данных, включают возможность указания минимальных и максимальных значений, регулярных выражений, ограничений на длину строк и ограничений на количество цифр в десятичных значениях. XSD 1.1 снова добавляет утверждения, возможность указания произвольного ограничения с помощью выражения XPath 2.0 .

Сложные типы описывают разрешенное содержимое элемента, включая его элементы и текстовые дочерние элементы и его атрибуты. Определение сложного типа состоит из набора использований атрибутов и модели содержимого. Разновидности модели содержимого включают:

Сложный тип может быть получен из другого сложного типа путем ограничения (запрещая некоторые элементы, атрибуты или значения, которые допускает базовый тип) или путем расширения (разрешая появление дополнительных атрибутов и элементов). В XSD 1.1 сложный тип может быть ограничен утверждениями — выражениями XPath 2.0, оцениваемыми по содержимому, которое должно оцениваться как истинное.

Информационный набор после проверки схемы

После проверки на основе XML Schema можно выразить структуру и содержание XML-документа в терминах модели данных , которая подразумевалась во время проверки. Модель данных XML Schema включает:

Этот набор информации называется Post-Schema-Validation Infoset (PSVI). PSVI дает допустимому XML-документу его «тип» и облегчает обработку документа как объекта, используя парадигмы объектно-ориентированного программирования (ООП).

Вторичное использование XML-схем

Основной причиной определения XML-схемы является формальное описание XML-документа; однако полученная схема имеет ряд других применений, выходящих за рамки простой проверки.

Генерация кода

Схему можно использовать для генерации кода, называемого XML Data Binding . Этот код позволяет обрабатывать содержимое XML-документов как объекты в среде программирования.

Создание документации по структуре XML-файла

Схему можно использовать для создания читаемой человеком документации структуры файла XML; это особенно полезно, когда авторы использовали элементы аннотации. Не существует формального стандарта для создания документации, но доступен ряд инструментов, таких как таблица стилей Xs3p, которые будут создавать высококачественные читаемые HTML и печатные материалы.

Критика

Хотя XML Schema успешна в том, что она широко принята и в значительной степени достигает того, для чего она была создана, она стала предметом большой критики, возможно, более резкой, чем любая другая Рекомендация W3C. Хорошие резюме критики предоставлены Джеймсом Кларком [6] , Андерсом Мёллером и Михаэлем Шварцбахом [7], Риком Джеллиффом [8] и Дэвидом Уэббером [9] .

Общие проблемы:

Практические ограничения выразительности:

Технические проблемы:

Версия 1.1

XSD 1.1 стал рекомендацией W3C в апреле 2012 года, что означает, что он является одобренной спецификацией W3C.

Важные новые возможности XSD 1.1:

До проекта Proposed Recommendation, XSD 1.1 также предлагал добавление нового числового типа данных, precisionDecimal. Это оказалось спорным и поэтому было исключено из спецификации на поздней стадии разработки.

Смотрите также

Ссылки

  1. ^ "Определение XSD (Определение схемы XML)" TechTarget, получено 10 июня 2014 г.
  2. ^ «XML и семантическая паутина. Хронология стандартов W3C» (PDF) . 2012-02-04.
  3. ^ См. схему - W3C
  4. ^ См. W3C XML Schema Definition Language (XSD) 1.1 Часть 1: Структуры
  5. ^ "Удаление поддержки схемы XDR в MSXML 6.0" . Получено 2010-09-19 .
  6. ^ Джеймс Кларк , резюме критики XML-схемы и продвижение RELAX NG в качестве альтернативы, https://web.archive.org/web/20150316212413/http://www.imc.org/ietf-xml-use/mail-archive/msg00217.html
  7. ^ Андерс Мёллер и Михаэль И. Шварцбах представляют «Проблемы с XML-схемой», http://cs.au.dk/~amoeller/XML/schemas/xmlschema-problems.html
  8. ^ Критика Рика Джеллиффа в мае 2009 г., https://web.archive.org/web/20090516232816/http://broadcast.oreilly.com/2009/05/w3c-please-put-xsd-11-on-hold.html
  9. ^ Дэвид Уэббер , «Проект Белой книги по CAM v1.1 и XSD Schema V1.1 Insights», 1 сентября 2008 г.
  10. ^ Эту точку зрения развивает Уче Огбуджи Подробнее о классовой борьбе в XML - O'Reilly ONLamp Blog

Дальнейшее чтение

Внешние ссылки

Спецификация W3C XML Schema 1.0

Спецификация W3C XML Schema 1.1

Другой