next up previous contents
Nächste Seite: 8.2.3 Zusatzinformationen für die Aufwärts: 8.2 Datenformat in XML Vorherige Seite: 8.2.1 Elemente   Inhalt

8.2.2 Beziehungen der Elemente

Da an allen Stellen, an denen Text eingefügt werden darf, dieser auch weitere Elemente enthalten kann, wurden abhängig davon verschiedene Datentypen eingeführt. Ein Beispiel ist der Datentyp elementtext, der als mixedTyp definiert ist und damit neben Text auch die Elemente der Gruppe text.elements in beliebiger Häufigkeit und Reihenfolge enthalten kann. Der Datentyp elementcodetext ist quasi der gleiche Datentyp wie elementtext nur erweitert um das code-Element. Abbildung 22 stellt diese Gruppen und Datentypen im Zusammenhang dar. Deweiteren gibt es noch den Datentyp markedtext, der auf die gleiche Weise alle Markierungselemente integriert, und mathtext, in dem neben Text noch mathematische Elemente auftreten dürfen.

Abbildung 22: Zusammenhang der Textgruppen und die darauf basierenden Datentypen
\includegraphics[scale=0.6]{bilder/markedtextgroup}

Die Elemente der Gruppe text.elements dürfen auch geschachtelt werden. Damit wird es möglich in einer Fußnote einen Link oder in einem Schlüsselwort ein mathematisches Element zu benutzen. Da XML Schema keine Möglichkeit zur Überprüfung von Bedingungen besitzt, sind hierfür teilweise neue Definitionen nötig. Die einfache Schachtelung von einem Link in einer Fußnote ist sinnvoll einzusetzen, während eine tiefere Verschachtelung auf Probleme stößt. Wird beispielsweise dem Link, der sich in der Fußnote befindet, noch eine Fußnote angehängt, so ist diese nicht interpretierbar. Derartige tiefe Verschachtelungen sollten ausgeschlossen werden. Deshalb sind diese Elemente in verschiedenen Kontexten nicht einfach referenziert, sondern werden innerhalb der Definition anderer Elemente neu definiert.

Code-Beispiel 2:
Eine Fußnote besteht aus Text, der verschiedene Elemente beinhalten kann. Dazu werden in die Gruppe text.marker.elements mathematische Zeichen, Code und Zitate über Referenzen eingebunden. Das link-Element muss wie oben erläutert neu definiert werden. Dazu wurde die eigentliche Definition mit dem Unterschied übernommen, dass der dargestellte Text nur vom Typ markedtext ist.
<xs:element name="footnote">
 <xs:annotation>
  <xs:documentation>
    insert a footnote at this position
  </xs:documentation>
 </xs:annotation>
 
 <!-- Mischung aus Text und Elementen -->
 <xs:complexType mixed="true">
  <xs:sequence minOccurs="0" maxOccurs="unbounded">
   <xs:group ref="text.marker.elements" minOccurs="0" 
                                maxOccurs="unbounded"/>
   <!-- Neudefinition des Links -->
   <xs:element name="link" minOccurs="0" 
                                 maxOccurs="unbounded">
    <xs:complexType>
     <xs:all>
      <xs:element name="uri" type="xs:anyURI"/>
      <xs:element name="text" type="markedtext"/>
     </xs:all>
     <xs:attributeGroup ref="pres:standard.out"/>
     <xs:attributeGroup ref="script:standard.in"/>
    </xs:complexType>
   </xs:element>
   <xs:group ref="def.math" minOccurs="0" 
                            maxOccurs="unbounded"/>
   <xs:group ref="def.citation" minOccurs="0" 
                            maxOccurs="unbounded"/>
   <xs:element ref="code" minOccurs="0" 
                            maxOccurs="unbounded"/>
  </xs:sequence>
  <xs:attributeGroup ref="pres:standard.out"/>
  <xs:attributeGroup ref="script:standard.in"/>
 </xs:complexType>
