stringtranslate.com

РАССЛАБИТЬСЯ НГ

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

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

Примеры схем

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

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

синтаксис 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 . Вот компактная форма приведенной выше схемы:

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

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

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

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

Сравнение с XML-схемой W3C

Хотя спецификация 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]. Руководство для Транга находится по адресу [2]. Обратите внимание, что Транг не может преобразовать схему OASIS DITA 1.3 в DTD, из-за чего возникают такие сообщения:

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

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

Рекомендации

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

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