Galileo Computing < openbook >
Galileo Computing - Professionelle Buecher. Auch fuer Einsteiger.
Galileo Computing - Professionelle Buecher. Auch fuer Einsteiger.


Kompendium der Informationstechnik
 von Sascha Kersken
EDV-Grundlagen, Programmierung, Mediengestaltung
Buch: Kompendium der Informationstechnik
gp Kapitel 15 XML
  gp 15.1 Der Aufbau von XML-Dokumenten
    gp 15.1.1 Die grundlegenden Bestandteile von XML-Dokumenten
    gp 15.1.2 Wohlgeformtheit
  gp 15.2 DTDs und XML Schema
    gp 15.2.1 Document Type Definitions (DTDs)
    gp 15.2.2 Namensräume
    gp 15.2.3 XML Schema
  gp 15.3 XSLT
  gp 15.4 Grundlagen der XML-Programmierung
    gp 15.4.1 SAX
    gp 15.4.2 DOM
  gp 15.5 Zusammenfassung

gp

Prüfungsfragen zu diesem Kapitel (extern)

Kapitel 15 XML

Eine Theorie sollte so einfach wie möglich sein, aber nicht einfacher.
– Albert Einstein

XML, die Extensible Markup Language (erweiterbare Auszeichnungssprache), ist kein bestimmtes Dokumentformat, sondern eine Metasprache zur Definition beliebiger Auszeichungssprachen. Diese Sprachen können Textdokumente, Vektorgrafiken, multimediale Präsentationen, Datenbanken oder andere Arten von strukturierten Daten beschreiben. XML wurde vom World-Wide-Web-Konsortium (W3C) entworfen und standardisiert. Es handelt sich um eine schlanke, moderne und um spezielle Internetfähigkeiten ergänzte Weiterentwicklung der klassischen Metasprache SGML (Standard Generalized Markup Language), die Ende der 60er-Jahre des vorigen Jahrhunderts erfunden und in den 80ern entscheidend weiterentwickelt wurde.

Die XML-Spezifikation selbst enthält nur wenige formale Regeln für den Aufbau von Dokumenten. Wenn Sie sich an diese – weiter unten erläuterten – Regeln halten, erzeugen Sie ein wohlgeformtes XML-Dokument. Darüber hinaus besteht die Möglichkeit, Standards für XML-Dokumentformate zu definieren und Dokumente von diesen Standards abhängig zu machen. Dokumente, die auf solchen Formatdefinitionen basieren, sind nicht nur wohlgeformt, sondern auch gültig. Die klassische, bereits in SGML bekannte Form für solche Dokumentklassen ist die Document Type Definition oder DTD. Eine moderne Alternative, die zum einen leistungsfähiger ist und zum anderen selbst in reinem XML verfasst wird, ist XML Schema.

Vorteile von Klartextformaten

Die interessanteste Frage ist im Grunde, was XML eigentlich gegenüber anderen textbasierten Auszeichnungssprachen auszeichnet – davon gibt es nämlich unzählige für die verschiedensten Arten von Dokumenten. Grundsätzlich bietet ihre Verwendung eine Reihe von Vorteilen:

gp  Sämtliche Konfigurations- und Strukturinformationen sind für Menschen lesbar und können notfalls auch manuell geändert werden.
gp  Die Dokumente lassen sich auf jedem beliebigen Computersystem in einem einfachen Texteditor öffnen und eventuell bearbeiten. Der reine Textinhalt erschließt sich auch Anwendern, die die verwendeten Auszeichnungsbefehle nicht verstehen.
gp  Der Austausch von Dokumenten mit anderen Anwendungen, neuen Versionen einer Anwendung oder Programmiersprachen ist erheblich einfacher als bei Binärformaten.

Im Gegensatz zu XML haben allerdings fast alle anderen textbasierten Formate jeweils spezielle Aufgaben: Beispielsweise dient LaTeX dem Erstellen von Vorlagen für den professionellen Satz. PostScript beschreibt dagegen fertig formatierte Ausgabeseiten für Highend-Drucker und -Belichter. Diese beiden Formate wurden bereits in Kapitel 11, Datei- und Datenformate, angesprochen. Des Weiteren besitzen UNIX-Serveranwendungen und viele andere Programme jeweils ein eigenes, ASCII-basiertes Konfigurationsdateiformat. In Kapitel 14, Netzwerkanwendung, wird zum Beispiel die Konfigurationsdatei des Webservers Apache erläutert.

