Der Anwendungsbereich des kompakten Relax NG Syntax ist eine bequemere Möglichkeit zu bieten
RELAX NG in ein anderes Programm implementieren zu können.
Der kompakte Syntax ist logisch strukturiert und damit auch überschaubarer.
Der kompakte Syntax hat eine Blockstruktur, ähnlich der von C++ oder Java
element adressBuch{ ... }
Alles innerhalb der geschweiften Klammern gehört zum Element Adressbuch, in den geschweiften Klammern können weitere Elemente und Attribute stehen. Attribute können keine weiteren Elemente enthalten.
element xxx {}
Dies ist ein leeres Element und wird vom Präprozessor default-mäßig als empty (leer) interpretiert.
{ text }
Bezeichnet den Inhalt eines Elements oder Attributes, hier kann es einen beliebigen Text enthalten.
{ xsd:integer }
Festlegung, das der Inhalt eines Elements/ Attributes von Typ Integer, Ganzzahl, vom XML-Schema ist (siehe Datentypen für nähere Informationen).
Eine Auswahl (choice) wird auf folgende Weise erstellt, wobei die Buchstaben für Elemente bzw. Attribute stehen.
(a {} | ( b{}, c)),
Mit den runden Klammern werden Elemente und Attribute gruppiert, mit den Kommas werden sie getrennt.
?,+, * hinter sich schließenden geschweiften Klammern besagt, wie oft der gesamte Inhalt des Elements/ Attributes vorkommen soll.
? - Optional, der Inhalt muss nicht unbedingt vorkommen
+ - Der Inhalt muss mindestens einmal vorkommen
* - Der Inhalt muss kein oder mehrmals vorkommen
Alles hinter den '#' sind Kommentare und dienen hier zur Erklärung des Codefragmentes.
element adressBuch { |
# |
element cartei { |
# |
(element name { text } |
# Element Name, kann beliebigen Text enthalten |
| (element vorName { text }, element nachName { text })), |
# | Oder (Auswahl/choice) |
element email { text }, |
# |
element telNr{ xsd:integer }, |
# Element enthält nichtgebrochene Zahl |
element note { text }? |
# ? optional, muss nicht unbedingt vorkommen |
}+ |
# + oneOrMore, mindestens Einmal |
} |
# * zeroOrMore, Nullmal oder mehrmals |
## Dies ist ein ## Beispiel für ein ## Adressbuch element adressBuch{ ... }
Dokumentationen beginnen mit zwei Doppelkreuzen (##) vor jedem Zeilenanfang