Схема XML

редактировать
Описание типа XML-документа

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

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

. Механизм связывания XML-документа со схемой зависит от языка схемы. Связь может быть достигнута посредством разметки внутри самого XML-документа или с помощью каких-либо внешних средств.

Содержание

  • 1 Проверка
  • 2 Языки
    • 2.1 Определения типов документов
      • 2.1.1 Поддержка инструментов
    • 2.2 W3C XML Schema
      • 2.2.1 Преимущества перед DTD
      • 2.2. 2 Общность с RELAX NG
      • 2.2.3 Преимущества перед RELAX NG
      • 2.2.4 Недостатки
      • 2.2.5 Поддержка инструментов
    • 2.3 RELAX NG
      • 2.3.1 Преимущества перед XML-схемой W3C
      • 2.3.2 Недостатки
    • 2.4 Schematron
      • 2.4.1 Преимущества
      • 2.4.2 Недостатки
      • 2.4.3 Поддержка инструментов
    • 2.5 Язык маршрутизации пространства имен (NRL)
  • 3 Терминология
  • 4 Варианты разработки схемы
  • 5 См. Также
  • 6 Ссылки
  • 7 Внешние ссылки

Проверка

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

. Проверка экземпляра документа на соответствие схеме может рассматриваться как концептуально отдельная операция от синтаксического анализа XML. На практике, однако, многие средства проверки схемы интегрированы с анализатором XML.

Языки

Есть несколько разных языков, доступных для определения схемы XML. У каждого языка есть свои сильные и слабые стороны.

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

Существуют исторические и текущие языки схемы XML:

ЯзыкСокращение.ВерсииАвторитет
Язык ограничений в XML CLiX2005Независимый
Функция описания содержимого документа для XML, RDF frameworkDCDv1.0 (1998)W3C (Примечание)
Язык разметки определения документа DDMLv0 (1999)W3C (Примечание)
Описание структуры документа DSD2002, 2005BRICS (несуществующий)
Определение типа документа DTD1986 (SGML)ISO
2008 (XML)ISO / IEC
Язык маршрутизации пространства имен NRL2003Независимый
язык диспетчеризации валидации на основе пространства имен NVDL2006ISO / IEC
Механизм сборки содержимого CAM2007OASIS
Регулярный язык для XML следующего поколения RELAX NG, RelaxNG2001, Compact Syntax (2002)OASIS
v1 (2003), v1 Compact Syntax (2006), v2 (2008)ISO / IEC
Схема для объектно-ориентированного XML SOX??
Schematron Н / Д2006ISO / IEC
Сокращение XML-данных XDR??
ASN.1 Правила кодирования XML XER??
Схема XML WXS, XSD1.0 (2004), 1.1 (2012)W3C

Основные (см. Также языки, одобренные ISO 19757 ) описаны ниже.

Хотя доступно несколько языков схемы, основными тремя языками являются Определения типов документов, Схема XML W3C и RELAX NG. У каждого языка есть свои преимущества и недостатки.

Определения типов документов

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

DTD, возможно, являются наиболее широко поддерживаемым языком схем для XML. Поскольку DTD являются одними из самых ранних языков схем для XML, определенных до того, как XML даже получил поддержку пространств имен, они широко поддерживаются. Внутренние DTD часто поддерживаются в процессорах XML; внешние DTD поддерживаются реже, но незначительно. Большинство крупных анализаторов XML, поддерживающих несколько технологий XML, также будут поддерживать DTD.

XML-схема W3C

Преимущества перед DTD

