-----------------------------------------------------------------------
Aus infortis ag wird movento Schweiz AG...
Sie werden automatisch auf www.movento.com umgeleitet...
Sollte die Umleitung nicht klappen klicken Sie bitte -> hier <-.
-----------------------------------------------------------------------
| XML Datendeklaration |
|---|
| | Nachdem wir nun wissen,wie XML-Dokumente aufgebaut sind, hier noch einige weitere wichtige Begriffe zum Thema XML.
Die XML Dateninsel
Das Web ist eines der wichtigsten Hauptanwendungsgebiete von XML. Deshalb muss es auch möglich sein, XML in Webseiten zu integrieren. Ein solches XML-Dokument, das innerhalb einer Webseite auftaucht, nennt man eine XML-Dateninsel.
Eine XML-Dateninsel fängt immer mit dem Element "XML" an. Das Element "XML" kann zusätzlich noch das Attribut "ID" haben, welches es später ermöglicht, die Dateninsel von irgendwoher anzusprechen resp. zu identifizieren. Es gibt drei Methoden wie sie eine Dateninseln erzeugen können: inline, über eine Referenz oder über ein Script. Hier je ein Beispiel dazu:
inline:
<XML ID="Dateninsel1">
<Kunde>
<Name>Christian Heim</Name>
<Nummer>56545</Nummer>
</Kunde>
</XML>
über eine Referenz:
<XML ID="Dateninsel1" SRC="Kunde.xml">
</XML>
über ein Script:
<SCRIPT LANGUAGE="xml" ID="Dateninsel1">
<Kunde>
<Name>Christian Heim</Name>
<Nummer>56545</Nummer>
</Kunde>
</SCRIPT>
Das XML Objektmodel
Bis jetzt haben wir gelernt wie XML-Dokumente erstellt und in Webseiten eingebaut werden können. Wie aber kann man nun auf die Daten zugreifen, die im XML-Dokument gespeichert sind? Genau hier hilft uns das XML-Datenmodel.
Das XML-Datenmodel stellt eine Sammlung von Objekten zur Verfügung, die es Ihnen erlaubt, Daten in XML-Dokumenten zu manipulieren. Da Elemente in XML-Dokumenten verschachtelt werden (in Form einer Baumstruktur), steht für jede Ebene ein Objekt mit verschiedenen Eigenschaften und Methoden zur Verfügung. Die Objekte werden vom XML-Parser erstellt wenn das XML-Dokument geladen wird. Wie wir gesehen haben beinhalten neuere Browser bereits standardmässig solche XML-Parser, so dass Sie sich darüber im Moment nicht den Kopf zerbrechen müssen.
Nachfolgend eine Aufstellung der Eigenschaften und Methoden welche benutzt werden können, um auf XML-Daten zuzugreifen:
- XMLDocument: Liefert eine Referenz zum XML-Objektmodel des XML-Dokumentes
- documentElement: Liefert das Wurzelelement des XML-Dokumentes (Sie wissen sicher noch, was das Wurzelelement ist. In Abschnitt 2 finden Sie die entsprechende Beschreibung)
- childNodes: Liefert eine Liste mit Unterelementen eines Elementes (falls vorhanden)
- item: Zugriff auf individuelle Elemente in der Liste der Unterelemente durch einen Index. Das erste Element hat den Index 0.
- text: liefert den Inhalt eines Elementes
Ein Zugriff auf den Inhalt eines bestimmten Elements im obigen XML-Beispiel könnte also wie folgt aussehen: Dateninsel1.XMLDocument.documentElement.childNodes.item(0).text
Dieses Beispiel liefert den String "Christian Heim" zurück.
Um dieses Objektmodel auch in HTML benutzen zu können, muss eine Scriptsprache eingesetzt werden. Das folgende Beispiel demonstriert dies mit Hilfe von JavaScript:
<HTML>
<HEAD>
<TITLE>XML JavaScript-Beispiel</TITLE>
<SCRIPT LANGUAGE="JavaScript">
function schreibeXML(x){
document.writeln (Kunde.XMLDocument.documentElement.childNodes.item(x).text)
}
</SCRIPT>
</HEAD>
<BODY>
<XML ID="Kunde">
<Kunde>
<Name>Christian Heim</Name>
<Strasse>Musterweg 12</Strasse>
<Ort plz="9001">ST. Gallen</Ort>
</Kunde>
</XML>
<SCRIPT LANGUAGE="JavaScript">
schreibeXML(0)
</SCRIPT>
</BODY>
</HTML>
In HTML kennt man übrigens ein sehr ähnliches Objektmodell. Diese Objektmodelle werden auch DOM (Document Object Model) genannt.
XML und die Dokumenttypdefinition
Nachdem Sie nun wissen wie so ein XML-Dokument aussieht stellen wir uns der Frage der Korrektheit eines XML-Dokumentes. Wie oder wo wird eigentlich definiert, welche Elemente z.B. in einer XML-Kundendatei erlaubt oder gar zwingend notwendig sind? Woher weiss der Parser, ob ein XML-Dokument die korrekte Anzahl Elemente enthält?
Es gibt zwei Formen der Prüfung. Das erste ist die "well-formedness" (Wohlgeformtheit) eines XML-Dokumentes. Well-formed ist ein XML-Dokument, wenn es den Regeln zur Erstellung von XML-Dokumenten folgt wie in Abschnitt XML Syntax beschrieben. Diese Prüfung führen die Parser automatisch durch. Ist ein XML-Dokument nicht well-formed, dann bricht der Parser mit einer Fehlermeldung ab und kann das Dokument nicht darstellen.
Die zweite Prüfung ist die Validierung von XML-Dokumenten. Bei der Validierung wird nicht bloss die Struktur des XML-Dokumentes geprüft, sondern es wird auch geprüft ob ein Element vorhanden sein muss, ob der Inhalt eines Elementes der Definition entspricht, etc. (z.Bsp. kann für ein Element definiert werden, dass nur numerische Werte erlaubt sind).
Hier kommt die Dokumenttypdefinition ins Spiel, auch als DTD bekannt. Bevor XML-Dokumente von verschiedenen Partnern benutzt werden, wird die Datentypdefinition in einem DTD festgehalten. Die Prüfung auf Korrektheit wird ermöglicht, indem das zu prüfende XML-Dokument auf ein entsprechendes DTD verweist.
Hier ein Beispiel wie eine Adressaufkleber-DTD aussehen könnte:
<!DOCTYP Adressaufkleber[
<!ELEMENT Adressaufkleber (Name, Strasse, Ort, Pstlz)>
<!ELEMENT Name (#PCDATA) +>
<!ELEMENT Strasse (#PCDATA) ?>
<!ELEMENT Ort (#PCDATA) ?>
<!ELEMENT Pstlz (#PCDATA) ?>
]><Adressaufkleber>
In diesem Beispiel wird das Element "Name" durch ein "+" gekennzeichnet. Dies bedeutet, dass der Name zwingend angegeben werden muss. Die mit "?" gekennzeichneten Elemente sind optional. #PCDATA bedeutet, dass auch der Inhalt des Elementes geprüft wird.
Unter der Annahme, dass das ganze unter dem Namen "Adrkleber.dtd" gespeichert wird, könnte ein typengültiges XML-Dokument so aussehen:
<!DOCTYPE Adressaufkleber SYSTEM "Adrkleber.dtd">
<Adressaufkleber>
<Name>Christian Heim</Name>
<Strasse>Musterweg 12</Strasse>
<Ort>St. Gallen</Ort>
</Adressaufkleber>
Die Postleitzahl (Pstlz) wurde im DTD als optional definiert. Deshalb ist das XML "Adressaufkleber" auch ohne Postleitzahl korrekt.
Wie wir bereits wissen, erlaubt XML die Entkopplung von Daten und Anwendung. Denn durch Einsatz eines DTD muss die orthographische, syntaktische und inhaltliche Validierung des XML nicht mehr auf der Anwendungsebene implementiert werden, sondern kann bereits quasi auf der Datei-Ebene durchgeführt werden.
XSL (Extensible Style Language) und XSLT (XSL Transformations)
Hier werde ich Ihnen nur kurz erläutern was XSL ist. Da XSL sehr umfassend ist verzichte ich auf ein konkretes Beispiel.
XML wird überall dort eingesetzt, wo es um die Darstellung von strukturierten Daten geht, also z.Bsp: XML-Dokumente. Mit Hilfe von XSL ist es möglich, das Aussehen von Daten vom eigentlichen Inhalt zu trennen. So ist es zum Beispiel möglich, ein identische XML-Dokument in zwei verschiedenen Designs auf einem Drucker auszugeben oder auf einer Webseite zu präsentieren, ohne dass die eigentliche Information, die Daten, verändert werden muss.
XSL macht die Daten, welche strukturiert in XML-Dokumenten verpackt sind um sie für andere Computer "verständlich" zu machen, auch wieder für den Menschen "lesbar". Detaillierte Beschreibungen zu XSL finden Sie hier.
Eine Ergänzung zu XSL sind die XSL Transformations (XSLT). XSLT ist eine Sprache zur Transformierung von bestehenden XML-Dokumenten in andere XML-Dokumente.
Zurück zum vorherigen Thema XML Syntax oder weiter zum nächsten interessanten Thema XML Anwendungen.
|
|
|