Из Википедии, свободной энциклопедии
Перейти к навигации Перейти к поиску

В вычислении , RELAX NG ( регулярный язык для XML следующего поколения ) представляет собой схему языка для XML -a RELAX NG схемы задает шаблон для структуры и содержания документа XML. Схема RELAX NG сама по себе является XML- документом, но RELAX NG также предлагает популярный компактный синтаксис, отличный от XML. [1] По сравнению с другими языками схем XML, RELAX NG считается относительно простым.

Он был определен в спецификации комитета по OASIS технического комитета RELAX NG в 2001 и 2002 годах, на основе Murata Makoto «s RELAX и Джеймс Кларк » s TREX , [2] [3] [4] , а также частью второй международной стандарт ISO / IEC 19757: Языки определения схем документов ( DSDL ). [5] [6] ISO / IEC 19757-2 был разработан ISO / IEC JTC1 / SC34 и опубликован в своей первой версии в 2003 году. [7]

Примеры схем [ править ]

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

<книга>  <страница> Это первая страница. </page>  <page> Это вторая страница. </page> </book>

Синтаксис XML [ править ]

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

<element  name = "book"  xmlns = "http://relaxng.org/ns/structure/1.0" >  <oneOrMore>  <element  name = "page" >  <text />  </element>  </oneOrMore> </ элемент>

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

<grammar  xmlns = "http://relaxng.org/ns/structure/1.0" >  <start>  <element  name = "book" >  <oneOrMore>  <ref  name = "page" />  </oneOrMore>  </ element >  </start>  <define  name = "page" >  <element  name = "page" >  <text />  </element>  </define> </grammar>

Компактный синтаксис [ править ]

Компактный синтаксис RELAX NG - это не-XML формат, вдохновленный расширенной формой Бэкуса-Наура и регулярными выражениями , разработанный так, что он может быть однозначно преобразован в его XML-аналог и обратно, с взаимно однозначным соответствием по структуре и значению, во многом так же, как Simple Outline XML (SOX) относится к XML . Он имеет много общих черт с синтаксисом DTD . Вот компактная форма вышеприведенной схемы:

книга элементов {  страница элемента { текст } + }  

С помощью именованных шаблонов это может быть сведено к:

start =  element book { page + }
page =  element page {  text  }

Компактный синтаксический анализатор RELAX NG будет рассматривать эти два как один и тот же шаблон.

Сравнение со схемой W3C XML [ править ]

Хотя спецификация RELAX NG была разработана примерно в то же время, что и спецификация W3C XML Schema , последняя была, возможно, более известна и более широко реализована как в открытых, так и в проприетарных анализаторах и редакторах XML, когда она стала Рекомендацией W3C в 2001 году. затем, однако, поддержка RELAX NG все чаще находила свое отражение в программном обеспечении XML, и ее принятию способствовало ее принятие в качестве основной схемы для популярных языков разметки, ориентированных на документы, таких как DocBook , TEI Guidelines, OpenDocument и EPUB .

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

Расширения имени файла [ править ]

По неформальному соглашению, схемы RELAX NG в обычном синтаксисе обычно называются с расширением имени файла ".rng". Для схем в компактном синтаксисе используется расширение «.rnc».

Детерминизм [ править ]

Схемы Relax NG не обязательно являются «детерминированными» или «однозначными».

Преобразование Relax NG в DTD [ править ]

Схемы Relax NG можно преобразовать в DTD, применив Trang, который можно найти по адресу: [1] . Руководство для Trang находится по адресу [2] . Обратите внимание, что Транг не может преобразовать схему OASIS DITA 1.3 в DTD, что приводит к ошибкам с такими сообщениями, как:

 извините, объединение определений с помощью comb = "choice" не поддерживается

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

  • Схемы XML
  • DTD (определение типа документа)
  • Описание структуры документа
  • Схема XML (W3C)
  • Схематрон
  • ODD (все в одном документе)
  • SXML

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

  1. ^ RELAX NG Компактный синтаксис
  2. ^ Джеймс Кларк. «TREX - Древовидные регулярные выражения для XML -» TREX был объединен с RELAX для создания RELAX NG. " " . Проверено 28 декабря 2009 .
  3. ^ Мурата Макото (2002-04-03). "RELAX (описание на обычном языке для XML) -" RELAX NG of OASIS. Это язык схем, созданный путем объединения RELAX Core и TREX. " " . Проверено 28 декабря 2009 .
  4. ^ «TREX и RELAX объединены как RELAX NG, облегченная спецификация проверки языка XML» . Титульные страницы. 2001-06-05 . Проверено 28 декабря 2009 .
  5. ^ Спецификация RELAX NG
  6. ^ Технический комитет RELAX NG
  7. ^ ISO. «ISO / IEC 19757-2: 2003 - Информационные технологии - Язык определения схемы документов (DSDL) - Часть 2: Проверка на основе регулярной грамматики - RELAX NG» . ISO . Проверено 28 декабря 2009 .

Внешние ссылки [ править ]

  • Домашняя страница RELAX NG
  • "Дизайн RELAX NG" Джеймса Кларка
  • Учебник RELAX NG по синтаксису XML
  • Учебник RELAX NG по компактному синтаксису
  • Шаблоны проектирования для структурирования XML-документов
  • Книга RELAX NG Эрика ван дер Влиста, выпущенная под лицензией GNU Free Documentation License
  • Справка Relax NG от ZVON
  • Проекты сообщества RELAX NG Java на java.net
  • Набор инструментов Java XML с открытым исходным кодом Sun Multi-Schema Validator (MSV)
  • Программа на C с открытым исходным кодом для валидатора синтаксиса Relax NG Compact
  • XSD to Relax NG Converter Веб-конвертер
  • https://github.com/relaxng/jing-trang