Relax NG (regular language for XML, new generation)

Relax NG steht für Regular Language for XML, New Generation und kennzeichnet eine sogenannte Schema-Sprache für XML, die die Struktur eines XML-Dokumentes beschreibt. Relax NG gruppiert sich neben der Document Type Definition (DTD) und dem vom World Wide Web Consortium (W3C) standardisierten XML-Schema. Relax NG ist hervorgegangen aus den beiden Schema Sprachen Relax Core und Trex, die jedoch nicht die weite Verbreitung wie Relax NG fanden. Ursprünglich entwickelt wurde Relax NG von James Clark und Murata Makoto.


Die zentrale Eigenschaft von Relax NG ist es, eine auf Mustern basierende Schema-Sprache zu sein. Relax NG ist spezifiziert durch die Organisation for the Advancement of Structured Information Standards (OASIS) und zudem zugehörig dem Standard der ISO/ IEC 19757-2 innerhalb der Document Schema Definition Languages (DSDL). Relax NG versteht sich als leichtgewichtige Sprache, die eine XML-konforme - aber jedoch auch eine sehr kompakte - Syntax umfasst. Damit können die Schemata mit einem beliebigen XML-Editor bearbeitet werden.

Die Entwicklung von Relax NG

Der Hintergrund für die Entwicklung der Schema-Sprache Relax NG war es, die Nachteile der DTD und dem vom W3C vorgestellten XML-Schema zu beseitigen.

  • DTD-Dokumente sind nicht XML-konform und es muss grundlegend eine neue Notation beachtet werden.
  • XML-Schema ist schwergewichtig, d.h. die Sprache ist sehr umfangreich, hat viele Restriktionen und Regeln und ist daher aufwendig im Umgang.
Im Vergleich dazu ist Relax NG eine leichtgewichtige Sprache, da die vom XLM-Schema bekannten Restriktionen entfallen. Zudem verwendet Relax NG die Notation von XML, um Schemata darzustellen. Die Sprache unterstützt ein einfaches Konzept, und die meisten Komponenten einer Struktur werden gleich behandelt. Weitere Eigenschaften von Relax NG, die beispielsweise über die DTD hinausgehen, sind:

  • Verschiedene Datentypen werden unterstützt.
  • In Inhaltsmodelle werden Attribute integriert.
  • Die XML-Namensräume werden unterstützt.
  • Die Unterstützung von nicht geordneten Inhalten.
  • Es werden kontextsensitive Inhaltsmodelle beachtet.
Natürlich basiert Relax NG ebenso wie die DTD und XML-Schema auf einer Grammatik - bemerkenswert ist in diesem Zusammenhang, das Relax NG jedoch auf einer soliden mathematischen Grundlage aufsetzt. Das mathematische Modell ist die sogenannte Hedge Automata Theorie. Dieses Modell definiert eine Hedge (engl. Hecke), die aus einer Reihe von Trees (engl. Bäumen) aufgebaut ist. Übertragen auf die XML-Terminologie ist ein Hedge eine Reihe von Elementen beispielsweise ist ein XML-Dokument ein Hedge. Damit ist ein XML-Dokument bildlich als ein formales Gebilde darstellbar, das sich durch Unterstützung von formalen Werkzeugen - ähnlich einem Hedge-Automaten bei einer regulären Grammatik - erzeugen lässt.

Im Kern geht Relax NG davon aus, das generell "alles ein Muster ist", und definiert dazu die wichtigsten atomaren Muster: Elemente, Attribute und Textknoten. Diese werden durch die Konstrukte dargestellt:

>element< ... >/element<

>attribute< ... >/attribute<

>text/<

Durch den Mechanismus der Komposition können beispielsweise geordnete und ungeordnete Listen oder Alternativen aufgebaut werden. Dabei werden mit sogenannten named patterns Muster benannt, die dann durch Referenzen wiederverwendet werden können. Relax NG orientiert sich am Baukasten-Prinzip sowie der Wiederverwendbarkeit von Code, so dass dabei externe Relax NG Dateien importiert und als Teile eines Musters verwendet werden können. So wird ein Relax NG Schema u.U. nur einmal entworfen, kann in weiteren Schemata referenziert werden, und dieses neue Schema wird dann kompakter und übersichtlicher. Die Kompositionsmechanismen unterstützen den Aufbau eigener Muster in vielfältiger Weise - u.a. wird auch der Aufbau von nicht deterministischen Mustern unterstützt, was beispielsweise beim W3C XML-Schema nicht möglich ist.

http://www.relaxng.org/

http://www.oasis-open.org/committees/relax-ng/

http://books.xmlschemata.org/relaxng/design.html

http://www.oasis-open.org/committees/relax-ng/spec.html

Informationen zum Artikel
Deutsch:
Englisch: regular language for XML, new generation - Relax NG
Veröffentlicht: 28.10.2013
Wörter: 594
Tags: #Sonstige Programmiersprachen
Links: Attribut, Code, Datei, Datentyp, DTD (document type definition)