Universelles XML

XML ist dagegen eine universelle Sprache; es spielt keine Rolle, ob Sie Ihre Musik-CD-Sammlung, Ihre Doktorarbeit oder Ihre Geschäftsdaten in einem XML-Dokument speichern. Wichtig ist allerdings, zu verstehen, dass XML immer nur die Struktur und den Aufbau der Daten beschreibt. Das Layout der Druck- oder Webversion von Textinhalten muss durch eine externe Stil- oder Formatierungssprache beschrieben werden, beispielsweise durch das weiter unten beschriebene XSLT. Auch die Aufbereitung und Darstellung von Datendokumenten ist nicht im XML-Format selbst festgelegt, sondern wird durch Programmierung oder durch ein spezielles Anwendungsprogramm durchgeführt.

Übrigens werden in der Praxis gar nicht so oft neue Dokumentformate für eigene Anwendungen entwickelt. Der überwiegende Anteil der Anwendungen von XML beruht auf dem Einsatz vorhandener XML-basierter Sprachen. Beispiele sind hier etwa die Webseiten-Auszeichnungssprache XHTML, das Vektorgrafikformat SVG oder die beliebte Handbuch- und Dokumentationssprache DocBook. XHTML wird in Kapitel 16, HTML und XHTML, ausführlich erläutert.

Eine wichtige Frage wurde bisher noch nicht angesprochen: Wie werden XML-Dokumente editiert und abgespeichert? Darauf gibt es keine allgemein gültige Antwort. Prinzipiell handelt es sich bei XML-Dokumenten um Textdateien, Sie können sie also mit Ihrem bevorzugten Texteditor eingeben. Die Vor- und Nachteile verschiedener Texteditoren werden zu Beginn des nächsten Kapitels für HTML erörtert; für XML-Dokumente gelten ähnliche Kriterien. Wichtig ist allerdings, dass der gewählte Texteditor den Zeichensatz unterstützt, den das XML-Dokument verwendet.

XML-Editoren

Neben den einfachen Texteditoren werden inzwischen Unmengen spezieller XML-Editoren angeboten, sowohl Open-Source-Lösungen als auch kommerzielle Programme. Bekannte kommerzielle Editoren sind beispielsweise XMLSpy für Win32 von der österreichischen Firma Altova (www.xmlspy.com) oder der Java-basierte Oxygen XML-Editor (www.oxygenxml.com). Zu den Open-Source-Lösungen gehört beispielsweise der ebenfalls in Java geschriebene Editor Xerlin (www.xerlin.org).

Ein guter XML-Editor bietet neben dem direkten Bearbeiten der XML-Codes die Möglichkeit, XML-Dokumente in einer Baumansicht oder anderweitig visuell zu editieren. Außerdem sollten zusätzliche Formate wie DTDs, XML Schema, XSLT und so weiter unterstützt werden.

Abgesehen davon verwenden viele Anwendungsprogramme XML-basierte Datenformate, beispielsweise OpenOffice oder die neuesten Versionen der Microsoft-Office-Programme. Dennoch käme wohl kaum jemand auf die Idee, diese Dokumente von Hand mit Hilfe eines Text- oder XML-Editors zu bearbeiten. Ebenso gibt es spezielle Editoren für besondere XML-Formate wie XHTML oder SVG. Letzteres lässt sich beispielsweise leicht aus Adobe Illustrator exportieren.

Dateiendungen und MIME-Types

Gespeichert werden XML-Dokumente entweder als Datei mit der Endung .xml, wenn es sich um allgemeine XML-Dokumente handelt, oder mit einer speziellen Dateierweiterung, falls ein besonderes XML-Format verwendet wird. Zum Beispiel werden XHTML-Dokumente üblicherweise mit der Endung .htm oder .html gespeichert; SVG-Dateien besitzen dagegen die Erweiterung .svg.

Der für Webserver und E-Mail-Anwendungen wichtige MIME-Type allgemeiner XML-Dokumente ist text/xml, während spezielle Formate entweder einen ganz eigenen Typ wie text/html oder eine Kombination wie image/svg+xml bilden. Beachten Sie, dass ein SVG-Dokument zwar formal noch immer ein Textdokument ist, aber den Verwendungszweck eines Bildes erfüllt – deshalb der Haupttyp image.


Galileo Computing

15.1 Der Aufbau von XML-Dokumenten  downtop

Jedes XML-Dokument besteht aus einer Hierarchie ineinander verschachtelter Steueranweisungen, die als Tags bezeichnet werden, und kann zusätzlich einfachen Text enthalten. Die XML-Tags werden in spitze Klammern gesetzt, also zwischen ein <-Zeichen und ein >-Zeichen. Sie können ein oder mehrere Attribute in der Form attribut="wert" enthalten. Jedes Tag wird unter Angabe seiner Bezeichnung geöffnet (zum Beispiel <test>) und weiter unten im Dokument durch eine Wiederholung mit vorangestelltem Slash (/) wieder geschlossen (etwa </test>). Wahrscheinlich haben Sie eine solche Syntax schon einmal gesehen, wenn Sie sich den Quellcode von HTML-Dokumenten angesehen haben, die ähnlich aufgebaut sind.


Galileo Computing

15.1.1 Die grundlegenden Bestandteile von XML-Dokumenten  downtop

Das Beispiel in Listing 15.1 zeigt ein einfaches XML-Dokument, in dem eine Übersicht über einige Bücher zum Thema XML geboten wird.

Listing 15.1   Eine Liste von XML-Büchern als XML-Dokument

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<xml-buecher>
  <buch isbn="3898421376">
    <autor>
      <name>Vonhoegen</name>
      <vorname>Helmut</vorname>
    </autor>
    <titel>Einstieg in XML</titel>
    <auflage>1</auflage>
    <ort>Bonn</ort>
    <jahr>2002</jahr>
    <verlag>Galileo Computing</verlag>
  </buch>
  <buch isbn="3827316367">
    <autor>
      <name>Behme</name>
      <vorname>Henning</vorname>
    </autor>
    <autor>
      <name>Mintert</name>
      <vorname>Stefan</vorname>
    </autor>
    <titel>XML in der Praxis</titel>
    <auflage>2</auflage>
    <ort>München</ort>
    <jahr>2000</jahr>
    <verlag>Addison-Wesley</verlag>
  </buch>
  <buch isbn="3897213370">
    <autor>
      <name>Harold</name>
      <vorname>Eliotte Rusty</vorname>
    </autor>
    <autor>       <name>Means</name>
      <vorname>W. Scott</vorname>
    </autor>
    <titel>XML in a Nutshell</titel>
    <auflage>2</auflage>
    <ort>Köln</ort>
    <jahr>2003</jahr>
    <verlag>O&apos;Reilly</verlag>
  </buch>
  <!-- und viele weitere Bücher -->
</xml-buecher>

Die xml-Steueranweisung

Jedes XML-Dokument beginnt mit einer xml-Steueranweisung, die die verwendete XML-Version (bisher immer 1.0) und den Zeichensatz des Dokuments angibt:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>

Die hier verwendete Zeichencodierung utf-8 ist eine spezielle Schreibweise des Unicode-Zeichensatzes: Die Zeichen 0 bis 255, die zum Latin-1-Zeichensatz gehören, benötigen nur 1 Byte, alle anderen Unicode-Zeichen dagegen 2 bis 4. Selbstverständlich können Sie auch andere Zeichensätze angeben, zum Beispiel iso-8859-1 für den USA/Westeuropa-Standardzeichensatz oder gb2312 für Chinesisch (VR China). Dazu muss der verwendete Zeichensatz allerdings von Ihrem Text- oder XML-Editor unterstützt werden.

Das Attribut standalone gibt an, ob sich das Dokument auf ein externes Formatdokument wie eine DTD oder ein XML Schema bezieht oder nicht – yes besagt, dass das Dokument selbstständig ist und nicht von einer solchen Standardisierung abhängt.

Steueranweisungen (auch PI, Processing Instructions) können in XML-Dokumenten an beliebiger Stelle vorkommen. Es handelt sich um Anweisungen für interpretierende Geräte oder Programme, die mit dem Dokument selbst nichts zu tun haben.

XML-Elemente

Die zweite Zeile in Listing 15.1 enthält den Beginn des Wurzelelements. In der Hierarchie von XML-Dokumenten werden die Tags als Elemente bezeichnet. Wichtig ist, dass genau ein Tag das gesamte Dokument umschließt; dieses wird als Wurzelelement bezeichnet. Das Wurzelelement des vorliegenden Dokuments sieht folgendermaßen aus:

<xml-buecher>
  <!-- umschlossener Inhalt -->
</xml-buecher>

Verschachtelung von Tags

Innerhalb des Wurzelelements sind weitere Elemente mit ihren Unterelementen und Textinhalten verschachtelt. Das Wichtigste ist dabei, dass Sie auf die korrekte Reihenfolge bei der Verschachtelung achten. Eine Schreibweise wie die folgende ist nicht gestattet:

<autor><name>Vonhoegen</autor></name>

Richtig muss es folgendermaßen lauten:

<autor><name>Vonhoegen</name></autor>

Die hierarchische Gliederung von XML-Dokumenten ergibt eine Art Baumdiagramm. Das Wurzelelement bildet logischerweise die Wurzel, die verschachtelten Elemente sind die Äste und Zweige und die Textinhalte die Blätter. Abbildung 15.1 zeigt einen Ausschnitt des Dokuments aus Listing 15.1 in Form eines solchen Diagramms.


Abbildung 15.1   Hierarchie eines XML-Dokuments als Baumdiagramm

Abbildung
Hier klicken, um das Bild zu Vergrößern


Die Namen von Tags und den weiter unten besprochenen Attributen dürfen aus Buchstaben und Ziffern sowie aus den folgenden Sonderzeichen bestehen: _  (Unterstrich), – (Bindestrich) und . (Punkt). Das erste Zeichen darf keine Ziffer sein. Es wird zwischen Groß- und Kleinschreibung unterschieden.

Wie bereits indirekt erwähnt, muss jedes XML-Tag, das geöffnet wurde, auch wieder geschlossen werden. Erst das öffnende und das schließende Tag zusammen ergeben das eigentliche Element. Geschlossen wird ein Tag durch die Wiederholung seines Namens mit vorangestelltem Slash (/). In der Regel steht zwischen den beiden Tags Inhalt, der aus tiefer verschachtelten Tags oder aus einfachem Text bestehen kann. Mitunter kommt es jedoch vor, dass ein Element leer ist, also keinen weiteren Inhalt enthält.

Leere Tags

Zum Beispiel könnte die Bücherliste für jedes Buch ein zusätzliches Element enthalten, das auf den Dateinamen und den MIME-Type einer Abbildung des Buchcovers verweist. Für diese Angaben würden sich Attribute (siehe nächster Unterabschnitt) besonders gut eignen:

...
<titel>Einstieg in XML</titel>
<cover datei="einstieg_xml.gif" type="image/gif">
</cover>

Da alle erforderlichen Informationen über das Cover-Bild bereits in den Attributen stehen, benötigt das Element cover keinen verschachtelten Inhalt. Falls Sie bereits Kenntnisse in HTML haben, könnten Ihnen die dort verwendeten »Einfach-Tags« wie der Zeilenumbruch <br> vertraut sein. In XML ist eine solche Ausnahme nicht zulässig, die Schreibweise stammt noch aus SGML. Als »Entschädigung« bietet XML allerdings eine kurzgefasste Schreibweise für leere Elemente an. Das cover-Element könnten Sie entsprechend dieser Syntax auch folgendermaßen schreiben:

<cover datei="einstieg_xml.gif" type="image/gif" />

Der Slash am Ende des Tags ersetzt also das vollständige schließende Tag. Das Leerzeichen vor dem End-Slash ist nach der eigentlichen XML-Syntax nicht erforderlich. Allerdings ist es nützlich, um kompatiblen Code für Browser abzuliefern, die nur HTML, aber nicht das neue XHTML verstehen. Der oben erwähnte Zeilenumbruch wird in der voll kompatiblen Fassung also so geschrieben:

<br />

Alte Browser ignorieren den Slash einfach, während XML-Parser kein Problem mit dem Leerzeichen haben. Falls Sie dagegen einfach <br/> schreiben, versteht ein älterer Browser Sie möglicherweise nicht, weil er dies für ein unbekanntes Tag hält.

Genaueres über klassisches HTML im Unterschied zu XHTML erfahren Sie in Kapitel 16, HTML und XHTML.

Attribute

Das Element buch in Listing 15.1 enthält jeweils ein Attribut namens isbn. Attribute stehen nur beim öffnenden Tag und werden beim schließenden niemals wiederholt. Die Form ist stets attributname="attributwert" oder attributname='attributwert'. Die doppelten oder einfachen Anführungszeichen sind zwingend erforderlich. Zwischen dem Attributnamen, dem Gleichheitszeichen und dem öffnenden Anführungszeichen ist kein Abstand erlaubt, während mehrere Attribute durch Whitespace voneinander getrennt werden, genau wie Tag-Name und Attribut.

Verwendungszweck von Attributen

Allgemein werden Attribute häufig verwendet, um Ordnungskriterien oder Meta-Informationen für Elemente anzugeben. Allerdings ergäbe sich kein Unterschied im Informationsgehalt des Dokuments, wenn Sie statt

<buch isbn="3898421376">
   ...
</buch>

die folgende Schreibweise wählen würden:

<buch>
   <isbn>3898421376</isbn>
   ...
</buch>

Beachten Sie jedoch, dass Attribute immer nur für Informationen geeignet sind, die nur einmal vorkommen. Es ist nämlich nicht zulässig, zwei Attribute gleichen Namens in ein und demselben Tag zu verwenden. Außerdem ist ein Attribut naturgemäß nicht für mehrgliedrige Angaben geeignet, die eigentlich verschachtelt werden müssen.

Das folgende Beispiel zeigt einen extrem schlechten Stil bei der Verwendung von Attributen, da es vor allem die erste Regel missachtet:

<buch isbn="3827316367" autor1="Behme, Henning" autor2="Mintert, Stefan">
   ...
</buch>

Was machen Sie, wenn ein Buch zehn Autoren hat (bei Anthologien oder umfangreichen wissenschaftlichen Werken ist das keine Seltenheit)?

Noch übler ist die folgende Schreibweise, die beide Regeln ignoriert:

<buch isbn="3827316367" autor-name1="Behme" 
autor-vorname1="Henning" autor-name2="Mintert" autor-vorname2="Stefan">
  ...
</buch>

Diese beiden schlechten Beispiele sollten Sie so schnell wie möglich wieder vergessen; sie sind zwar formal zulässig, stilistisch aber vollkommen indiskutabel.

Entity-Referenzen

Beim dritten Buch steht als Verlagsangabe O&apos;Reilly; möglicherweise haben Sie bereits erraten, dass es sich um den O'Reilly-Verlag handelt. &apos; ersetzt in einem XML-Dokument den Apostroph.

Eingebaute XML-Entities

Einige Zeichen sind in XML-Dokumenten nicht zulässig, sondern müssen durch spezielle Escape-Sequenzen ersetzt werden, die als Entity-Referenzen bezeichnet werden. Eine Entity-Referenz beginnt mit einem &-Zeichen, darauf folgt ein spezieller Code und am Ende ein Semikolon. Tabelle 15.1 zeigt die fünf Zeichen, die nicht gestattet sind, und die passenden Entity-Referenzen.


Tabelle 15.1   Die fünf Standard-Entity-Referenzen in XML

Zeichen Entity-Referenz Bedeutung
< &lt; less than
> &gt; greater than
& &amp; Ampersand (»and per se and«)
' &apos; Apostroph
" &quot; quotation mark

Alle diese Zeichen haben im XML-Code eine spezielle Bedeutung: < und > umschließen die Tags. Die Werte von Attributen stehen in Anführungszeichen oder wahlweise in einfachen Anführungszeichen (Apostrophen). Das &-Zeichen schließlich leitet eben die Entity-Referenzen ein.

Numerische Entity-Referenzen

Neben diesen vorgefertigten Entity-Referenzen können Sie in XML auch beliebige Unicode-Zeichen numerisch angeben. Die Syntax ist entweder &#Dezimalcode; oder &#xHexadezimalcode;. Beispielsweise können Sie ein »Registered Trademark« (®) durch die Zeichenfolge &#174; (dezimal) oder &#xAE; (hexadezimal) erzeugen.

Schließlich können Sie eigene Entities definieren und in Ihren Dokumenten Referenzen darauf verwenden. Dies ermöglicht Ihnen den schnellen Zugriff auf häufig benötigte Sonderzeichen oder sogar XML-Codeblöcke. Die Definition von Entities wird innerhalb von DTDs durchgeführt, die weiter unten behandelt werden.

CDATA-Abschnitte

Der normale Text in XML-Dokumenten besteht aus so genannten PCDATA-Abschnitten; »PCDATA« steht für »parsed character data«. Dies bedeutet, dass einige Sonderzeichen innerhalb des Textes gemäß ihrer speziellen XML-Bedeutung behandelt werden – es sei denn, Sie verwenden die im vorigen Unterabschnitt vorgestellten Entity-Referenzen.

In einigen Fällen können Entity-Referenzen sehr störend sein. Stellen Sie sich zum Beispiel eine XML-Version des vorliegenden Kapitels vor – andauernd werden XML-Codebeispiele gezeigt. Diese müssen in normalen Textabschnitten die Entity-Referenzen verwenden.

Der folgende Code ist die XML-Entsprechung eines Ausschnitts aus dem vorigen Unterabschnitt:

<para>
  Das <code>cover</code>-Element könnten Sie nach dieser 
  Syntax auch folgendermaßen schreiben:
</para>
<codeblock>
  &lt;cover datei=&quot;einstieg_xml.gif&quot; 
  type=&quot;image/gif&quot; /&gt;
</codeblock>
<para>
  Der Slash am Ende des Tags ersetzt also das komplette 
  schließende Tag.
</para>

Das XML-Codebeispiel zwischen den Tags <codeblock> und </codeblock> ist durch die Häufung von Entity-Referenzen absolut unleserlich. Um solche Probleme zu vermeiden, haben sich die XML-Entwickler ein spezielles Format für solche Textblöcke ausgedacht, die so genannten CDATA-Abschnitte. Diese Abkürzung bedeutet »character data«. Innerhalb dieser speziellen Bereiche sind alle Sonderzeichen erlaubt und werden nicht als XML interpretiert.

Ein CDATA-Abschnitt wird durch die Sequenz <![CDATA[ eingeleitet und durch ]]> abgeschlossen. Mit Hilfe eines CDATA-Abschnitts wird das obige Beispiel sofort viel lesbarer:

<para>
  Das <code>cover</code>-Element könnten Sie nach dieser 
  Syntax auch folgendermaßen schreiben:
</para>
<codeblock>
<![CDATA[
  <cover datei="einstieg_xml.gif"   type="image/gif" />
]]>
</codeblock>
<para>
  Der Slash am Ende des Tags ersetzt also das komplette 
  schließende Tag.
</para>

Es versteht sich von selbst, dass die Zeichenfolge ]]> innerhalb eines CDATA-Blocks unzulässig ist – schließlich beendet sie eben diesen Block. Genau deshalb wurde eine so unwahrscheinliche Zeichensequenz gewählt.


Galileo Computing

15.1.2 Wohlgeformtheit  toptop

Jedes XML-Dokument muss eine Reihe formaler Regeln erfüllen, um wohlgeformt zu sein. XML-Dateien, die diesen Regeln nicht genügen, werden von XML-Parsern in Anwendungen und Programmiersprachen nicht verarbeitet, sondern erzeugen Fehlermeldungen. In diesem Unterabschnitt werden die Regeln für die Wohlgeformtheit noch einmal explizit erläutert. Zwar wurden sie bereits am Rande erwähnt, sind aber wichtig genug, um genauer erklärt zu werden.

Regeln für die Wohlgeformtheit

Hier sehen Sie zunächst eine kurze Liste aller Regeln für die Wohlgeformtheit:

