next up previous contents
Nächste Seite: 8.3 Generierung der Ausgabe Aufwärts: 8.2 Datenformat in XML Vorherige Seite: 8.2.2 Beziehungen der Elemente   Inhalt


8.2.3 Zusatzinformationen für die Ausprägungen

Es gibt zwei verschiedene Ansätze um die Informationen zu gewinnen, die für die Ausprägungen notwendig sind. Zum einen über die Struktur und zum anderen über die Zusatzinformationen. Die Struktur wird durch die Schachtelung der Elemente realisiert. Beispielsweise nimmt das para-Element eine ganz besondere Stellung ein. Mit ihm lassen sich verschiedene Inhalte zusammen gruppieren. Wie diese Strukturen in der weiteren Verarbeitung zur Generierung der Ausprägungen genutzt werden, spielt für das Schema keine Rolle. Da die Struktur alleine nicht ausreicht und auch Sonderfälle ermöglicht werden müssen, lassen sich die meisten Elemente über Attribute steuern. Diese Attribute sind in einem eigenen Schema stamp.xsd definiert. Zur Markierung einer Standardausprägung gehört das on-Attribut. Dieses kann nur einen der boolschen Werte true oder false annehmen. Damit wird markiert, ob ein Element in der Standardausprägung erscheinen soll. Die Festlegung dieses Wertes ermöglicht eine Ausprägungsgenerierung aus dem Quelldokument ohne weitere Angaben zu der Ausprägung zu machen. Allerdings sollen zu einer Ausprägung auch verschiedene Ausprägungsinstanzen ermöglicht werden. So wird beispielsweise nicht nur eine Standardausprägung Präsentation erzeugt, sondern es müssen auch Abstufungen bezüglich des Präsentationsinhaltes vorgenommen werden können. Hierfür muss das zweite Attribut delta gesetzt werden, das die Informationen über viele verschiedene Ausprägungsinstanzen enthalten kann und dafür als eine Liste von Strings definiert ist. Jede Ausprägungsinstanz muss mit einem Namen versehen werden, der in die entsprechende Liste der delta-Attribute der Elemente eingetragen werden muss. Das muss bei allen Elementen gemacht werden, die abweichend von der Standardausprägung zu behandeln sind. Dadurch werden diese Elemente zusätzlich aufgenommen oder vernachlässigt. Bei der Namenswahl ist zu beachten, dass Listen nur über Leerzeichen als Trennungssymbole verfügen.

Code-Beispiel 3:
Der einfache Datentyp deltalist beruht auf einer Liste von Strings. Mit ihm wird das Attribut delta erzeugt. Der Beispielcode zeigt die einfache Definition von beiden.
<xs:simpleType name="deltalist">
  <xs:list itemType="xs:string"/>
</xs:simpleType>
<xs:attribute name="delta" type="deltalist"/>
Die aus den Kombinationen der beiden Attribute resultierenden Konstellationen sind in der Tabelle 2 für eine beispielhafte Ausprägungsinstanz mit dem Namen speziell dargestellt. Das on-Attribut markiert dabei, ob ein Element zur Standardausprägung gehört. Das delta-Attribut notiert immer die Abweichungen für eine Ausprägungsinstanz vom Standard einer bestimmten Ausprägung.

Tabelle: Konstellationen aus der Kombination des on- und des delta-Attributes für die Ausprägungsinstanz speziell
on delta Darstellung?
true   Ja
true speziell Nein
false   Nein
false speziell Ja


