Схема XML (W3C) - XML Schema (W3C)

Схема XML (W3C)
Расширение имени файла
.xsd
Тип интернет-СМИ
приложение / xml, текст / xml
РазработанКонсорциум World Wide Web
Тип форматаЯзык схемы XML
Расширен сXML
Стандарт1.0, Часть 1 Структуры (Рекомендация),

1.0, часть 2 Типы данных (рекомендация),
1.1, Часть 1 Структуры (Рекомендация),

1.1, Часть 2 Типы данных (Рекомендация)

XSD (Определение схемы XML), рекомендация Консорциума World Wide Web (W3C ), определяет, как формально описывать элементы на расширяемом языке разметки (XML ) документ. Программисты могут использовать его для проверки каждой части содержимого элемента в документе. Они могут проверить, соответствует ли он описанию элемента, в котором размещен.[1]

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

История

Схема XML, опубликовано как Рекомендация W3C в мае 2001 г.,[2] один из нескольких Языки схемы XML. Это был первый отдельный язык схем для XML чтобы получить статус Рекомендации W3C. Из-за путаницы между XML-схемой как конкретной спецификацией W3C и использованием того же термина для описания языков схем в целом некоторые части сообщества пользователей называли этот язык WXS, инициализм для XML-схемы W3C, в то время как другие называли его XSD, инициализм для определения схемы XML.[3][4] В версии 1.1 W3C выбрал XSD в качестве предпочтительного имени, и это имя используется в этой статье.

В приложении ссылок спецификация XSD признает влияние DTD и другие ранние попытки создания схемы XML, такие как DDML, SOX, XML-данные и XDR. Он заимствовал особенности каждого из этих предложений, но также является компромиссом между ними. Из этих языков XDR и SOX продолжали использоваться и поддерживаться некоторое время после публикации XML Schema. Номер Microsoft продукты поддерживали XDR до выпуска MSXML 6.0 (который отказался от XDR в пользу схемы XML) в декабре 2006 года.[5] Commerce One, Inc. поддерживала свой язык схемы SOX до объявления банкротства в конце 2004 года.

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

Спецификация 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.

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

Основные компоненты схемы:

  • Объявления элементов, которые определяют свойства элементов. К ним относятся имя элемента и целевое пространство имен. Важным свойством является тип элемента, который ограничивает, какие атрибуты и дочерние элементы может иметь элемент. В XSD 1.1 тип элемента может зависеть от значений его атрибутов. Элемент может принадлежать к группе замещения; если элемент E находится в группе подстановки элемента H, то везде, где схема позволяет H появиться, E может появиться на его месте. Элементы могут иметь ограничения целостности: ограничения уникальности, определяющие, что конкретные значения должны быть уникальными в поддереве с корнем в элементе, и ссылочные ограничения, определяющие, что значения должны соответствовать идентификатору некоторого другого элемента. Объявления элементов могут быть глобальными или локальными, что позволяет использовать одно и то же имя для несвязанных элементов в разных частях документа-экземпляра.
  • Объявления атрибутов, которые определяют свойства атрибутов. Снова свойства включают имя атрибута и целевое пространство имен. Тип атрибута ограничивает значения, которые может принимать атрибут. Объявление атрибута может также включать значение по умолчанию или фиксированное значение (которое в таком случае является единственным значением, которое может принимать атрибут).
  • Простые и сложные типы. Они описаны в следующем разделе.
  • Модельная группа и группа атрибутов определения. По сути, это макросы: именованные группы элементов и атрибутов, которые можно повторно использовать во многих определениях различных типов.
  • An использование атрибута представляет связь сложного типа и объявления атрибута и указывает, является ли атрибут обязательным или необязательным, когда он используется в этом типе.
  • An элементарная частица аналогично представляет связь сложного типа и объявления элемента и указывает минимальное и максимальное количество раз, которое элемент может появляться в содержимом. Помимо элементарных частиц, модели содержимого могут включать модельная группа частицы, которые действуют как нетерминалы в грамматике: они определяют единицы выбора и повторения в последовательности разрешенных элементов. К тому же, подстановочный знак разрешены частицы, которые допускают набор различных элементов (возможно, любой элемент, если он находится в определенном пространстве имен).

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

Типы

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