Функции, доступные в XSD, которые отсутствуют в DTD, включают:

  • Имена элементов и атрибутов с учетом пространства имен
  • Ограничения («простые типы») могут быть определены для текстового содержимого элементов и атрибутов, например, чтобы указать, что они являются числовыми или содержат даты. В качестве стандарта предоставляется широкий набор простых типов, и из них могут быть получены дополнительные определяемые пользователем типы, например, путем указания диапазонов значений, регулярных выражений или перечисления разрешенных значений.
  • Средства для определения Ограничения уникальности и ссылочная целостность являются более мощными: в отличие от ограничений ID и IDREF в DTD, они могут быть привязаны к любой части документа, могут относиться к любому типу данных, могут применяться как к элементу, так и к содержимому атрибута, и могут быть множественными. -part (например, комбинация имени и фамилии должна быть уникальной).
  • Многие требования, которые традиционно обрабатываются с использованием сущностей параметров в DTD, явно поддерживаются в XSD: примеры включают группы подстановки, которые позволяют имя (например, «блок» или «встроенный») для ссылки на целый класс элементов; сложные типы, которые позволяют использовать одну и ту же модель контента (или адаптировать путем ограничения или расширения) для нескольких элементов; а также группы моделей и группы атрибутов, которые позволяют определять общие части компонентных моделей в одном месте и повторно использовать.
  • XSD 1.1 добавляет возможность определять произвольные утверждения (с использованием выражений XPath) как ограничения на содержимое элемента.

Схемы XSD обычно записываются как XML-документы, поэтому можно использовать знакомые инструменты редактирования и преобразования.

Помимо проверки, XSD позволяет аннотировать экземпляры XML с помощью информации о типе (информационный набор после проверки схемы (PSVI) ), который разработан, чтобы упростить управление экземпляром XML. в прикладных программах. Это может быть путем сопоставления типов, определенных XSD, с типами на языке программирования, например Java («привязка данных»), или путем обогащения системы типов языков обработки XML, таких как XSLT и XQuery (известное как «понимание схемы»).

Общность с RELAX NG

RELAX NG и XML-схема W3C допускают аналогичные механизмы специфичности. Оба допускают определенную степень модульности в своих языках, включая, например, разделение схемы на несколько файлов. И оба они определены или могут быть определены на языке XML.

Преимущества перед RELAX NG

RELAX NG не имеет аналогов PSVI. В отличие от XML-схемы W3C, RELAX NG был разработан таким образом, что проверка и расширение (добавление информации о типе и значений по умолчанию) разделены.

Схема XML W3C имеет формальный механизм для присоединения схемы к документу XML, в то время как RELAX NG намеренно избегает таких механизмов по соображениям безопасности и взаимодействия.

RELAX NG не имеет возможности применять данные атрибутов по умолчанию к списку атрибутов элемента (т. Е. Изменять набор информации XML), в то время как это делает схема W3C XML. Опять же, этот дизайн является преднамеренным и заключается в разделении проверки и дополнения.

XML-схема W3C имеет встроенную богатую встроенную систему «простого типа» (xs: number, xs: date и т. Д., А также вывод пользовательских types), в то время как RELAX NG имеет чрезвычайно упрощенный вариант, поскольку он предназначен для использования библиотек типов, разработанных независимо от RELAX NG, а не для роста самостоятельно. Некоторые считают это недостатком. На практике для схемы RELAX NG обычно используются предопределенные «простые типы» и «ограничения» (шаблон, maxLength и т. Д.) Схемы W3C XML.

В схеме XML W3C может быть выражено определенное количество или диапазон повторений шаблонов, тогда как это практически невозможно указать в RELAX NG (или ).

Недостатки

XML-схема W3C сложна и трудна для изучения, хотя отчасти это связано с тем, что она пытается сделать больше, чем простую проверку (см. PSVI ).

Хотя запись в XML является преимуществом, в некотором смысле это также и недостаток. В частности, язык W3C XML Schema может быть довольно многословным, тогда как DTD может быть кратким и относительно легко редактируемым.

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

XML-схема W3C не реализует большую часть способность DTD предоставлять элементы данных в документ.

Хотя способность схемы W3C XML добавлять атрибуты по умолчанию к элементам является преимуществом, в некоторых отношениях она также является недостатком. Это означает, что XML-файл может быть недоступен при отсутствии его схемы, даже если документ будет проверяться на соответствие этой схеме. Фактически, все пользователи такого XML-документа должны также реализовать спецификацию W3C XML Schema, тем самым исключая минималистичные или старые XML-анализаторы. Это также может замедлить обработку документа, поскольку процессор потенциально должен загрузить и обработать второй файл XML (схему); однако схема обычно затем кэшируется, поэтому затраты возникают только при первом использовании.

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

Поддержка WXS существует в ряде больших пакетов синтаксического анализа XML. Xerces и библиотека базовых классов .NET Framework обеспечивают поддержку проверки WXS.

