RELAX NG — Вікіпедія

RELAX NG (англ. REgular LAnguage for XML Next Generation — регулярна мова для XML, наступне покоління) — мова написання схем XML документів.[1] Схеми RELAX NG є XML документами, однак, існує, також, компактний варіант мови, який не є XML документом, і має назву англ. RELAX NG Compact Syntax.[2]

Приклади схем[ред. | ред. код]

Припустімо, що ми бажаємо означити дуже просту XML розмітку для книги: книга — це послідовність з однієї чи більше сторінок; кожна сторінка містить лише текст. Приклад такого XML документа може бути таким:

<book>   <page>Це сторінка один.</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> </element> 

У разі багатьох підрівнів вкладення стають громіздкими і не придатні для означення рекурсивних елементів, тому найскладніші схеми 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-відповідник і назад, зберігаючи один-в-один відповідність структури і значення, по суті так само як і SOX належить до XML. Він має багато спільного із синтаксисом DTD. Ось стисла форма схеми згори:

element book {     element page { text }+ } 

Із іменованими взірцями це можна розгладити в:

start = element book { page+ } page = element page { text } 

Парсер стислого RELAX NG вважатиме ці два варіанти тим самим взірцем.

Див. також[ред. | ред. код]

Джерела[ред. | ред. код]

  1. RELAX NG home page. Архів оригіналу за 11 травня 2020. Процитовано 1 травня 2020.
  2. Michael Fitzgerald. RELAX NG's Compact Syntax. Архів оригіналу за 14 травня 2020. Процитовано 1 травня 2020.

Посилання[ред. | ред. код]