Struktur XML


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.

Rumpf einer RelaxNG Datei:

<?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

 

Beispiel mit Kurzerklärung als Kommentar:

<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>
# 

 

Dokumentation:

Die Dokumentation wird mit [ a:dokumentation [   eingeleitet und mit  zwei eckigen Klammern beendet.

[
  a:dokumentation [
    "Beispiel Adessbuch.
  ]
]
...

 

[zurück]    [Home]    [weiter]