RELAX NG

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

Преимущества перед схемой W3C XML

Хотя язык RELAX NG может быть написан на XML, он также имеет эквивалентную форму, которая больше похожа на DTD, но с большей определяющей способностью. Эта форма известна как компактный синтаксис. Инструменты могут легко конвертировать между этими формами без потери функций или даже без комментариев. Даже произвольные элементы, указанные между XML-элементами RELAX NG, можно преобразовать в компактную форму.

RELAX NG обеспечивает очень надежную поддержку неупорядоченного содержимого. То есть это позволяет схеме утверждать, что последовательность шаблонов может появляться в любом порядке.

RELAX NG также позволяет использовать недетерминированные модели контента. Это означает, что RELAX NG позволяет специфицировать последовательность, подобную следующей:

Когда валидатор обнаруживает что-то, что соответствует «нечетному» шаблону, неизвестно, является ли это необязательной последней «нечетной» ссылкой или просто одной из последовательность zeroOrMore без предварительного просмотра данных. RELAX NG допускает такую ​​спецификацию. Схема W3C XML требует, чтобы все ее последовательности были полностью детерминированными, поэтому механизмы, подобные приведенным выше, должны быть либо указаны другим способом, либо полностью опущены.

RELAX NG позволяет обрабатывать атрибуты как элементы в моделях содержимого. В частности, это означает, что можно предоставить следующее:

falsetrue

В этом блоке указано, что элемент some_element должен иметь атрибут с именем has_name. Этот атрибут может принимать в качестве значений только истину или ложь, и если это истина, первым дочерним элементом элемента должно быть «имя», в котором хранится текст. Если «name» не обязательно должно быть первым элементом, тогда выбор может быть заключен в элемент «interleave» вместе с другими элементами. Порядок спецификации атрибутов в RELAX NG не имеет значения, поэтому этот блок не обязательно должен быть первым блоком в определении элемента.

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

Спецификация RELAX NG перечисляет только два встроенных типа (строка и токен), но позволяет определять многие другие. Теоретически отсутствие определенного списка позволяет процессору поддерживать типы данных, которые сильно зависят от предметной области.

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

Недостатки

Большинство недостатков RELAX NG описаны в разделе о преимуществах схемы W3C XML перед RELAX NG.

Хотя способность RELAX NG поддерживать определяемые пользователем типы данных полезна, недостатком ее является наличие только двух типов данных, на которые пользователь может положиться. Теоретически это означает, что использование схемы RELAX NG в нескольких валидаторах требует либо предоставления этих типов данных, определенных пользователем, этому валидатору, либо использования только двух основных типов. Однако на практике большинство процессоров RELAX NG поддерживают набор типов данных W3C XML Schema.

Schematron

Schematron - довольно необычный язык схем. В отличие от трех основных, он определяет синтаксис XML-файла как список правил на основе XPath. Если документ соответствует этим правилам, значит, он действителен.

Преимущества

Благодаря своей природе, основанной на правилах, Schematron имеет очень сильную специфику. Может потребоваться, чтобы содержимое элемента контролировалось одним из его братьев и сестер. Он также может запрашивать или требовать, чтобы у корневого элемента, независимо от того, каким элементом он является, были определенные атрибуты. Он даже может указывать необходимые отношения между несколькими файлами XML.

Недостатки

Хотя Schematron хорош в реляционных конструкциях, его способность указывать базовую структуру документа, то есть, какие элементы могут идти куда, приводит к очень многословной схеме.

Типичный способ решить эту проблему - объединить Schematron с RELAX NG или W3C XML Schema. Для обоих языков доступно несколько процессоров схем, поддерживающих эту комбинированную форму. Это позволяет правилам Schematron указывать дополнительные ограничения для структуры, определенной W3C XML Schema или RELAX NG.

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

Эталонная реализация Schematron на самом деле является преобразованием XSLT, которое преобразует документ Schematron в XSLT, который проверяет XML-файл. Таким образом, потенциальный набор инструментов Schematron - это любой процессор XSLT, хотя libxml2 предоставляет реализацию, не требующую XSLT. Средство проверки нескольких схем Sun Microsystems для Java имеет надстройку, которая позволяет ему проверять схемы RELAX NG, в которые встроены правила Schematron.

