XML/Regeln/Tags, Attribute, Wertzuweisungen und Kommentare

Aus SELFHTML-Wiki
< XML‎ | Regeln
Wechseln zu: Navigation, Suche

Beispiel Kaufmannsladen

Elemente

Illustration eines Wurzelbaums
Illustration eines Wurzelbaums

Wie bereits erwähnt, hat jedes Dokument genau ein Element. Dies würde in einer Trivialität enden, wenn diese Elemente selbst atomar wären. Dies ist nicht so, daher können Elemente beliebig ineinander verschachtelt werden. Die Definition, dass ein XML-Dokument nur ein Element enthalten darf, sagt also nichts über die Gesamtanzahl der Elemente aus, diese kann theoretisch unbegrenzt sein, da das Wurzelelement beliebig viele Elemente in sich enthalten kann. Mit dieser Systematik ist es möglich eine Baumstruktur zu realisieren, genauer gesagt einen Wurzelbaum.

Elemente können auf verschiedene Weise deklariert werden. Universell ist die Form Starttag – Inhalt – Endtag.

Tags

Tags (von engl. Tag, "Abgrenzer") sind Teile von Elementen. Jedes Element hat einen Start-Tag und einen End-Tag (in einer Sonderschreibweise können sie zusammengefasst werden). Start-Tags folgen der Form <NAME>, End-Tags der Form </NAME>, wobei NAME ein Platzhalter für einen beliebigen Typ eines Tags ist.

Beispiel für ein gültiges Element ohne Inhalt und Attribute des Typs "Kunde"

Beispiel
<Kunde></Kunde>

Für Tags ohne Inhalt existiert eine Sonderschreibweise in XML. Die folgenden Notationen sind gleichbedeutend.

Beispiel
<Kunde />
<!-- ist gleich -->
<Kunde></Kunde>

Wie schon im Abschnitt Elemente erwähnt, können die durch Tags gebildeten Elemente ineinander verschachtelt werden. Ein Beispiels ist diese XML-Datei zum Speichern von Daten über einen Kaufmannsladen.

Illustration des XML-Baums
Illustration des XML-Baumes des Beispiels

Beachten Sie bitte, dass die im Bild angedeutete Darstellung von „Lolli“ und „Zuckerstange“ als eigene Elementtypen ungünstig ist. Tut man das, müsste für jede neue Artikelart die DTD angepasst werden, damit das XML-Dokument überprüfbar bleibt. Es ist daher sinnvoller, einen Elementtyp <Artikel> zu definieren und darin über ein name-Attribut die Artikelbezeichnung festzuhalten.

Auch die Wahl des Elementtyps <Suesswaren> kann man diskutieren. Ein Elementtyp <Gruppe> oder <Warengruppe> würde die DTD deutlich vereinfachen und mehr Flexibilität bieten.

Beispiel
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Kaufmannsladen>
	<Waren>
		<Suesswaren>
			<Artikel id="47" name="Lolli" preis="5,00" />
			<Artikel id="13" name="Zuckerstange" preis="2,00" />
		</Suesswaren>
	</Waren>
	<Personal>
		<Mitarbeiter id="2">
			<Name>Dobermann</Name>
			<Anschrift>Beispielweg</Anschrift>
			<Telefon>515248</Telefon>
		</Mitarbeiter>
		<Mitarbeiter id="3">
			<Name>Meier</Name>
			<Anschrift>Knutallee</Anschrift>
			<Telefon>22222</Telefon>
		</Mitarbeiter>
	</Personal>
</Kaufmannsladen>

Dieses Beispiel enthält bereits eine Sache, welche noch nicht behandelt wurde: Attribute

Attribute

Attribute sind nähere Eigenschaften von Elementen. Ein Attribut besteht aus einem Attributnamen und einem Wert.

 <kunde kategorie="Geschäftskunde"></kunde>

In diesem Beispiel wurde ein Attribut mit dem Namen "kategorie" und dem Wert "Geschäftskunde" deklariert. Name und mögliche Werte sind frei wählbar, bis auf folgende Einschränkungen:

  • Ein Attributname darf nur einmal in einem Start-Tag oder Leerelement auftauchen
  • Der Attributstyp muss für die Gültigkeit des Elements deklariert sein. Sein Wert muss in dieser Deklaration als möglicher Wert in den Dokumententyp-Definitionen (DTD) auftauchen.
  • Ein Attribut darf weder direkt noch indirekt auf externe Entitäten verweisen.
  • Der Ersetzungstext einer internen Entität darf innerhalb von Attributwerten das Zeichen '<' nicht enthalten.

Darüber hinaus dürfen beliebig viele Attribute in einem Starttag oder Leerelement verwendet werden. Beispiele sind in XHTML viele vorhanden, etwa:

Attribute im Leerelement
<img scr="/gfx/bild.jpg" alt="Ein Bild" />
Attribute in einem Starttag
<table cellpadding="5" cellspacing="1">
	<tr>
		<td>Eine Zelle</td>
	</tr>
</table>

Regeln für Tags, Attribute, Wertzuweisungen und Kommentare

Für Tags, Attribute und ihre Wertzuweisungen gibt es in XML bestimmte Regeln, die Sie kennen müssen.

