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 Inhaltsmodellattribute name { typ }— Attribut-Deklarationchoice— Auswahl zwischen mehreren Musternsequence/interleave— geordnete bzw. ungeordnete Gruppenoptional,zeroOrMore,oneOrMore— Häufigkeitenempty— leeres Element;text— Textinhaltdata— Datentyp aus XML Schema Datatypes, z. B.data xsd:intvalue— fester Wertref/define— benannte, wiederverwendbare Pattern;start— Wurzelmusterinclude,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.