Язык маршрутизации пространства имен (NRL)

Технически это не язык схемы. Его единственная цель - направить части документов в отдельные схемы на основе пространства имен обнаруженных элементов. NRL - это просто список пространств имен XML и путь к схеме, которой соответствует каждое из них. Это позволяет каждой схеме заниматься только определением своего собственного языка, а файл NRL направляет средство проверки схемы в правильный файл схемы на основе пространства имен этого элемента.

Этот формат XML не зависит от языка схемы и работает практически для любого языка схемы.

Терминология

Использование заглавных букв в слове схемы: существует некоторая путаница относительно того, когда использовать заглавное написание «Схема», а когда - строчное. Строчная форма является общим термином и может относиться к любому типу схемы, включая DTD, XML-схему (также известную как XSD), RELAX NG или другие, и всегда должна быть написана в нижнем регистре, за исключением случаев, когда она появляется в начале предложения. Форма «Схема» (с заглавной буквы), широко используемая в сообществе XML, всегда относится к схеме XML W3C.

Варианты разработки схемы

В центре внимания определения схемы находится структура и некоторая семантика документов. Однако проектирование схемы, как и проектирование баз данных, компьютерных программ и других формальных конструкций, также включает многие аспекты стиля, условностей и удобочитаемости. Подробное обсуждение проблем проектирования схемы можно найти, например, в Maler (1995) и DeRose (1997).

Согласованность
Одно очевидное соображение состоит в том, что теги и имена атрибутов должны использовать согласованные соглашения. Например, было бы необычно создать схему, в которой имена некоторых элементов являются camelCase, но другие используют подчеркивания для разделения частей имен или другие соглашения.
Четкие и мнемонические имена
Как и в других официальных языках, правильный выбор имен может помочь в понимании, даже если сами по себе имена не имеют формального значения. Назовите соответствующий тег "chapter", а не "tag37", это поможет читателю. В то же время возникает вопрос о выборе естественного языка. Схема, которая будет использоваться для документов Irish Gaelic, вероятно, будет использовать один и тот же язык для имен элементов и атрибутов, поскольку это будет язык, общий для редакторов и читателей.
Выбор тегов и атрибутов
Некоторая информация может легко «уместиться» либо в элементе, либо в атрибуте. Поскольку атрибуты не могут содержать элементы в XML, этот вопрос возникает только для компонентов, которые не имеют дополнительной подструктуры, о которой должен знать XML (атрибуты действительно поддерживают несколько токенов, таких как несколько значений IDREF, что можно рассматривать как небольшое исключение). Атрибуты обычно представляют информацию, связанную со всем элементом, в котором они встречаются, в то время как подэлементы вводят новую область видимости.
Текстовое содержимое
Некоторые схемы XML, особенно те, которые представляют различные виды документы, убедитесь, что все «текстовое содержимое» (грубо говоря, любая часть, которую можно было бы озвучить при чтении документа вслух) встречается как текст, а не в атрибутах. Однако есть много крайних случаев, когда это не выполняется: во-первых, есть XML-документы, которые не используют «естественный язык» вообще или только минимально, например, для телеметрии, создания векторной графики или математических формул и т. Д.. Во-вторых, такая информация, как постановка сцены в пьесах, номера стихов в классических произведениях и произведениях из Священного Писания, а также исправление или нормализация орфографии в транскрибированных произведениях, создают проблемы интерпретации, которые разработчики схем для таких жанров должны учитывать. 93>Новая схема XML может быть разработана с нуля или может повторно использовать некоторые фрагменты других схем XML. Все языки схем предлагают некоторые инструменты (например, включаюти управление модуляцией пространств имен) и рекомендуют повторно использовать, где это возможно. Различные части обширных и сложных схем Text Encoding Initiative также повторно используются в необычайно разнообразных других схемах.
Семантическая и синтаксическая
За исключением схемы, связанной с RDF, ни один язык схемы не выражает формально семантику, только структура и типы данных. Несмотря на то, что это идеал, включение допущений RDF очень плохо и не является рекомендацией в рамках разработки схем.

См. Также

Языки:

Ссылки

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

Последняя правка сделана 2021-06-22 06:40:58
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте