Extensible Markup Language
aus Wikipedia, der freien Enzyklopädie
Die Extensible Markup Language (engl. für „erweiterbare Auszeichnungssprache“), abgekürzt XML, ist ein Standard zur Modellierung von strukturierten Daten in Form einer Baumstruktur, der vom World Wide Web Consortium (W3C) definiert wird. XML definiert also Regeln für den Aufbau von Dokumenten, die Daten enthalten, die zum Teil einer fest vorgegebenen Struktur entsprechen, teilweise aber auch Elemente beinhalten, die nicht diesem statischen Schema entsprechen. XML als Rahmenkonzept lässt somit offen, ob und wie ein konkretes XML-Dokument automatisiert verarbeitet werden kann.
Für ein XML-verarbeitendes Programm („XML-Anwendung“) müssen die Elemente der jeweiligen Dokumente genau beschrieben werden. Dies betrifft insbesondere die Festlegung der Strukturelemente und ihre Anordnung innerhalb des Dokumentenbaums. Auch für diese Beschreibung selbst stellt XML Standards zur Verfügung, so die Document Type Definition (Siehe Abschnitt DTD).
XML ist damit ein Standard zur Definition von beliebigen, in ihrer Grundstruktur jedoch stark verwandten, Auszeichnungssprachen, die Programme ebenso wie Daten beschreiben können. Eine Sprache wie XML zur Definition anderer Sprachen nennt man Metasprache. XML ist eine vereinfachte Teilmenge von SGML.
Inhaltsverzeichnis |
[Bearbeiten] Namen der Strukturelemente
Die Namen der Strukturelemente (XML-Elemente) für eine XML-Anwendung lassen sich frei wählen. Ein XML-Element kann ganz unterschiedliche Daten enthalten und beschreiben: meistens Text, aber auch Grafiken oder abstraktes Wissen. Ein Grundgedanke hinter XML ist es, Daten und ihre Repräsentation zu trennen, um Daten beispielsweise einmal als Tabelle und einmal als Grafik auszugeben, aber für beide Arten der Auswertung die gleiche Datenbasis im XML-Format zu nutzen.
[Bearbeiten] Fachbegriffe
- Wohlgeformtheit
- Ein XML-Dokument ist wohlgeformt, wenn es sämtliche Regeln für XML einhält. Beispielhaft seien hier folgende genannt:
- Gültigkeit
- Soll XML für den Datenaustausch verwendet werden, ist es von Vorteil, wenn das Format mittels einer Grammatik (z. B. einer Dokumenttypdefinition (DTD) oder eines XML-Schemas) definiert ist. Der Standard definiert ein XML-Dokument als gültig, wenn es wohlgeformt ist, den Verweis auf eine Grammatik enthält und das durch die Grammatik beschriebene Format einhält.
- Parser
- Programme oder Programmteile, die XML-Daten auslesen, interpretieren und ggf. auf Gültigkeit prüfen, nennt man XML-Parser. Prüft der Parser die Gültigkeit, so ist er ein validierender Parser.
[Bearbeiten] Aufbau eines XML-Dokuments
Beispiel einer XML-Datei
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <enzyklopädie> <titel>Wikipedia Städteverzeichnis</titel> <eintrag> <stichwort>Genf</stichwort> <eintragstext>Genf ist der Sitz von …</eintragstext> </eintrag> <eintrag> <stichwort>Köln</stichwort> <eintragstext>Köln ist eine Stadt, die …</eintragstext> </eintrag> </enzyklopädie>
XML-Dokumente besitzen einen physischen und einen logischen Aufbau.
Der physische Aufbau eines XML-Dokumentes besteht aus
- Entitäten. Die erste Entität ist die Hauptdatei des XML-Dokuments. Weitere mögliche Entitäten sind über
- Entitätenreferenzen (
&name;
für das Dokument bzw.%name;
für die Dokumenttypdefinition) eingebundene Zeichenketten, eventuell auch ganze Dateien, sowie - Referenzen auf Zeichenentitäten zur Einbindung einzelner Zeichen, die über ihre Nummer referenziert wurden (
&#Dezimalzahl;
, oder&#xHexadezimalzahl;
).
- Entitätenreferenzen (
- Eine XML-Deklaration wird optional verwendet, um XML-Version, Zeichenkodierung und Verarbeitbarkeit ohne Dokumenttypdefinition zu spezifizieren.
- Eine Dokumenttypdefinition wird optional verwendet, um Entitäten sowie den erlaubten logischen Aufbau zu spezifizieren.
Der logische Aufbau eines XML-Dokumentes ist eine Baumstruktur und damit hierarchisch strukturiert. Als Baumknoten gibt es:
- Elemente, deren physische Auszeichnung mittels
- einem passenden Paar aus Start-Tag (
<Tag-Name>
) und End-Tag (</Tag-Name>
) oder - einem Empty-Element-Tag (
<Tag-Name />
) erfolgen kann,
- einem passenden Paar aus Start-Tag (
- Attribute als bei einem Start-Tag oder Empty-Element-Tag geschriebene Schlüsselwort-Werte-Paare (
Attribut-Name="Attribut-Wert"
) für Zusatz-Informationen über Elemente (eine Art Meta-Information), - Verarbeitungsanweisungen (
<?Ziel-Name Parameter ?>
, engl. Processing Instruction) - Kommentare (
<!-- Kommentar-Text -->
) - Text, welcher als normaler Text oder in Form eines CDATA-Abschnittes (
<![CDATA[ beliebiger Text]]>
) auftreten kann.
Ein XML-Dokument muss genau ein Element auf der obersten Ebene enthalten. Unterhalb von diesem Dokumentelement können weitere Elemente verschachtelt werden.
Zur Spezifikation des logischen Aufbaus werden die Dokumenttypdefinitionen durch das umfangreichere XML-Schema abgelöst, welches keine Möglichkeit zur Definition von Entitäten, jedoch einen adäquaten Ersatz für Entitäten besitzt. Verarbeitungsanweisungen werden in der Praxis meist eingesetzt, um in XML-Dokumenten Verarbeitungsanweisungen in anderen Sprachen einzubauen. Ein Beispiel dafür ist PHP, dessen Verarbeitungsanweisungen in XML-Dokumenten mit einer PHP-Verarbeitungsanweisung, z. B. <?php echo'Hello, World'; ?>
eingebaut werden können.
Einige Web-Browser können XML-Dokumente mit Hilfe eines eingebauten XML-Parsers direkt darstellen. Dies geschieht z. B. in Verbindung mit einem Stylesheet. Diese Transformation kann die Daten in ein komplett anderes Format umwandeln, das Zielformat muss nicht einmal XML sein.
[Bearbeiten] XML-Vorgänger
Obwohl der Vorgänger SGML bereits weitaus umfangreicher war, kam es nie zu einer breiten Akzeptanz in der Öffentlichkeit. Der Grund dafür lag u. a. in der Komplexität SGMLs, die die Softwareentwicklung stark erschwert. Die Komplexität von SGML und XML kann mit der Pareto-Verteilung beschrieben werden: Obwohl XML nur ca. 20 % der Komplexität von SGML hat, können damit ca. 80 % der Anwendungsfälle abgedeckt werden. Der Bedarf nach einem unbeschränkten weltweiten Informationsaustausch und die Popularität von HTML brachten das deutlich einfachere XML hervor.
[Bearbeiten] Kerntechnologien
Die Kerntechnologien im XML-Umfeld kann man grob aufteilen in APIs zur Verarbeitung von XML und Sprachen zur Beschreibung von XML-Dateien.
[Bearbeiten] APIs zur Verarbeitung von XML
[Bearbeiten] SAX
SAX (Simple API for XML) ist eine standardisierte Möglichkeit, wie eine XML-Datei durch einen Parser bearbeitet wird. Hierbei wird ein Datei-Strom in einen Strom von Ereignissen umgewandelt. Programme können sich für einzelne Ereignisse registrieren, um bei Bedarf ihre Arbeit zu verrichten. Die Eingabedaten werden rein sequentiell verarbeitet. Ein Vorteil von SAX ist, dass nicht die gesamte XML-Datei im Speicher vorgehalten werden muss. Das ist aber dann ein Nachteil, wenn man viele Informationen, die über die ganze Datei verstreut sind, zur Verarbeitung benötigt.
[Bearbeiten] DOM
DOM (Document Object Model) ist der zweite Weg, um XML-Dateien auszuwerten und wurde vom W3C standardisiert. Er stellt ein standardisiertes Objektmodell zur Verfügung, mit dessen Hilfe der Inhalt der XML-Datei ausgewertet oder manipuliert werden kann. Zum Aufbauen des Objektbaumes muss jedoch zunächst die gesamte Datei eingelesen werden, wofür möglicherweise viel Speicher benötigt wird. Vorteilhaft ist hingegen, dass dann alle Elemente in einer hierarchischen Struktur vorliegen und auf alle gleichermaßen zugegriffen werden kann. Die Elemente stehen zueinander in Beziehung (Eltern, Geschwister, Kinder). Als Nachteil von DOM kann sich ein hoher Speicherbedarf erweisen; er verhält sich proportional zur Größe der Eingabedatei.
Als Beispiel sei eine Webseite erwähnt, die in XML spezifiziert ist. 100 kB sind für eine solche Webseite schon eine beachtliche Größe, sind in einem DOM jedoch noch problemlos möglich. Auf der anderen Seite kann ein Wörterbuch (3 MB Grunddaten) gegebenenfalls Probleme verursachen, wobei es weniger der Speicherplatz an sich sein dürfte sondern die Zugriffsgeschwindigkeit. Beide Modelle haben deshalb ihre Berechtigung in der Anwendung.
[Bearbeiten] DSO
DSO (Data Source Object) ist eine Möglichkeit u. a. XML als Datenquellen in HTML-Seiten einzubinden. Sie wird auch als XML Data Islands bezeichnet. Die XML-Daten befinden sich entweder direkt im Code der HTML-Datei, oder liegen als externe Datei vor. Dadurch können relativ schnell einfache Anwendungen erstellt werden, die clientseitig im Browser ausgeführt werden.[1] Für den Zugriff ist es nicht zwingend erforderlich, umständlich den kompletten Baum abzugehen. Außerdem können Parameter, z. B. zur Datenselektion, innerhalb der HTML-Datei direkt verwendet werden. Der Einsatz ist ohne ActiveX möglich. DSO ist im Microsoft Internet Explorer seit Version 4.0 enthalten.[2] DSO ist aber nicht auf diesen beschränkt und wird auch für andere Browser verwendet, wie Mozilla und Opera.[3]
[Bearbeiten] Schemasprachen
Um die Struktur von XML-Dokumenten zu beschreiben, bedient man sich so genannter Schemasprachen. Die zwei bekanntesten sind DTD und XML Schema.
[Bearbeiten] DTD
Eine DTD (Dokumenttypdefinition) ist eine Beschreibung eines XML-Dokuments. Sie wurde zusammen mit XML standardisiert, zu einem Zeitpunkt, an dem XML noch hauptsächlich für „narrative documents“ („erzählende Dokumente“, also Zeitungsartikel, Bücher, …) gedacht war, weniger als Datenaustauschformat. Daher ist es z. B. in DTD nicht möglich, zwischen Texten und Zahlen zu unterscheiden. Ein weiterer Nachteil ist die Tatsache, dass die DTD in einer eigenen Sprache abgefasst werden muss. Außerdem kennt die DTD keine Namensräume.
[Bearbeiten] XML-Schema / XSD
XML-Schema (bzw. XSD = XML-Schema-Definition) ist die moderne Möglichkeit, die Struktur von XML-Dokumenten zu beschreiben. XML-Schema bietet auch die Möglichkeit, den Inhalt von Elementen und Attributen zu beschränken, z. B. auf Zahlen, Datumsangaben oder Texte, z. B. mittels regulärer Ausdrücke. Ein Schema ist selbst ein XML-Dokument, welches erlaubt, komplexere (auch inhaltliche) Zusammenhänge zu beschreiben, als dies mit einer formalen DTD möglich ist.
[Bearbeiten] Weitere Schemasprachen
Weitere Schemasprachen sind Document Structure Description, RELAX NG, Schematron und Examplotron.
[Bearbeiten] XML-Familie
[Bearbeiten] Infrastruktur
Im Zusammenhang mit XML wurden vom W3-Konsortium auf Basis von XML viele Sprachen definiert, welche XML-Ausdrücke für häufig benötigte allgemeine Funktionen anbieten wie etwa die Verknüpfung von XML-Dokumenten. Zahlreiche XML-Sprachen nutzen diese Grundbausteine.
- Transformation von XML-Dokumenten: XSLT
- Adressierung von Teilen eines XML-Baumes: XPath
- standardisierte Attribute: XML Base und xml:id
- Verknüpfung von XML-Ressourcen: XPointer, XLink und XInclude
- Selektion von Daten aus einem XML-Datensatz: XQuery
- Definition von XML-Datenstrukturen: XML Schema (= XSD, XML Schema Definition Language)
- Signatur und Verschlüsselung von XML-Knoten: XML Signature und XML-Encryption
- PDF-Generierung aus XML-Daten: XSL-FO
[Bearbeiten] Sprachen
Während XML selbst aus SGML hervorgegangen ist, bedienen sich heute sehr viele formale Sprachen der Syntax von XML. So ist XML ein wesentliches Instrument, um – wie es das W3C vorsieht – eine offene, für Mensch und Maschine verständliche Informationslandschaft (semantisches Web) zu schaffen.
Auch die bekannte Dokumentsprache HTML wurde als „Extensible HyperText Markup Language“ (XHTML) im Anschluss an die Version 4.01 in dieses Konzept integriert, so dass ihr nun XML als Definitionsbasis zu Grunde liegt. Vielfacher Grund für den Einsatz von XML ist das zahlreiche Vorhandensein von Parsern und die einfache Syntax: die Definition von SGML umfasst 500 Seiten, jene von XML nur 26.
Die folgenden Listen stellen einige dieser XML-Sprachen dar.
[Bearbeiten] Text
- XSL-FO (Textformatierung)
- DocBook
- DITA
- XHTML (XML-konformes HTML)
- TEI (Text Encoding Initiative)
- NITF (News Industry Text Format)
[Bearbeiten] Grafik
- SVG (Vektorgrafiken)
- X3D (3D-Modellierungssprache)
- Collada (Austauschformat für Daten zwischen verschiedenen 3D-Programmen)
[Bearbeiten] Geodaten
- Geography Markup Language (GML)
- GPS Exchange Format (GPX): XML für GPS-Daten
- Keyhole Markup Language (KML): Koordinaten-Spezifikation für Google Earth
- OpenImmo: XML für Immobilien mit Geo-Daten
[Bearbeiten] Multimedia
[Bearbeiten] Sicherheit
- SAML (sicherheitsbezogene Informationen beschreiben und übertragen)
- XML Signature (XML-Schreibweise für digitale Signaturen)
- XML Encryption
[Bearbeiten] Weitere
Darüber hinaus existieren XML-Sprachen für Webservices (z. B. SOAP und WSDL), für mathematische Formeln (MathML), für Verfahren im Bereich des Semantic Web (RDF, OWL, Topic Maps, UOML), für Service Provisioning (SPML), für den Austausch von Finanzberichten wie bspw. Jahresabschlüsse (XBRL), in Bereichen der Automobilindustrie (ODX, QDX, JADM) über Landwirtschaft (AgroXML) bis zum Verlagswesen (ONIX) und viele weitere mehr.
Eine Zusammenfassung von XML-Sprachen für Office-Anwendungen findet sich im OpenDocument-Austauschformat (OASIS Open Document Format for Office Applications).
[Bearbeiten] Siehe auch
- Namensraum, Liste der XML-Namensräume
- Cω (lies: C Omega)
- XML-Datenbank
[Bearbeiten] Programme
- XML-Editoren
- Open Source
- Eclipse mit verschiedenen Plugins, z. B. Web Standard Tools (WST)
- JEdit mit XML-Plugin
- KXML Editor
- NetBeans
- Open XML Editor
- Freeware
- Crimson Editor mit XML-Syntaxfile
- Peter's XML Editor
- Microsoft XML Notepad 2007
- Kommerziell
- Altova XMLSpy 2006, auch als kostenlose „Home Edition“ verfügbar
- XML EditX
- oXygen
- Epic
- XML Editor
- Stylus Studio
- XMetaL
- XMLmind
- NGed, ein WYSIWYG-XML-Editor
- Open Source
- Office
- AbiWord
- Adobe FrameMaker (seit V7.2 Unterstützung von DTD, Schema, XSL; komfortables Editieren auch per Drag&Drop in Baumansicht)
- KOffice
- Microsoft Word (Seit der Version „Word 2003“ kann Word eigene Dokumente in WordML, einer proprietären XML-Anwendung, speichern. Darüber hinaus ist in der Professionell-Variante das Editieren von beliebigen XML-Dateien möglich.) [4]
- OpenOffice.org
- Anzeigeprogramme
- Internet Explorer
- Firefox
- Mozilla
- Netscape (ab Version 6)
- Opera
- XML-Schema Dokumentation
- Open Source
- xsddoc
- xs3p
- Nicht Open Source
- xnsdoc
- XSDDoc
- Open Source
[Bearbeiten] XML-Parser
XML-Parser (oft auch als XML-Prozessoren bezeichnet) lesen ein XML-Dokument nach bestimmten Kriterien aus. Beim DOM wird das gesamte Dokument in eine Struktur eingelesen, die dann weiterverarbeitet werden kann. XML-Parser sind in verschiedensten Sprachen vorhanden, z. B. Java, C, C++, C# oder PHP.
Name | Programmiersprache | Kommentar |
---|---|---|
Xerces | C++ und Java | Apache-Projekt |
Gnome XML-Parser | C | |
Crimson | Java | Apache-Projekt |
dom4j | Java | |
XDOM | Delphi / Kylix | Enthält auch XPath- und DOM-Implementierung |
SimpleXML | PHP 5 | |
Microsoft Core XML Services | Windows Scripting | |
TinyXml | C++ | Baut Objektbaum des XML Dokumentes auf |
XPP | Java | XML Pull-Parser, der die XML Pull Parsing API bedient. |
[Bearbeiten] Quellen
- ↑ [1] Beschreibung der Anwendung von DSO in HTML-Seiten
- ↑ [2] Artikel über DSO zur Abfrage von XML-Datenquellen – Microsoft Development Network Library
- ↑ [3] Einsatz von DSO im Mozilla-Browser
- ↑ Artikel in der iX 8/2004
[Bearbeiten] Literatur
- Elliotte Rusty Harold: Die XML Bibel, mitp 2002, ISBN 3826608216
- Stefan Mintert (Hrsg.): XML & Co – Die W3C-Spezifikationen für Dokumenten- und Datenarchitektur, Addison-Wesley, München, ISBN 3827318440
- Christine Kränzler, XML/XSL für professionelle Einsteiger, Markt+Technik Verlag, München 2002, ISBN 3-8272-6339-5
- Erik T. Ray: Einführung in XML, O’Reilly 2004, ISBN 3897212862
- Helmut Vonhoegen: Einstieg in XML, Galileo Computing 2005, ISBN 3-89842-630-0
- Frank Bitzer: XML im Unternehmen, Galileo Computing 2003, ISBN 3-89842-288-7
[Bearbeiten] Weblinks
- World Wide Web Consortium über XML (englisch),
<edition W3C.de> – Deutsche Übersetzungen zu XML u. a. - W3Schools – XML-Tutorial
- XML in 10 Punkten
- XML in der Praxis – Online-Buch
- XML-Einführung und Linkliste
- XML Document Authoring Tools Strukturierte Liste von XML-Dokument-Entwicklungswerkzeugen (englisch)
- Links zum Thema „XML“ im Open Directory Project