RELAX NG: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[отпатрулированная версия][непроверенная версия]
(Спасено источников — 1, отмечено мёртвыми — 0. #IABot (v1.5.1))
м (исправление параметров шаблона {{Cite web}} по запросу)
 
(не показаны 2 промежуточные версии 1 участника)
Строка 1: Строка 1:
'''RELAX NG''' ('''REgular LAnguage for XML Next Generation''') — один из языков описания структуры [[XML]]-документа. Являясь сам по себе XML-документом, схема в этом формате может быть записана с использованием альтернативного, более компактного синтаксиса<ref>[http://www.oasis-open.org/committees/relax-ng/compact-20021121.html RELAX NG Compact Syntax]</ref>. В сравнении с другими языками схем, RELAX NG относительно прост.
+
'''RELAX NG''' ('''REgular LAnguage for XML Next Generation''') — один из языков описания структуры [[XML]]-документа. Являясь сама по себе XML-документом, схема в этом формате может быть записана с использованием альтернативного, более компактного синтаксиса<ref>[http://www.oasis-open.org/committees/relax-ng/compact-20021121.html RELAX NG Compact Syntax]</ref>. В сравнении с другими языками схем RELAX NG относительно прост.
RELAX NG был разработан в [[OASIS]] и впервые опубликован в 2003<ref>{{cite web|url=http://www.iso.org/iso/iso_catalogue/catalogue_ics/catalogue_detail_ics.htm?csnumber=37605|title=ISO/IEC 19757-2:2003 - Information technology -- Document Schema Definition Language (DSDL) -- Part 2: Regular-grammar-based validation -- RELAX NG|author=ISO|publisher=ISO|5=|archiveurl=https://www.webcitation.org/677vORsW0?url=http://www.iso.org/iso/iso_catalogue/catalogue_ics/catalogue_detail_ics.htm?csnumber=37605|archivedate=2012-04-23|deadurl=yes}}</ref>.
+
RELAX NG был разработан в [[OASIS]] и впервые опубликован в 2003<ref>{{cite web|url=http://www.iso.org/iso/iso_catalogue/catalogue_ics/catalogue_detail_ics.htm?csnumber=37605|title=ISO/IEC 19757-2:2003 - Information technology -- Document Schema Definition Language (DSDL) -- Part 2: Regular-grammar-based validation -- RELAX NG|author=ISO|publisher=ISO|archiveurl=https://www.webcitation.org/677vORsW0?url=http://www.iso.org/iso/iso_catalogue/catalogue_ics/catalogue_detail_ics.htm?csnumber=37605|archivedate=2012-04-23|deadurl=yes}}</ref>.
 
Файлы, содержащие схемы RELAX NG, обычно имеют расширение ".rng", а в компактном синтаксисе — ".rnc".
 
Файлы, содержащие схемы RELAX NG, обычно имеют расширение ".rng", а в компактном синтаксисе — ".rnc".
   
 
==Пример схемы==
 
==Пример схемы==
Приведенный пример — упрощенный XML, представляющий книгу: книга состоит из одной или более страниц и каждая страница содержит только текст:
+
Приведённый пример — упрощённый XML, представляющий книгу: книга состоит из одной или более страниц и каждая страница содержит только текст:
   
 
<source lang="xml">
 
<source lang="xml">
Строка 14: Строка 14:
   
 
===Синтаксис XML ===
 
===Синтаксис XML ===
Схема в формате RELAX NG может быть записана иерархической структурой, начиная с корневого элемента, который содержит дальнейшие определения элементов, которые, в свою очередь, тоже могут содержать вложенные определения. Схема в этом стиле для приведенной выше разметки, записывается следующим образом:
+
Схема в формате RELAX NG может быть записана иерархической структурой, начиная с корневого элемента, который содержит дальнейшие определения элементов, которые, в свою очередь, тоже могут содержать вложенные определения. Схема в этом стиле для приведённой выше разметки записывается следующим образом:
   
 
<source lang="xml">
 
<source lang="xml">
Строка 26: Строка 26:
 
</source>
 
</source>
   
Вложенная структура может очень сильно разрастаться и с её помощью невозможно описать рекурсивные элементы. Этот недостаток преодолевается с помощью ''именованных паттернов'', которые располагаются в схеме отдельно:
+
Вложенная структура может очень сильно разрастаться, и с её помощью невозможно описать рекурсивные элементы. Этот недостаток преодолевается с помощью ''именованных паттернов'', которые располагаются в схеме отдельно:
   
 
<source lang="xml">
 
<source lang="xml">
Строка 46: Строка 46:
   
 
===Компактный синтаксис===
 
===Компактный синтаксис===
Компактный синтаксис RELAX NG — это не-XML формат, основанный на [[Расширенная форма Бэкуса — Наура|расширенной форме Бэкуса — Наура]] и [[Регулярные выражения|регулярных выражениях]], спроектированный таким образом, что он может быть однозначно транслирован в и из XML. Он также напоминает синтаксис [[DTD]]. В компактной форме вышеприведенная схема выглядит следующим образом:
+
Компактный синтаксис RELAX NG — это не-XML формат, основанный на [[Расширенная форма Бэкуса — Наура|расширенной форме Бэкуса — Наура]] и [[Регулярные выражения|регулярных выражениях]], спроектированный таким образом, что он может быть однозначно транслирован в и из XML. Он также напоминает синтаксис [[DTD]]. В компактной форме вышеприведённая схема выглядит следующим образом:
   
 
<source lang="text">
 
<source lang="text">
Строка 63: Строка 63:
   
 
==Сравнение с другими схемами XML==
 
==Сравнение с другими схемами XML==
На данный момент, RELAX NG, разработанный примерно в то же самое время, что и [[XML Schema]], обладает довольно широкой поддержкой в XML-редакторах и парсерах. RELAX NG используется как первичная схема для некоторых документо-центрических языков разметки, таких как [[DocBook]] и [[OpenDocument]].
+
На данный момент RELAX NG, разработанный примерно в то же самое время, что и [[XML Schema]], обладает довольно широкой поддержкой в XML-редакторах и парсерах. RELAX NG используется как первичная схема для некоторых документо-центрических языков разметки, таких как [[DocBook]] и [[OpenDocument]].
   
RELAX NG, как и [[XML Schema]], поддерживает много возможностей: [[Тип данных|типизация данных]], [[регулярные выражения]], [[Пространство имён (XML)|пространства имен]] и возможность ссылаться на сложные определения.
+
RELAX NG, как и XML Schema, поддерживает много возможностей: [[Тип данных|типизация данных]], [[регулярные выражения]], [[Пространство имён (XML)|пространства имен]] и возможность ссылаться на сложные определения.
   
 
==См. также==
 
==См. также==

Текущая версия на 11:43, 17 июня 2021

RELAX NG (REgular LAnguage for XML Next Generation) — один из языков описания структуры XML-документа. Являясь сама по себе XML-документом, схема в этом формате может быть записана с использованием альтернативного, более компактного синтаксиса[1]. В сравнении с другими языками схем RELAX NG относительно прост. RELAX NG был разработан в OASIS и впервые опубликован в 2003[2]. Файлы, содержащие схемы 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, поддерживает много возможностей: типизация данных, регулярные выражения, пространства имен и возможность ссылаться на сложные определения.

См. также[править | править код]

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

Примечания[править | править код]