РЕЛАКС НГ - RELAX NG
Расширение имени файла | .rng |
---|---|
Тип интернет-СМИ | приложение / xml, текст / xml |
Тип формата | Язык схемы XML |
Расширен с | XML |
В вычисление, РЕЛАКС НГ (REgular LAnguage для XML следующего поколения) это схема язык для XML - схема RELAX NG задает шаблон для структуры и содержимого XML-документа. Схема RELAX NG сама по себе XML документ, но RELAX NG также предлагает популярный компактный синтаксис, отличный от XML.[1] По сравнению с другими Языки схемы XML RELAX NG считается относительно простым.
Это было определено спецификацией комитета ОАЗИС Технический комитет RELAX NG в 2001 и 2002 годах на основе Мурата Макото с РАССЛАБЛЯТЬСЯ и Джеймс Кларк с ТРЕКС,[2][3][4] а также частью второй международного стандарта ISO /IEC 19757: Языки определения схем документов (DSDL ).[5][6] ISO / IEC 19757-2 был разработан ISO / IEC JTC1 / SC34 и опубликована в своей первой версии в 2003 году.[7]
Примеры схем
Предположим, мы хотим определить чрезвычайно простую схему разметки XML для книги: книга определяется как последовательность из одной или нескольких страниц; каждая страница содержит только текст. Примером экземпляра XML-документа может быть:
<book> <page>Это первая страница.</page> <page>Это вторая страница.</page></book>
Синтаксис XML
Схема RELAX NG может быть записана во вложенной структуре путем определения корневого элемента, который содержит дополнительные определения элементов, которые сами могут содержать встроенные определения. Схема для нашей книги в этом стиле с использованием полного синтаксиса XML была бы написана:
<элемент имя ="книга" xmlns ="http://relaxng.org/ns/structure/1.0"> <oneOrMore> <элемент имя ="страница"> <text/> </element> </oneOrMore></element>
Вложенная структура становится громоздкой с множеством подуровней и не может определять рекурсивные элементы, поэтому в большинстве сложных схем RELAX NG используются ссылки на именованный образец определения расположены отдельно в схеме. Здесь «плоская схема» определяет ту же разметку книги, что и в предыдущем примере:
<грамматика xmlns ="http://relaxng.org/ns/structure/1.0"> <start> <элемент имя ="книга"> <oneOrMore> <ссылка имя ="страница"/> </oneOrMore> </element> </start> <определить имя ="страница"> <элемент имя ="страница"> <text/> </element> </define></grammar>
Компактный синтаксис
Компактный синтаксис RELAX NG - это формат, отличный от XML, вдохновленный расширенная форма Бэкуса-Наура и обычные выражения, спроектированный таким образом, чтобы его можно было однозначно преобразовать в свой XML-аналог и обратно, с взаимно однозначным соответствием по структуре и значению, почти так же, как Простая структура XML (SOX) относится к XML. Он имеет много общих функций с синтаксисом DTD. Вот компактная форма вышеприведенной схемы:
элемент книга { элемент страница { текст }+}
С помощью именованных шаблонов это может быть сведено к:
Начните = элемент книга { страница + }страница = элемент страница { текст }
Компактный синтаксический анализатор RELAX NG будет рассматривать их как один и тот же шаблон.
Сравнение со схемой W3C XML
Хотя спецификация RELAX NG была разработана примерно в то же время, что и W3C, Схема XML спецификации, последняя была, возможно, более известна и более широко реализована как в открытых, так и в проприетарных XML-анализаторах и редакторах, когда она стала Рекомендацией W3C в 2001 году. Однако с тех пор поддержка RELAX NG все чаще находила свое отражение в программном обеспечении XML, и его принятию способствовало принятие в качестве основной схемы для популярных языков разметки, ориентированных на документы, таких как DocBook, то TEI Руководящие указания, OpenDocument, и EPUB.
RELAX NG разделяет с XML-схемой W3C многие функции, которые отличают их от традиционных DTD: набор данных, регулярное выражение поддерживать, пространство имен поддержка, возможность ссылаться на сложные определения.
Расширения имени файла
По неформальному соглашению схемы RELAX NG в обычном синтаксисе обычно называются расширение имени файла ".rng". Для схем в компактном синтаксисе используется расширение «.rnc».
Детерминизм
Схемы Relax NG не обязательно «детерминированный» или «однозначный».
Преобразование Relax NG в DTD
Схемы Relax NG можно преобразовать в DTD, применив Транг который можно найти по адресу: [1]. Руководство для Транга находится по адресу [2]. Обратите внимание, что Транг не может преобразовать ОАЗИС DITA 1.3 схема для DTD, ошибка с такими сообщениями, как:
извините, объединение определений с помощью comb = "choice" не поддерживается
Смотрите также
- Схемы XML
- DTD (Определение типа документа)
- Описание структуры документа
- Схема XML (W3C)
- Схематрон
- ODD (все в одном документе)
- SXML
Рекомендации
- ^ Компактный синтаксис RELAX NG
- ^ Джеймс Кларк. «TREX - Древовидные регулярные выражения для XML -» TREX был объединен с RELAX для создания RELAX NG."". Получено 2009-12-28.
- ^ Мурата Макото (2002-04-03). "RELAX (описание на обычном языке для XML) -" RELAX NG of OASIS. Это язык схем, созданный путем объединения RELAX Core и TREX."". Получено 2009-12-28.
- ^ «TREX и RELAX унифицированы как RELAX NG, облегченная спецификация проверки языка XML». Титульные страницы. 2001-06-05. Получено 2009-12-28.
- ^ RELAX NG Технические характеристики
- ^ Технический комитет RELAX NG
- ^ ISO. «ISO / IEC 19757-2: 2003 - Информационные технологии - Язык определения схемы документов (DSDL) - Часть 2: Проверка на основе регулярной грамматики - RELAX NG». ISO. Получено 2009-12-28.
внешняя ссылка
- Домашняя страница RELAX NG
- «Дизайн RELAX NG» Джеймс Кларк
- Учебник RELAX NG по синтаксису XML
- Учебник RELAX NG по компактному синтаксису
- Шаблоны проектирования для структурирования XML-документов
- RELAX NG Книга Эрика ван дер Влиста, выпущенного под Лицензия свободной документации GNU
- Справка Relax NG от ZVON
- RELAX NG Java-проекты сообщества на java.net
- Валидатор мультисхем Sun (MSV) набор инструментов Java XML с открытым исходным кодом
- Валидатор синтаксиса Relax NG Compact программа C с открытым исходным кодом
- Конвертер XSD в Relax NG Веб-конвертер
- https://github.com/relaxng/jing-trang