Grundsätzlich folgt die RELAX NG Syntax den Vorgaben von XML 1.0. Das bedeutet
Elemente und Attribute müssen sauber geöffnet und geschlossen werden, Namensgebung, usw. (siehe
1.Vortrag). Hinzu kommen noch einpaar weitere nicht XML- Tags. Diese
Strukturierung ist ca. 1 Jahr älter als der kompakte Syntax.
<?xml version="1.0" encoding="ISO-8859-1"?> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> ... </start> </grammar>
Aussehen eines Elements, wichtig hierbei: sauber öffnen und schließen, sowie Namensgebung!
<element name="adressBuch"> ... </element>
Alles innerhalb gehört zum Element Adressbuch, und kann weitere Elemente/ Attribute enthalten. Attribute können keine weiteren Elemente enthalten.
<element name="xxx"/>
oder
<element name="xxx"> <empty/> </element>
Dies ist ein leeres Element und wird vom Präprozessor default-mäßig als empty (leer) interpretiert.
< text /> # oder: <text> ... </text>
Bezeichnet den Inhalt eines Elements oder Attributes, hier kann es einen beliebigen Text enthalten.
<element name="telNr"> <data type="integer"/> </element>
Festlegung, des Inhaltes 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.
<choice> a <group> b c </group> </choice>
Mit den <group> und </group> werden Elemente und Attribute gruppiert.
<optional>, <oneOrMore>, <zeroOrMore> vor und </optional>, ... hinter Elementen/ Attributen besagt, wie oft der gesamte Inhalt des Elements/ Attributes vorkommen Soll.
<optional> - Inhalt muss nicht unbedingt vorkommen
<oneOrMore> - Der Inhalt muss mindestens einmal vorkommen
<zeroOrMore> - Der Inhalt muss kein oder mehrmals vorkommen
<element name="addressBook"> <oneOrMore> |
# |
<element name="card"> |
# |
<choice> |
# Oder (Auswahl) |
<element name="name"> |
# |
<text/> |
# |
</ element> |
# |
<group> |
# |
<element name="vorName"> |
# |
<text/> |
# |
</ element> |
# |
<element name="nachName"> |
# |
<text/> |
# |
</ element> |
# |
</group> |
# |
</choice> |
# Auswahl zu ende |
<element name="email"> |
# |
<text/> |
# |
</ element> |
# |
<element name="telNr"> |
# |
<data type="integer"> |
# Telefonnummer |
<text/> |
# |
</ element> |
# |
element note |
# optional |
<text/> |
# |
</ element> |
# |
</element> <oneOrMore> |
# mindestens Einmal |
</element> |
# |
Die Dokumentation wird mit [ a:dokumentation [ eingeleitet und mit zwei eckigen Klammern beendet.
[ a:dokumentation [ "Beispiel Adessbuch. ] ] ...