Из Википедии, бесплатной энциклопедии
  (Перенаправлено из XML-схемы W3C )
Перейти к навигации Перейти к поиску

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

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

История [ править ]

XML Schema , опубликованная как рекомендация 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-Data и XDR . Он заимствовал особенности каждого из этих предложений, но также является компромиссом между ними. Из этих языков XDR и SOX продолжали использоваться и поддерживаться некоторое время после публикации XML-схемы. Ряд продуктов Microsoft поддерживал XDR до выпуска MSXML 6.0 (который отказался от XDR в пользу схемы XML) в декабре 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». -пример ".)

Документы схемы XML обычно имеют расширение имени файла ".xsd". Уникальный тип Интернет-носителя еще не зарегистрирован для XSD, поэтому следует использовать «application / xml» или «text / xml» в соответствии с RFC 3023.

Компоненты схемы [ править ]

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

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

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

Типы [ править ]

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

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

  • ограничение (уменьшение набора допустимых значений),
  • список (разрешающий последовательность значений) и
  • 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 чрезвычайно трудна для чтения. Большинство пользователей считают, что W3Cs XML Schema Primer намного проще для понимания.
  • 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 (идея заимствована из Schematron ).
  • Возможность выбора типа, по которому будет проверяться элемент, на основе значений атрибутов элемента («условное присвоение типа»).
  • Ослабление правил, согласно которым явные элементы в модели содержимого не должны соответствовать подстановочным знакам, также разрешенным моделью.
  • Возможность указывать подстановочные знаки (как для элементов, так и для атрибутов), которые применяются ко всем типам в схеме, так что все они реализуют одну и ту же политику расширяемости.

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

См. Также [ править ]

  • Список схем XML - список схем XML, используемых в Интернете, отсортированный по назначению.
  • RELAX NG - еще один язык схем XML (международный стандарт ISO), который часто используется с типами данных XSD.
  • Редактор XML-схемы - информация об инструментах XSD
  • Языки схем XML - сравнивает XSD с другими языками схем XML.
  • Уникальная атрибуция частиц
  • Каноническая модель

Ссылки [ править ]

  1. ^ " Definition 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» . Проверено 19 сентября 2010 .
  6. ^ Резюме Джеймса Кларка критики схемы XML и продвижение RELAX NG в качестве альтернативы, https://web.archive.org/web/20150316212413/http://www.imc.org/ietf-xml-use/mail- архив / 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 Companion , Нил Брэдли, Addison-Wesley, 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

  • XSD 1.0 Primer
  • Структуры XSD 1.0
  • XSD 1.0 Типы данных
  • Инструменты

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

  • Структуры XSD 1.1
  • XSD 1.1 Типы данных

Другой

  • Схема XML в Curlie
  • SPARQL2XQuery Преобразование схемы XML в OWL. Отображение схем XML и онтологий OWL-RDF / S.