Interested Article - RELAX NG
- 2021-09-06
- 1
RELAX NG ( REgular LAnguage for XML Next Generation ) — один из языков описания структуры XML -документа. Являясь сама по себе XML-документом, схема в этом формате может быть записана с использованием альтернативного, более компактного синтаксиса . В сравнении с другими языками схем RELAX NG относительно прост. RELAX NG был разработан в OASIS и впервые опубликован в 2003 . Файлы, содержащие схемы RELAX NG, обычно имеют расширение ".rng", а в компактном синтаксисе — ".rnc".
Пример схемы
Приведённый пример — упрощённый XML, представляющий книгу: книга состоит из одной или более страниц и каждая страница содержит только текст:
<book>
<page>Страница первая.</page>
<page>Страница вторая.</page>
</book>
Синтаксис XML
Схема в формате RELAX NG может быть записана иерархической структурой, начиная с корневого элемента, который содержит дальнейшие определения элементов, которые, в свою очередь, тоже могут содержать вложенные определения. Схема в этом стиле для приведённой выше разметки записывается следующим образом:
<element name="book" xmlns="http://relaxng.org/ns/structure/1.0">
<oneOrMore>
<element name="page">
<text/>
</element>
</oneOrMore>
</element>
Вложенная структура может очень сильно разрастаться, и с её помощью невозможно описать рекурсивные элементы. Этот недостаток преодолевается с помощью именованных паттернов , которые располагаются в схеме отдельно:
<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. Он также напоминает синтаксис DTD . В компактной форме вышеприведённая схема выглядит следующим образом:
element book
{
element page { text }+
}
Или, с именованными паттернами :
start = element book { page+ }
page = element page { text }
Сравнение с другими схемами XML
На данный момент RELAX NG, разработанный примерно в то же самое время, что и XML Schema , обладает довольно широкой поддержкой в XML-редакторах и парсерах. RELAX NG используется как первичная схема для некоторых документо-центрических языков разметки, таких как DocBook и OpenDocument .
RELAX NG, как и XML Schema, поддерживает много возможностей: типизация данных , регулярные выражения , пространства имен и возможность ссылаться на сложные определения.
См. также
- DTD (Document Type Definition)
- XML Schema
- Schematron
Ссылки
- от 25 марта 2021 на Wayback Machine (англ.)
- от 8 марта 2011 на Wayback Machine (англ.) Эрика ван дер Влиста, выпущенная под лицензией GNU Free Documentation License
- от 10 июня 2009 на Wayback Machine (англ.) на zvon.org
Примечания
- . Дата обращения: 12 апреля 2010. 16 июня 2010 года.
- ISO. . ISO. Архивировано из 23 апреля 2012 года.
- 2021-09-06
- 1