19.2 XML
Das Kürzel XML steht für Extensible Markup Language (erweiterbare Textauszeichnungssprache), eine Sprache zur strukturierten Darstellung von Datenstrukturen. Texte in dieser Sprache sind, nach einer kurzen Eingewöhnungsphase, einfach zu lesen. Andererseits sind sie so gut strukturiert, dass sie auch einfach durch Programme verarbeitet werden können. Das .NET Framework bietet im Namensraum System.Xml dazu viele Klassen an, die kaum Wünsche offen lassen. Microsoft hat einen Dialekt dieser Sprache namens XAML entwickelt, der ganz auf die Entwicklung von grafischen Benutzerschnittstellen zugeschnitten ist. Ihr zur Seite gestellt ist VB.NET, um alle nicht das Aussehen betreffenden Aspekte einer Anwendung zu formulieren. Da XAML auf XML aufbaut, wird XML in diesem Abschnitt vorgestellt, bevor XAML im nächsten Abschnitt folgt.
19.2.1 Tags
Jedes XML- (und jedes XAML-)Dokument besteht aus Sätzen, die Elemente genannt werden. Das Etikett eines Elements (Tag) kennzeichnet die Art des Elements, vergleichbar mit zum Beispiel Aussage- und Fragesätzen in der gesprochenen Sprache. Über den Inhalt des Elements bzw. Satzes wird nichts ausgesagt. In der gesprochenen Sprache werden Interpunktionszeichen wie Komma, Punkt und Apostroph zur Trennung von Wörtern und Sätzen gebraucht. Dieselbe Idee wird in XML verfolgt, nur die Zeichen sind etwas anders. Ein Element beginnt immer mit einem »Kleiner als«-Zeichen <, gefolgt vom Tag. Im einfachsten Fall folgt dann direkt ein »Größer als«-Zeichen >, das die Einleitung des Elements abschließt. In der gesprochenen Sprache steht am Ende jedes Satzes ein Punkt. In XML treten an die Stelle des Punktes vier Teile: ein »Kleiner als«-Zeichen <, ein Schrägstrich /, das Tag und ein »Größer als«-Zeichen >. Damit können wir unseren ersten Satz in XML formulieren:
<Personen></Personen>
Dieses Element ist komplett richtig, hat aber keinen Inhalt. Bitte beachten Sie, dass die wörtliche Wiederholung des Tags zwingend ist, XML unterscheidet außerdem zwischen Groß- und Kleinschreibung. Für ein Element ohne Inhalt gibt es auch eine Kurzschreibweise ohne schließendes Tag.
<Personen/>
19.2.2 Inhalt
Jeglicher Inhalt des Elements steht zwischen dem < des Elementanfangs und dem > des Elementendes. Bitte beachten Sie, dass aufeinanderfolgende Leerzeichen, Tabulatoren und Zeilenvorschübe oder Kombinationen davon in der Voreinstellung wie ein einziges Leerzeichen behandelt werden.
<Person> Lebenslauf: ... </Person>
Größere Dokumente werden in der Regel durch Überschriften gegliedert. In XML wird diese Strukturierung durch eine Schachtelung der Elemente erreicht. Anstelle des reinen Texts treten dann ein oder mehrere komplette Elemente. Im folgenden Beispiel sind es zwei:
<Personen> <Person>Lebenslauf: ...</Person> <Person/> </Personen>
19.2.3 Attribute
In der gesprochenen Sprache können Sätze verschieden betont werden. Dieses Konzept findet sich bei XML in den Attributen eines Elements wieder, die ein Element näher beschreiben. Im folgenden Beispiel bekommt ein leeres Element einen Namen. Es wird je einmal voll ausgeschrieben und abgekürzt. Ein Leerzeichen vor Name ist zwingend, das hinter dem konkreten Namen optional. Ein Attribut, hier Name, darf pro Element maximal einmal benutzt werden, und sein Wert muss in Anführungszeichen gesetzt werden.
<Person Name="Schmidt" ></Person> <Person Name="Müller" />
19.2.4 Wurzel
XML ist gegenüber der gesprochenen Sprache noch etwas strikter. Der gesamte Dokument-inhalt muss unter einer einzigen Überschrift stehen. Daher sollten in einem XML-Dokument einheitliche Daten stehen. Im Fall von XAML sind dies die Daten zu einer einzigen grafischen Benutzeroberfläche.
<Betrieb> <Personen> <Person Name="Schmidt" >Lebenslauf: ...</Person> <Person Name="Müller" /> </Personen> <Gebäude> <Haus Straße="Hauptstraße"/> </Gebäude> </Betrieb>
Innerhalb des Wurzelelements werden in XAML alle Elemente angegeben, aus denen sich das Fenster zusammensetzt. Üblicherweise fügt man aber zuerst ein Containerelement ein, in dem die anderen Elemente wie Button oder TextBox positioniert werden. Typische Containerelemente sind Grid oder StackPanel. Diese Containerelemente haben die Eigenschaft Children, die eine Liste von UIElement-Objekten verwaltet.
19.2.5 Namensräume
Wenn, wie im Fall von XAML, ein XML-Dialekt sehr viele verschiedene Tags und Attribute enthält, kann es leicht zu Konflikten in Benennungen kommen. Daher erlaubt es XML, die Namen in Namensräumen zu organisieren. Vergleichbar den Namensräumen in .NET, haben gleichlautende Namen verschiedener Namensräume nichts miteinander zu tun. Sie werden als Attribut eines Elements deklariert und wirken auf das Element sowie alle in diesem Element enthaltenen Unterelemente. Im nächsten Beispiel ist in der Namensraumdeklaration in der ersten Zeile der Teil vor dem Doppelpunkt xmlns fest, und der dahinter kann frei gewählt werden, muss aber eindeutig sein. Ein Namensraum fasst alle Namen mit einem Bezug zu dem angegebenen Link zu einer Gruppe zusammen und kann – mit einem folgenden Doppelpunkt – einem Element- oder Attributnamen vorangestellt werden, um den Namen eindeutig zu qualifizieren. Im Beispiel werden so die Kennungen id für Personen und Gebäude eindeutig unterscheiden. Die voll qualifizierten Namen haben nichts miteinander zu tun.
<Betrieb xmlns:pers="http://www.domain1.de" xmlns:geb="http://www.domain2.de"> <Personen> <Person Name="Schmidt" pers:id="1" >Lebenslauf</Person> <Person Name="Müller" pers:id="2" /> </Personen> <Gebäude> <Haus Straße="Hauptstraße" geb:id="1"/> </Gebäude> </Betrieb> <Personen xmlns:id="http://www.domain.de">
19.2.6 Kommentare
Kommentare werden zwischen <!-- und --> eingeschlossen und können dort stehen, wo auch Elementinhalte stehen. Sie dürfen keinen doppelten Bindestrich -- enthalten. Geschachtelte Kommentare sind also verboten.
<!-- irgendein Kommentar, der ignoriert wird -->
19.2.7 Entitäten
Beim Inhalt von Elementen und Attributen müssen Sie dafür sorgen, dass es zu keiner Fehlinterpretation der Zeichen <, > und & kommt, sodass irrtümlich durch den Text die Struktur des Dokuments verändert wird. Daher werden die Zeichen innerhalb eines Textes als <, > und & geschrieben:
- < wird im Text zu <
- > wird im Text zu >
- & wird im Text zu &
19.2.8 Zusammenfassung
Hier sind noch einmal die wichtigsten Aspekte von XML (und damit auch von XAML) aufgelistet:
- Elemente werden durch Tags beschrieben.
- Zu jedem Starttag muss es ein Endtag geben (gegebenenfalls abkürzend als />).
- Der Inhalt eines Elements steht zwischen dem Start- und dem Endtag.
- Elemente dürfen Attribute haben mit Zeichenketten als Wert.
- Elemente können ineinander verschachtelt werden.
- Ein Dokument hat genau ein Wurzelelement.
- Groß-/Kleinschreibung muss beachtet werden.
- Namen dürfen in Namensräumen organisiert sein.
- Kommentare sind möglich.
- Die Zeichen <, > und & in Attributwerten müssen als Entität codiert werden.
Ihre Meinung
Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.