</xs:element>
Da in dem zweiten Code-Beispiel die Gruppen und Elemente bezüglich ihrer Häufigkeit des Auftretens auf Null bis unendlich gesetzt wurden, sind die Elemente optional. Durch die Angabe der gleichen Attribute in der Sequenz, ist die Sequenz beliebig häufig wiederholbar. Dadurch ist die durch eine Sequenz vorgegebene Reihenfolge abgeschaltet und die Elemente lassen sich in beliebiger Reihenfolge und Häufigkeit wiederholen. Abschnitte para werden auf die gleiche Weise definiert. Sie können neben Text auch weitere Elemente enthalten, wodurch sie bestimmte Zusammengehörigkeiten strukturieren. So lassen sich Auszeichnungen der Gruppe text.elements im Text vornehmen und über die Gruppe content.text.elements alle weiteren inhaltlichen Elemente wie Grafiken, Definitionen oder auch Tabellen einbinden. Für Abschnitte ist die Reihenfolge in der sie eingegeben und interpretiert werden identisch. Die Darstellungsstrukturen der Gruppe content.text.structure.elements müssen in eine Struktur gebracht werden, die eine aneinandergereihte Eingabe der Inhalte ermöglicht. Die Reihenfolge der Eingabe entspricht der späteren Ausgabe. Listen bestehen aus listitem-Elementen, die die einzelnen Einträge der Liste bestimmen. Diese können Elemente der Gruppe text.elements, Code oder weitere Listen enthalten. Tabellen werden in Form ihrer Zeilen beschrieben. Es lässt sich optional zu einer Tabelle eine Legende für die Beschreibung der Tabelle und ein Tabellenkopf hinzufügen. Der Tabellenkopf besteht aus der gleichen Beschreibungsart, wie die weiteren Tabellenzeilen. Die Anzahl der Tabellenzeilen kann zwischen einer und beliebig vielen variieren. Die Zeilen werden über celldata-Elemente gefüllt, die neben Text bis auf semantische Strukturen und Tabellen alle Elemente enthalten können. Mit der Auszeichnung als Tabellenkopf wird die besondere Stellung einer Zeile in Bezug auf die gesamte Tabelle ausgedrückt. Tabellen sollen der reinen Strukturierung ihres Inhaltes dienen und keine Layoutgestaltung vornehmen. Daher sind sie nicht ineinander schachtelbar. Für die Elemente zur semantischen Inhaltsauszeichnung content.text.semantic.elements sind die erlaubten Inhalte verschieden. Während in einem Beispiel example alle Elemente bis auf die semantischen der eigenen Gruppe auftreten dürfen, sind Definitionen definition wesentlich eingeschränkter. Sie bestehen aus einem Term term, der neben Text noch mathematische Elemente enthalten kann und einem erläuternden Text comment dazu. Die Elemente der Gruppe content.text.media.elements setzen sich alle aus ihren notwendigen Angaben zusammen. Eine Grafik graphic besteht beispielsweise aus label, uri und alternative. Ein Applet applet kann über alle dazugehörigen Angaben verfügen und ein object hat die Wahl zwischen Uri und MIME-Type Angabe oder Klassenangabe mit Parametern. Die zuvor beschriebenen Gruppen content.text.structure.elements, content.text.declaration.elements, content.text.media.elements bilden zusammengenommen die content.text.elements-Gruppe, siehe Abbildung 23. Darin sind alle Elemente enthalten, die im eigentlichen Inhalt eines Kapitels auftreten dürfen. Andere Elemente, die nicht dazu gehören, wären etwa Titel, Zusammenfassungen oder Autorenangaben. Der Content eines Kapitels wird durch die Elemente der Gruppe content.elements bestimmt, die sich aus der Gruppe content.text.elements und dem chapter-Element zusammensetzt. Die Erweiterung um die Kapitel ist für die Erstellung von geschachtelten Kapiteln mit Unterkapiteln notwendig. Abbildung 23 stellt die gesamten Elemente dar, die in dem content eines Kapitels auftreten können und wie sie in Gruppen strukturiert sind.

Abbildung: Gruppenzusammenhänge
\includegraphics[scale=0.55]{bilder/contentgroup}

Diese Art der Strukturierung ermöglicht die einfache Erweiterung um Elemente. Soll zum Beispiel ein neues Medienelement integriert werden, so muss dieses nur in der Gruppe content.text.media.elements eingehängt werden und es kann an allen Positionen auftauchen, an denen die anderen Medien auch auftauchen dürfen. Einen weiterer Vorteil, der aus der Verwendung von Gruppen resultiert, ist, dass globale Gruppen nicht instanziiert werden dürfen. Das bedeutet, dass ein Dokument, welches mit dem Element einer globalen Gruppe beginnt, nicht gültig ist. Das unterscheidet sich von der Verwendung globaler Elemente. Alle global definierten Elemente können als Startelement für ein gültiges Dokument dienen. Um die Gültigkeit für einfache Elemente zu verhindern, wurden sie in Gruppen definiert.
next up previous contents
Nächste Seite: 8.2.3 Zusatzinformationen für die Aufwärts: 8.2 Datenformat in XML Vorherige Seite: 8.2.1 Elemente   Inhalt
Tanja Schniederberend 2003-06-11