Расширение имени файла | .rng |
---|---|
Тип интернет-СМИ | приложение / xml, текст / xml |
Тип формата | Язык схемы XML |
Расширен с | XML |
В вычислении , 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 : типизация данных , поддержка регулярных выражений, поддержка пространства имен , возможность ссылаться на сложные определения.
Расширения имени файла [ править ]
В этом разделе не процитировать любые источники . Сентябрь 2019 г. ) ( Узнайте, как и когда удалить этот шаблон сообщения ) ( |
По неформальному соглашению, схемы 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
Ссылки [ править ]
- ^ RELAX NG Компактный синтаксис
- ^ Джеймс Кларк. «TREX - Древовидные регулярные выражения для XML -» TREX был объединен с RELAX для создания RELAX NG. " " . Проверено 28 декабря 2009 .
- ^ Мурата Макото (2002-04-03). "RELAX (описание на обычном языке для XML) -" RELAX NG of OASIS. Это язык схем, созданный путем объединения RELAX Core и TREX. " " . Проверено 28 декабря 2009 .
- ^ «TREX и RELAX объединены как RELAX NG, облегченная спецификация проверки языка XML» . Титульные страницы. 2001-06-05 . Проверено 28 декабря 2009 .
- ^ Спецификация RELAX NG
- ^ Технический комитет RELAX NG
- ^ 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