RELAX NG ( — регулярна мова для XML, наступне покоління) — мова написання схем XML документів. Схеми RELAX NG є XML документами, однак, існує, також, компактний варіант мови, який не є XML документом, і має назву .
Приклади схем Припустімо, що ми бажаємо означити дуже просту 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
Джерела
Посилання RELAX NG домашня сторінка . «The Design of RELAX NG», James Clark. RELAX NG tutorial for the XML syntax . RELAX NG tutorial for the compact syntax . Design patterns for structuring XML documents.
RELAX NG Book , Eric van der Vlist, розповсюджується Free Documentation License. Relax NG Reference , ZVON. RELAX NG Java community projects на java.net. Sun Multi-Schema Validator (MSV) інструментарій Java XML з відкритими текстами.