For faster navigation, this Iframe is preloading the Wikiwand page for RELAX NG.

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.

Посилання

[ред. | ред. код]


{{bottomLinkPreText}} {{bottomLinkText}}
RELAX NG
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.

X

Get ready for Wikiwand 2.0 🎉! the new version arrives on September 1st! Don't want to wait?