Groß-/Kleinschreibung von Element- und Attributnamen

XML unterscheidet im Gegensatz zu klassischem HTML strikt zwischen Groß- und Kleinschreibung. Die beiden folgenden Notationen sind beide XML-gerecht, aber aus Sicht von XML nicht das Gleiche:

Groß- und Kleinschreibung
<tier art="fisch">...</tier>
<Tier Art="Fisch">...</Tier>

Wenn Sie in einer DTD Tags und Attribute für eine XML-basierte Sprache definieren, sollten Sie also gleich auf die gewünschte Schreibweise achten. Wenn Sie im DTD-Bereich beispielsweise notieren:

Auf Schreibweise achten!
<!ELEMENT Platinentyp (#PCDATA)>
Dann müssen Sie im Datenbereich notieren:
<Platinentyp>...</Platinentyp>.
Falsch sind dagegen Notierungen wie:
<platinentyp>...</platinentyp> oder
<PLATINENTYP>...</PLATINENTYP>.

Auch bei Wertzuweisungen gilt die Unterscheidung zwischen Groß- und Kleinschreibung. Das ist besonders dann von Bedeutung, wenn Sie in einer DTD nur bestimmte Wertzuweisungen für ein Attribut erlauben, z. B. links, rechts oder zentriert.

Anführungszeichen bei Wertzuweisungen

Bei XML gilt ohne Ausnahme: alle Wertzuweisungen an Attribute müssen in Anführungszeichen stehen.

Baumstruktur
<bereich sprache=deutsch dialekt=bayerisch>     <!-- falsch -->
<bereich sprache="deutsch" dialekt="bayerisch"> <!-- richtig -->

Innerhalb von Wertzuweisungen an Attribute können Sie auch das Apostroph-Zeichen ' und das Anführungszeichen " verwenden. Diese beiden Zeichen müssen Sie dann aber unbedingt maskieren:

Apostroph und Anführungszeichen im Attributtext
<restaurant name="Susi&apos;s &quot;Imbiss&quot;"> <!-- Susi's "Imbiss" -->

Elemente bestehen aus Tags und End-Tags

In XML gibt es keine alleinstehenden Tags wie in HTML beispielsweise <br>, <img> oder <hr> – jedes Element muss aus Anfangs- und End-Tag bestehen. Es gibt in XML auch keine optionalen End-Tags, wie es in HTML etwa bei </li> oder </option> der Fall ist.

Ausnahme: Leere Elemente

Ausnahmen sind so genannte leere Elemente, also Elemente ohne Inhalt. Solche Elemente können ohne zugehöriges End-Tag notiert werden, müssen jedoch als leer gekennzeichnet werden.

Baumstruktur
<linie>         <!-- falsch -->
<linie/>        <!-- richtig -->
<linie />       <!-- richtig -->

Um ein Element als leer zu kennzeichnen, muss am Ende vor der schließenden spitzen Klammer ein Schrägstrich notiert werden. Das Leerzeichen davor ist optional, aber zu empfehlen. Denn <linie/> könnte ein unausgereifter XML-Parser auch fälschlich als unerlaubtes Zeichen des Elementnamens linie interpretieren.

Alternativ zu dieser Notation können Sie leere Elemente auch in der Form <linie></linie> notieren. Der Grund ist, dass XML eigentlich für jedes Element einen Inhalt vorsieht, und dass ein leeres Element einfach ein Element ohne Inhalt ist. Wichtig ist dabei jedoch, dass Anfangs- und End-Tag unmittelbar in Folge notiert werden, ohne irgendwelche Zeichen dazwischen!

Elementnamen

Elementnamen müssen ein paar Regeln einhalten:

Elementnamen
<xml-datei>         <!-- falsch -->
<datei-xml>         <!-- richtig -->
<1a>                <!-- falsch -->
<a1>                <!-- richtig -->
<gleich=gleich>     <!-- falsch -->
<gleich-gleich>     <!-- richtig -->
<mein element>      <!-- falsch -->
<mein-element>      <!-- richtig -->

Elementnamen dürfen nicht mit der Zeichenfolge xml und nicht mit Ziffern beginnen, und sie dürfen keine Gleichheitszeichen und keine Leerzeichen enthalten. Weitere Einzelheiten dazu im Abschnitt Regeln für Namen.

Kommentare

Innerhalb von XML-Dateien – auch innerhalb von DTD-Dateien oder DTD-Bereichen innerhalb einer XML-Datei – können Sie Ihre Daten oder Definitionen zur allgemeinen Verständlichkeit kommentieren. Dabei gelten die gleichen Regeln wie in HTML.

Kommentare
<lagertemp></lagertemp>
<!-- empfohlene Aufbewahrungstemperatur -->

Ein Kommentar beginnt mit der Zeichenfolge <!-- und endet mit -->. Er kann sich über mehrere Zeilen erstrecken. Was innerhalb des Kommentars steht, wird nicht interpretiert. Für Kompatibilität darf der String -- (doppeltes Minus) nicht in Kommentaren vorkommen.[1]

Referenzen

  1. W3C: Kommentarregeln in der XML Spezifikation