gp  Ein XML-Dokument benötigt genau ein Wurzelelement: Ein bestimmtes Element muss alle anderen Elemente und Textinhalte umschließen.
gp  Alle Elemente müssen korrekt ineinander verschachtelt werden; das zuletzt geöffnete Element wird als Erstes wieder geschlossen.
gp  Jedes Element besteht aus einem öffnenden und einem schließenden Tag; »Einfach-Tags« wie in HTML gibt es nicht. Für leere Tags existiert die spezielle Kurzfassung mit dem End-Slash.
gp  Attribute haben die Form name="wert". Der Wert muss stets in Anführungszeichen stehen.
gp  Die Namen von Tags und Attributen dürfen nur Buchstaben, Ziffern, Unterstriche, Bindestriche und Punkte enthalten. Es wird zwischen Groß- und Kleinschreibung unterschieden. Das erste Zeichen darf keine Ziffer sein.
gp  Bestimmte Zeichen sind in XML-Dokumenten nicht zulässig: <, >, &, " und ' müssen durch die Entity-Referenzen &lt;, &gt;, &amp;, &quot; beziehungsweise &apos; ersetzt werden. Die Definition weiterer Entity-Referenzen ist zulässig.
gp  CDATA-Blöcke ermöglichen die beliebige Verwendung der Sonderzeichen, die normalerweise durch Entity-Referenzen ersetzt werden müssen. Ein CDATA-Abschnitt steht zwischen <![CDATA[ und ]]>.

Die meisten dieser Regeln wurden weiter oben bereits ausführlich genug erläutert. Im Folgenden wird allerdings noch einmal die Bedeutung des Wurzelelements und der korrekten Verschachtelung von Tags hervorgehoben.

Wurzelelemente

Die Forderung nach einem Wurzelelement bedeutet, dass Code wie der folgende kein vollständiges XML-Dokument bildet:

<buch>
  <titel>Einstieg in XML</titel>
</buch>
<buch>
  <titel>XML im Unternehmen</titel>
</buch>

Dies ist bestenfalls ein Dokument-Fragment. Manche XML-fähigen Anwendungen sind in der Lage, mit solchen Fragmenten umzugehen. Sie dürfen sich allerdings niemals darauf verlassen. Korrekt wäre dagegen folgende Fassung:

<xml-buecher>
  <buch>
    <titel>Einstieg in XML</titel>
  </buch>
  <buch>
    <titel>XML im Unternehmen</titel>
  </buch>
</xml-buecher>

Das Element xml-buecher ist das Wurzelelement des gesamten Dokuments; die Tags <xml-buecher> und </xml-buecher> umschließen alle anderen Inhalte.

Bei vielen vordefinierten XML-basierten Dokumentformaten ist das Wurzelelement ein Hinweis auf das Format selbst. Beispielsweise lautet das Wurzelelement eines XHTML-Dokuments html. Der gesamte Inhalt von HTML-Dokumenten wird also von den Tags <html> und </html> umschlossen.

Korrekte Verschachtelung

Wie bereits erwähnt, muss die korrekte Verschachtelungsreihenfolge von XML-Elementen beachtet werden. Tags werden von außen nach innen geöffnet und in umgekehrter Reihenfolge wieder geschlossen. Das zuletzt geöffnete Tag wird demnach zuerst geschlossen.

Diese Regel ist im Grunde leicht zu merken und einzuhalten. Vielleicht verwirrt es Sie aber in dem Fall, dass zwei Tags unmittelbar hintereinander geöffnet werden, die Sie später auch wieder gleichzeitig schließen möchten.

Verschachtelungsfehler

Stellen Sie sich beispielsweise vor, Sie hätten für die Formatierung eines Textdokuments zwei Elemente namens fett und kursiv definiert und wollten nun einige Wörter fett und kursiv darstellen. In diesem Fall könnte es leicht passieren, dass Sie denken: Diese Wörter sollen fett und kursiv sein. Wenig später denken Sie sich: Dieses Wort soll schon nicht mehr fett und nicht mehr kursiv sein. Dieser Sprachgebrauch würde die folgende Formulierung in XML nahe legen:

Dieser Text ist <fett><kursiv>fett und kursiv</fett></kursiv> 
und dieser nicht mehr.

Allerdings ist dieses Konstrukt absolut verboten. Die richtige Syntax lautet natürlich folgendermaßen:

Dieser Text ist <fett><kursiv>fett 
und kursiv</kursiv></fett> und dieser nicht mehr.

Gute XML- oder HTML-Editoren weisen im Übrigen schon während der Eingabe darauf hin, dass Sie eine falsche Verschachtelung verwendet haben.

  

Einstieg in PHP 5

Einstieg in Java

C von A bis Z

Einstieg in C++

Einstieg in Linux

Einstieg in XML

Apache 2




Copyright © Galileo Press GmbH 2004
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press GmbH, Gartenstraße 24, 53229 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de