Der Vorteil dieser etwas komplexen Attributangaben liegt in der Erzeugung der Standardausprägung. Anhand der Definitionen der Regeln, welche Elemente des Quelldokumentes in eine Standardausprägung einfließen sollen, lassen sich die Attribute setzen. Bei den jeweiligen Elementen, die in eine Standardausprägung einfließen, wird schon im Schema das on-Attribut für diese Ausprägung per default auf true gesetzt. Damit lässt sich für jedes Element schon bei der Schemadefinition genau ein on-Attribut, das die Standardausprägung bestimmt, setzen. Werden nun für einzelne Ausprägungsinstanzen Abweichungen davon festgelegt, so sind diese in dem delta-Attribut zu machen. Daher ist es weiterhin möglich trotz der hinzugefügten Angaben für eine bestimmte Ausprägungsinstanz noch die Standardausprägung zu generieren. Ebenfalls lassen sich so weitere Instanzen festlegen, die auch auf der Standardausprägung aufbauen können, da nur die Unterschiede zu dieser festgehalten werden müssen. Daher muss für diese nicht mit einer vollständig neuen Auswahl begonnen werden. Da immer beide Attribute zu einem Element definiert werden müssen, werden die Attribute durch Referenzen auf Attributgruppen den Elementen hinzugefügt. Die Attributgruppen beinhalten beide Attribute, doch mit unterschiedlichen default-Angaben. Die Gruppe standard.in setzt für Elemente die zur Standardausprägung gehören den default-Wert von on auf true, die Gruppe standard.out setzt entgegengesetzt auf false, wie das Code-Beispiel 4 zeigt. Die Verwendung von default-Angaben ist allerdings nur sehr eingeschränkt zu verwenden. Diese Eingaben werden nicht zwangsläufig von einem Editor oder Validator hinzugefügt, vgl. [Oba2002]. Deshalb muss in der weiteren Verarbeitung dieser Fall berücksichtigt werden.

Code-Beispiel 4:
Diese Attributgruppe soll von Elementen eingesetzt werden, die standardmäßig nicht in der Ausprägung erscheinen sollen, denen aber die Möglichkeit gegeben werden soll, nachträglich aufgenommen zu werden. Daher wird das on-Attribut per Voreinstellung auf false gesetzt.
<xs:attributeGroup name="standard.out">
  <xs:attribute ref="on" default="false"/>
  <xs:attribute ref="delta"/>
</xs:attributeGroup>
Damit wurden die Attribute beschrieben, die für eine Ausprägung und ihre verschiedenen Instanzen gesetzt werden können. Es sollen jedoch mehrere Ausprägungen ermöglicht werden, weshalb diese Attribute für jede Ausprägung eigenständig ermöglicht werden müssen. Deshalb wird das Schema stamp.xsd für jede neue Ausprägung in ein anderes Schema includiert (include). In stamp.xsd sind daher die Attribute ohne Namensraum beschrieben worden. Für jede Ausprägung, die in das Dokument eingefügt werden soll, wird nun ein eigenes Schema mit eigenem Namensraum erstellt. Das Schema für die Ausprägung Präsentation presentation.xsd wird ebenso wie die vollständige stamp.xsd im Anhang [*] aufgeführt. Die definierten Attribute nehmen damit immer den Namensraum des Schemas an, von dem sie includiert werden. Damit sind für verschiedene Ausprägungen die Attribute immer gleich, nur der Namensraum, kenntlich gemacht durch das Präfix, variiert. Die Integration der Attributgruppen für die Ausprägungen Präsentation mit dem Präfix pres und Skript mit dem Präfix script ist schon in dem Code-Beispiel 2 definiert worden. Die Benutzung in einem XML-Dokument des Schemas könnte folgendermaßen aussehen:
<footnote pres:on="false" pres:delta="" 
          script:on="true" script:delta="">
 Der Text, der in der Fußnote erscheint.
</footnote>
Diese Angaben sind für fast alle Elemente machbar. Für einige Elemente sind sie allerdings nicht sinnvoll, beispielsweise bei einzelnen Elementangaben wie der URI zu einer Grafik. Dabei ist nur die Funktionalität für die gesamten Grafikinformationen wünschenswert, damit diese für spezielle Ausprägungen ausgewählt werden können. Eine besondere Stellung für die diversen Ausprägungen kommt noch den Titeln der Kapitel zu. Diese dürfen stets nur einmal auftreten. Damit können keine unterschiedlichen Angaben für verschiedene Ausprägungen gemacht werden. Um dennoch unterschiedliche Titel zu erlauben, wurde den Kapiteln noch ein Substitutionstitel substitutetitle mitgegeben. Dieser wird standardmäßig nicht eingesetzt, aber er kann bei unterschiedlichen Ausprägungen als Ersatz für den eigentlichen langen Titel dienen.
next up previous contents
Nächste Seite: 8.3 Generierung der Ausgabe Aufwärts: 8.2 Datenformat in XML Vorherige Seite: 8.2.2 Beziehungen der Elemente   Inhalt
Tanja Schniederberend 2003-06-11