XSD предоставляет набор из 19 примитивные типы данных (AnyURI, base64Binary, логический, Дата, dateTime, десятичная дробь, двойной, продолжительность, плавать, hexBinary, gDay, gMonth, gMonthDay, gYear, gYearMonth, ОБОЗНАЧЕНИЕ, QName, нить, и время). Это позволяет создавать новые типы данных из этих примитивов с помощью трех механизмов:

  • ограничение (уменьшение набора допустимых значений),
  • список (допускающий последовательность значений) и
  • union (с возможностью выбора значений из нескольких типов).

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

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

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

  • Содержимое только для элементов, в котором не может отображаться текст (кроме пробелов или текста, заключенного в дочерний элемент)
  • простой контент, в котором разрешен текст, но запрещены дочерние элементы
  • пустой контент, в котором не разрешены ни текст, ни дочерние элементы
  • смешанный контент, который позволяет отображать как элементы, так и текст

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

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

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

  • Словарь (названия элементов и атрибутов)
  • Модель содержания (отношения и структура)
  • Типы данных

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

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

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

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

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

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

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

Критика

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

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

  • Он слишком сложен (спецификация составляет несколько сотен страниц на очень техническом языке), поэтому неспециалистам трудно использовать его, но многим неспециалистам нужны схемы для описания форматов данных. Сама рекомендация W3C чрезвычайно трудна для чтения. Большинство пользователей находят Учебник по XML-схеме W3Cs намного проще понять.
  • XSD не имеет формальной математической спецификации. (Это затрудняет рассуждение о схемах, например, чтобы доказать, что изменение схемы обратно совместимо.)
  • В языке много сюрпризов, например, ограничение элементов работает иначе, чем ограничение атрибутов.

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

  • XSD предлагает очень слабую поддержку неупорядоченного содержимого.
  • XSD не может требовать определенного корневой элемент (поэтому для проверки даже самых простых документов требуется дополнительная информация).
  • При описании смешанное содержание, символьные данные не могут быть ограничены каким-либо образом (нельзя указать даже набор допустимых символов).
  • Объявления содержимого и атрибутов не могут зависеть от атрибутов или контекста элемента (это также было указано как центральная проблема DTD).
  • это не на 100% самоописание (в качестве тривиального примера см. предыдущий пункт), хотя это было первоначальным требованием к дизайну.
  • По умолчанию нельзя указывать отдельно от объявлений (это затрудняет создание семейств схем, которые отличаются только значениями по умолчанию); параметры элемента по умолчанию могут быть только символьные данные (не содержащие разметки).

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

  • Хотя технически он соответствует пространству имен, он, похоже, не следует духу пространства имен (например, «неквалифицированные местные жители»).
  • XSD 1.0 не предоставляет никаких возможностей для утверждения, что значение или наличие одного атрибута зависит от значений или наличия других атрибутов (так называемые ограничения совместной встречаемости). Это было исправлено в XSD 1.1.
  • Набор предлагаемых типов данных XSD весьма произвольный.[10]
  • Две задачи проверки и дополнения (добавление информации о типе и значений по умолчанию) должны выполняться отдельно.

Версия 1.1

XSD 1.1 стал Рекомендация W3C в Апрель 2012 г., что означает, что это утвержденная спецификация W3C.

Важные новые функции XSD 1.1:

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

До проекта Предлагаемой рекомендации 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 критика и продвижение РЕЛАКС НГ как альтернатива, 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. ^ Дэвид Уэббер Официальный документ сравнения и аналитики OASIS от августа 2008 г., http://www.oasis-open.org/committees/download.php/29164/White%20Paper%20on%20CAM%20and%20XSD.pdf
  10. ^ Этот момент усилен Уче Огбуджи. Подробнее о войне классов XML - Блог O'Reilly ONLamp

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

  • Окончательная схема XML, Присцилла Уолмсли, Прентис-Холл, 2001 г., ISBN  0-13-065567-8
  • Схема XML, Эрик ван дер Влист, О'Рейли, 2001, ISBN  0-596-00252-1
  • Помощник по XML-схеме, Нил Брэдли, Эддисон-Уэсли, 2003, ISBN  0-321-13617-9
  • Профессиональные схемы XML, Джон Дакет и др., Wrox Press, 2001, ISBN  1-86100-547-4
  • Схемы XML, Люсинда Дайкс и др., Sybex, ISBN  0-7821-4045-9

внешняя ссылка

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

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

Другой