RELAX-NG-Befehle beschreiben die Schema-Sprache RELAX NG (REgular LAnguage for XML Next Generation) zur Validierung von XML-Dokumenten. Sie wurde von James Clark (TREX) und Makoto Murata (RELAX Core) entwickelt, 2001 als OASIS-Standard verabschiedet und ist als ISO/IEC 19757-2 Teil des DSDL-Verbunds.

Zwei Syntaxen

RELAX NG bietet eine XML-Syntax (Dateiendung .rng) und eine deutlich lesbarere kompakte Syntax (Dateiendung .rnc). Ein Beispiel in kompakter Syntax:

start = buch
buch = element buch {
    element titel { text },
    element autor { text },
    element kapitel { text }+
}

Die Operatoren der kompakten Syntax: = (Pattern-Definition), | (choice, Alternative), , (sequence, Reihenfolge), & (interleave, beliebige Reihenfolge), ? (optional), * (null oder mehr), + (eins oder mehr).

Wichtige Pattern

  • element name { inhalt } — Element mit Namen und Inhaltsmodell
  • attribute name { typ } — Attribut-Deklaration
  • choice — Auswahl zwischen mehreren Mustern
  • sequence / interleave — geordnete bzw. ungeordnete Gruppen
  • optional, zeroOrMore, oneOrMore — Häufigkeiten
  • empty — leeres Element; text — Textinhalt
  • data — Datentyp aus XML Schema Datatypes, z. B. data xsd:int
  • value — fester Wert
  • ref/define — benannte, wiederverwendbare Pattern; start — Wurzelmuster
  • include, div, externalRef — Modularisierung

Werkzeuge

Jing ist der Referenz-Validator für RELAX NG (und NRL, die Namespace Routing Language). Trang konvertiert Schemas zwischen kompakter Syntax, XML-Syntax, DTD und XSD. Beide Werkzeuge stammen von James Clark und laufen auf der Java-Plattform: java -jar jing.jar datei.rnc datei.xml.

Gegenüber der klassischen DTD bietet RELAX NG Datentypen und Komponierbarkeit ohne Determinismus-Zwang; gegenüber XSD-Befehle ist es deutlich einfacher und mächtiger bei Strukturmustern. Regelbasierte Geschäftslogik ergänzt Schematron-Befehle.

Verwandte Grundlagen: XML-Befehle, XPath-Befehle.