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 вважатиме ці два варіанти тим самим взірцем.

Див. також

  • XML schema
  • Document Type Definition
  • Document Structure Description[en]
  • SXML[en]

Джерела

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

Посилання

  • RELAX NG домашня сторінка [Архівовано 25 березня 2021 у Wayback Machine.].
  • «The Design of RELAX NG», James Clark.
  • RELAX NG tutorial for the XML syntax [Архівовано 4 січня 2007 у Wayback Machine.].
  • RELAX NG tutorial for the compact syntax [Архівовано 4 січня 2007 у Wayback Machine.].
  • Design patterns for structuring XML documents.
  • RELAX NG Book [Архівовано 8 березня 2011 у Wayback Machine.], Eric van der Vlist, розповсюджується Free Documentation License.
  • Relax NG Reference [Архівовано 10 червня 2009 у Wayback Machine.], ZVON.
  • RELAX NG Java community projects на java.net.
  • Sun Multi-Schema Validator (MSV) інструментарій Java XML з відкритими текстами.


Інформаційні технології Це незавершена стаття про інформаційні технології.
Ви можете допомогти проєкту, виправивши або дописавши її.