Zum Inhalt springen

„Extensible Markup Language“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
[gesichtete Version][gesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
Wuppertroll (Diskussion | Beiträge)
K Rechtschreibfehler behoben
Toter Link entfernt.
 
(34 dazwischenliegende Versionen von 30 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
{{Infobox Dateiformat
{{Infobox Dateiformat
| Name = Extensible Markup Language
| Name = Extensible Markup Language
| Icon = [[Datei:XML (de).svg|200px|XML-Beispiel]]
| Icon = [[Datei:Extensible Markup Language (XML) logo.svg|200px|XML-Beispiel]]
| Logo =
| Logo =
| Screenshot =
| Screenshot =
Zeile 27: Zeile 27:
XML wird auch für den plattform- und [[Implementierung|implementationsunabhängigen]] Austausch von Daten zwischen [[Computer]]systemen eingesetzt, insbesondere über das [[Internet]], und wurde vom [[World Wide Web Consortium]] (W3C) am 10. Februar 1998 veröffentlicht.<ref>{{Internetquelle |url=http://www.w3.org/TR/1998/REC-xml-19980210 |titel=Extensible Markup Language (XML) 1.0 |hrsg=w3.org |datum=1998-02-10 |archiv-url=https://web.archive.org/web/20060615212726/http://www.w3.org/TR/1998/REC-xml-19980210 |archiv-datum=2006-06-15 |sprache=en |zugriff=2017-02-12}}</ref> Die aktuelle Fassung ist die fünfte Ausgabe vom 26.&nbsp;November 2008.<ref>{{Internetquelle |url=https://www.w3.org/TR/REC-xml/ |titel=Extensible Markup Language (XML) 1.0 (Fifth Edition) |hrsg=w3.org |datum=2008-11-26 |sprache=en |zugriff=2017-02-12}}</ref> XML ist eine [[Metasprache]], auf deren Basis durch strukturelle und inhaltliche Einschränkungen anwendungsspezifische Sprachen definiert werden. Diese Einschränkungen werden entweder durch eine [[Dokumenttypdefinition|Document Type Definition (DTD)]] oder durch ein [[XML Schema]] ausgedrückt. Beispiele für XML-Sprachen sind: [[RSS (Web-Feed)|RSS]], [[Mathematical Markup Language|MathML]], [[GraphML]], [[Extensible Hypertext Markup Language|XHTML]], [[Extensible Application Markup Language|XAML]], [[Scalable Vector Graphics]] (SVG), [[GPS Exchange Format|GPX]], aber auch das XML-Schema selbst.
XML wird auch für den plattform- und [[Implementierung|implementationsunabhängigen]] Austausch von Daten zwischen [[Computer]]systemen eingesetzt, insbesondere über das [[Internet]], und wurde vom [[World Wide Web Consortium]] (W3C) am 10. Februar 1998 veröffentlicht.<ref>{{Internetquelle |url=http://www.w3.org/TR/1998/REC-xml-19980210 |titel=Extensible Markup Language (XML) 1.0 |hrsg=w3.org |datum=1998-02-10 |archiv-url=https://web.archive.org/web/20060615212726/http://www.w3.org/TR/1998/REC-xml-19980210 |archiv-datum=2006-06-15 |sprache=en |zugriff=2017-02-12}}</ref> Die aktuelle Fassung ist die fünfte Ausgabe vom 26.&nbsp;November 2008.<ref>{{Internetquelle |url=https://www.w3.org/TR/REC-xml/ |titel=Extensible Markup Language (XML) 1.0 (Fifth Edition) |hrsg=w3.org |datum=2008-11-26 |sprache=en |zugriff=2017-02-12}}</ref> XML ist eine [[Metasprache]], auf deren Basis durch strukturelle und inhaltliche Einschränkungen anwendungsspezifische Sprachen definiert werden. Diese Einschränkungen werden entweder durch eine [[Dokumenttypdefinition|Document Type Definition (DTD)]] oder durch ein [[XML Schema]] ausgedrückt. Beispiele für XML-Sprachen sind: [[RSS (Web-Feed)|RSS]], [[Mathematical Markup Language|MathML]], [[GraphML]], [[Extensible Hypertext Markup Language|XHTML]], [[Extensible Application Markup Language|XAML]], [[Scalable Vector Graphics]] (SVG), [[GPS Exchange Format|GPX]], aber auch das XML-Schema selbst.


Die Standardzeichenkodierung eines XML-Dokumentes ist [[UTF-8]]. XML-bearbeitende Systeme müssen die Kodierungen UTF-8 und [[UTF-16]] beherrschen.<ref>{{Internetquelle |autor= |url=https://www.w3.org/TR/xml/#charsets |titel=Characters |werk=Extensible Markup Language (XML) 1.0 (Fifth Edition) |hrsg= |datum=2008-11-26 |zugriff=2019-03-09 |sprache=en}}</ref> XML-Dokumente, die UTF-8 oder UTF-16 verwenden, können in allen Texteditoren, die diese Kodierungen unterstützen, angezeigt und bearbeitet werden.
Die Standardzeichenkodierung eines XML-Dokumentes ist [[UTF-8]]. XML-bearbeitende Systeme müssen die Kodierungen UTF-8 und [[UTF-16]] beherrschen.<ref>{{Internetquelle |url=https://www.w3.org/TR/xml/#charsets |titel=Characters |werk=Extensible Markup Language (XML) 1.0 (Fifth Edition) |datum=2008-11-26 |zugriff=2019-03-09 |sprache=en}}</ref> XML-Dokumente, die UTF-8 oder UTF-16 verwenden, können in allen Texteditoren, die diese Kodierungen unterstützen, angezeigt und bearbeitet werden.


Wenn das XML-Dokument Binärdaten enthalten soll, müssen diese Daten als Text umkodiert werden. Dazu kann z.&nbsp;B. die [[Base64]]-Kodierung verwendet werden.
Wenn das XML-Dokument Binärdaten enthalten soll, müssen diese Daten zu Text umkodiert werden. Dazu kann z.&nbsp;B. die [[Base64]]-Kodierung verwendet werden.


== Fachbegriffe ==
== Fachbegriffe ==
=== Element ===
=== Element ===
Die wichtigste Struktureinheit eines XML-Dokumentes ist das [[Element (Markierungssprache)|Element]]. Elemente können Text wie auch weitere Elemente als Inhalt enthalten. Elemente bilden die ''Knoten'' des Strukturbaumes eines XML-Dokumentes. Der Name eines XML-Elementes kann in XML-Dokumenten ohne [[Dokumenttypdefinition|Document Type Definition (DTD)]] frei gewählt werden. In XML-Dokumenten mit DTD muss der Name eines Elementes in der [[Dokumenttypdefinition|DTD]] deklariert sein und das Element muss sich in einer zugelassenen Position innerhalb des Strukturbaumes gemäß [[Dokumenttypdefinition|DTD]] befinden. In der DTD wird u.&nbsp;a. der mögliche Inhalt eines jeden Elementes definiert. Elemente sind die Träger der Information in einem XML-Dokument.
Die wichtigste Struktureinheit eines XML-Dokumentes ist das [[Element (Markierungssprache)|Element]]. Elemente können Text wie auch weitere Elemente als Inhalt enthalten. Elemente bilden die ''Knoten'' des Strukturbaumes eines XML-Dokumentes. Der Name eines XML-Elementes kann in XML-Dokumenten ohne [[Dokumenttypdefinition]] (DTD) frei gewählt werden. In XML-Dokumenten mit DTD muss der Name eines Elementes in der DTD deklariert sein und das Element muss sich in einer zugelassenen Position innerhalb des Strukturbaumes gemäß DTD befinden. In der DTD wird u.&nbsp;a. der mögliche Inhalt eines jeden Elementes definiert. Elemente sind die Träger der Information in einem XML-Dokument.


=== Tag ===
=== Tag ===
Zeile 41: Zeile 41:
* ein Starttag für den Beginn eines Elementes: <code><Elementname></code>
* ein Starttag für den Beginn eines Elementes: <code><Elementname></code>
* ein Endtag für das Ende eines Elementes: <code></Elementname></code>
* ein Endtag für das Ende eines Elementes: <code></Elementname></code>
* ein Leertag für ein Element ohne Inhalt: <code><Leer/></code>
* ein Leertag für ein Element ohne Inhalt: <code><Elementname/></code>


=== Wohlgeformtheit ===
=== Wohlgeformtheit ===
Zeile 64: Zeile 64:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<verzeichnis>
<verzeichnis>
<titel>Wikipedia Städteverzeichnis</titel>
<titel>Wikipedia Städteverzeichnis</titel>
<eintrag>
<eintrag>
<stichwort>Genf</stichwort>
<stichwort>Genf</stichwort>
<eintragstext>Genf ist der Sitz von ...</eintragstext>
<eintragstext>Genf ist der Sitz von ...</eintragstext>
</eintrag>
</eintrag>
<eintrag>
<eintrag>
<stichwort>Köln</stichwort>
<stichwort>Köln</stichwort>
<eintragstext>Köln ist eine Stadt, die ...</eintragstext>
<eintragstext>Köln ist eine Stadt, die ...</eintragstext>
</eintrag>
</eintrag>
</verzeichnis>
</verzeichnis>
</syntaxhighlight>
</syntaxhighlight>
Zeile 79: Zeile 79:


=== Physischer Aufbau ===
=== Physischer Aufbau ===
* Die Dokument-Entität (engl. ''Document entity'') enthält das Hauptdokument.
* Die Dokument-Entität (englisch ''Document entity'') enthält das Hauptdokument.
* Weitere mögliche Entitäten sind über
* Weitere mögliche Entitäten sind über
** [[Entitäten in Auszeichnungssprachen|Entitätenreferenzen]] (<code>''&name;''</code> für das Dokument bzw. <code>''%name;''</code> 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 (<code>&#''[[Dezimalsystem|Dezimalzahl]]'';</code> oder <code>&#x''[[Hexadezimalsystem|Hexadezimalzahl]]'';</code>).
** [[Entitäten in Auszeichnungssprachen|Entitätenreferenzen]] (<code>''&name;''</code> für das Dokument bzw. <code>''%name;''</code> 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 (<code>&#''[[Dezimalsystem|Dezimalzahl]]'';</code> oder <code>&#x''[[Hexadezimalsystem|Hexadezimalzahl]]'';</code>).
* Eine [[XML-Deklaration]] wird verwendet, um XML-Version, Zeichenkodierung und eine mögliche Verarbeitbarkeit ohne [[Dokumenttypdefinition|DTD]] zu spezifizieren.
* Eine [[XML-Deklaration]] wird verwendet, um XML-Version, Zeichenkodierung und eine mögliche Verarbeitbarkeit ohne DTD zu spezifizieren.
* Eine [[Dokumenttypdefinition]] wird verwendet, um Entitäten sowie den erlaubten logischen Aufbau zu spezifizieren. Die Verwendung einer [[Dokumenttypdefinition|DTD]] kann in der [[XML-Deklaration]] abgewählt werden.
* Eine DTD wird verwendet, um Entitäten sowie den erlaubten logischen Aufbau zu spezifizieren. Die Verwendung einer DTD kann in der XML-Deklaration abgewählt werden.


=== Logischer Aufbau ===
=== Logischer Aufbau ===
Zeile 92: Zeile 92:
** eines passenden Paars aus Starttag <code><''Tagname''></code> und End-Tag <code></''Tagname''></code> oder
** eines passenden Paars aus Starttag <code><''Tagname''></code> und End-Tag <code></''Tagname''></code> oder
** eines Leertags <code><''Tagname''/></code> erfolgen kann,
** eines Leertags <code><''Tagname''/></code> erfolgen kann,
* [[Attribut (Auszeichnungssprache)|Attribute]] als bei einem Starttag oder Leertag geschriebene zusätzliche Eigenschaften der Elemente in der Syntax <code>''Attributname''="''Attributwert''"</code>,
* [[Attribut (Auszeichnungssprache)|Attribute]] als bei einem Starttag oder Leertag geschriebene zusätzliche Eigenschaften der Elemente in der Syntax <code>''Attributname''=''Attributwert''</code>,
* [[Verarbeitungsanweisung]]en <code><?''Zielname''&nbsp;Daten?></code> (engl. ''Processing Instructions''),
* [[Verarbeitungsanweisung]]en <code><?''Zielname''&nbsp;Daten?></code> (englisch ''Processing Instructions''),
* [[Kommentar (Programmierung)|Kommentare]] <code>&lt;!--&nbsp;''Kommentar-Text''&nbsp;--&gt;</code>, und
* [[Kommentar (Programmierung)|Kommentare]] <code>&lt;!--&nbsp;''Kommentar-Text''&nbsp;--&gt;</code>, und
* Text, der als normale Zeichendaten oder in Form eines [[CDATA]]-Abschnittes <code><![CDATA[&nbsp;''beliebiger Text'']]></code> auftreten kann.
* Text, der als normale Zeichendaten oder in Form eines [[CDATA]]-Abschnittes <code><![CDATA[&nbsp;''beliebiger Text'']]></code> auftreten kann.
Zeile 109: Zeile 109:


== Lesbarkeit von XML-Dokumenten ==
== Lesbarkeit von XML-Dokumenten ==
Praktisch alle [[Webbrowser]] wie [[Apple Safari]], [[Google Chrome]], [[Internet Explorer|Microsoft Internet Explorer]], [[Mozilla Firefox]] und [[Opera (Browser)|Opera]] können XML-Dokumente mit Hilfe des eingebauten XML-[[Parser]]s direkt visualisieren.
Praktisch alle [[Webbrowser]] wie [[Apple Safari]], [[Google Chrome]], [[Microsoft Edge]], [[Mozilla Firefox]] und [[Opera (Browser)|Opera]] können XML-Dokumente mit Hilfe des eingebauten XML-[[Parser]]s direkt visualisieren.


== Klassifizierung von XML-Dokumenten ==
== Klassifizierung von XML-Dokumenten ==
XML-Dokumente lassen sich anhand ihres beabsichtigten Gebrauchs und ihres Strukturierungsgrads in dokumentzentrierte und datenzentrierte Dokumente unterteilen. Die Grenze zwischen diesen Dokumentenarten ist jedoch fließend. Mischformen können als ''semistrukturiert'' bezeichnet werden.
XML-Dokumente lassen sich anhand ihres beabsichtigten Gebrauchs und ihres Strukturierungsgrads in dokumentzentrierte und datenzentrierte Dokumente unterteilen. Die Grenze zwischen diesen Dokumentenarten ist jedoch fließend. Mischformen können als ''semistrukturiert'' bezeichnet werden.


* dokumentzentriert: Das Dokument ist an ein Textdokument angelehnt, das für den menschlichen Leser größtenteils auch ohne die zusätzliche Metainformation verständlich ist. XML-Elemente werden hauptsächlich zur [[Formale Semantik#Formale Semantik in der Informatik|semantischen]] Markierung von Passagen des Dokuments genutzt, das Dokument ist nur schwach strukturiert. Aufgrund der schwachen Strukturierung ist eine maschinelle Verarbeitung schwierig.
* dokumentzentriert: Das Dokument ist an ein Textdokument angelehnt, das für den menschlichen Leser größtenteils auch ohne die zusätzliche Metainformation verständlich ist. XML-Elemente werden hauptsächlich zur [[Formale Semantik#Formale Semantik in Logik und Informatik|semantischen]] Markierung von Passagen des Dokuments genutzt, das Dokument ist nur schwach strukturiert. Aufgrund der schwachen Strukturierung ist eine maschinelle Verarbeitung schwierig.
* datenzentriert: Das Dokument ist hauptsächlich für die maschinelle Verarbeitung bestimmt. Es folgt einem Schema, das Entitäten eines Datenmodells beschreibt und definiert, in welcher Beziehung die Entitäten zueinander stehen, sowie, welche Attribute die Entitäten haben. Das Dokument ist somit stark strukturiert und für den unmittelbaren menschlichen Gebrauch weniger geeignet.
* datenzentriert: Das Dokument ist hauptsächlich für die maschinelle Verarbeitung bestimmt. Es folgt einem Schema, das Entitäten eines Datenmodells beschreibt und definiert, in welcher Beziehung die Entitäten zueinander stehen, sowie, welche Attribute die Entitäten haben. Das Dokument ist somit stark strukturiert und für den unmittelbaren menschlichen Gebrauch weniger geeignet.
* semistrukturiert: Semistrukturierte Dokumente stellen eine Art Mischform dar, die stärker strukturiert ist als dokumentzentrierte Dokumente, aber schwächer als datenzentrierte Dokumente.
* semistrukturiert: Semistrukturierte Dokumente stellen eine Art Mischform dar, die stärker strukturiert ist als dokumentzentrierte Dokumente, aber schwächer als datenzentrierte Dokumente.
Zeile 140: Zeile 140:
* [[Nicht extrahierendes XML-API]]: Die Daten werden auf Byte-Ebene sehr effizient verarbeitet.
* [[Nicht extrahierendes XML-API]]: Die Daten werden auf Byte-Ebene sehr effizient verarbeitet.


Oftmals greift der Anwendungscode nicht direkt auf die Parser-API zu. Stattdessen wird XML weiter [[Datenkapselung (Programmierung)|gekapselt]], so dass der Anwendungscode mit nativen Objekten / Datenstrukturen arbeitet, welche sich auf XML abstützen. Beispiele für solche Zugriffsschichten sind [[JAXB]] in [[Java (Programmiersprache)|Java]], der Data Binding Wizard in [[Borland Delphi|Delphi]] oder das XML Schema Definition Toolkit in [[.NET|.Net]]. Die Umwandlung von Objekten in XML ist üblicherweise bidirektional möglich. Diese Umwandlung wird als [[Serialisierung]] oder [[Marshalling]] bezeichnet.
Oftmals greift der Anwendungscode nicht direkt auf die Parser-API zu. Stattdessen wird XML weiter [[Datenkapselung (Programmierung)|gekapselt]], so dass der Anwendungscode mit nativen Objekten / Datenstrukturen arbeitet, welche sich auf XML abstützen. Beispiele für solche Zugriffsschichten sind [[JAXB]] in [[Java (Programmiersprache)|Java]], der Data Binding Wizard in [[Borland Delphi|Delphi]] oder das XML Schema Definition Toolkit in [[.Net-Framework|.Net]]. Die Umwandlung von Objekten in XML ist üblicherweise bidirektional möglich. Diese Umwandlung wird als [[Serialisierung]] oder [[Marshalling]] bezeichnet.


=== XML-Parser-API-Beispiele ===
=== XML-Parser-API-Beispiele ===
XML-Parser-APIs sind für verschiedene Programmiersprachen vorhanden, z.&nbsp;B. [[Java (Programmiersprache)|Java]], [[C (Programmiersprache)|C]], [[C++]], [[C-Sharp|C#]], [[Python (Programmiersprache)|Python]], [[Perl (Programmiersprache)|Perl]] und [[PHP]]. Parser-API-Beispiele:
XML-Parser-APIs sind für verschiedene Programmiersprachen vorhanden, z.&nbsp;B. [[Java (Programmiersprache)|Java]], [[C (Programmiersprache)|C]], [[C++]], [[C-Sharp|C#]], [[Python (Programmiersprache)|Python]], [[Perl (Programmiersprache)|Perl]] und [[PHP]]. Parser-API-Beispiele:
<!-- bitte nur APIs angeben, für die eine Seite in der Wikipedia existiert) -->

* XML::Parser ([[Perl (Programmiersprache)|Perl]]): Ein XML-Parser für Perl. Ein sehr einfaches API bietet z.&nbsp;B. auch das [[CPAN]]-Modul XML::Simple an.
* DOM Functions (PHP5): Modul in [[PHP5]], um XML-Dokumente einzulesen; alternativ simpleXML; für PHP4 gibt es DOM XML.
* [[Streaming API for XML|StAX (Java)]]: Eine hochgradig speichereffiziente Parserimplementierung (Pull) und gleichzeitig einfach zu programmieren. Es werden Cursor- und Iteratorverarbeitungsmodelle angeboten.
* [[Streaming API for XML|StAX (Java)]]: Eine hochgradig speichereffiziente Parserimplementierung (Pull) und gleichzeitig einfach zu programmieren. Es werden Cursor- und Iteratorverarbeitungsmodelle angeboten.
* [[JAXB]]: Data Binding für Java. Beispielsweise kann aus einem XML-Schema die entsprechende Java-Klasse generiert werden und umgekehrt.
* [[JAXB]]: Data Binding für Java. Beispielsweise kann aus einem XML-Schema die entsprechende Java-Klasse generiert werden und umgekehrt.
* [[Apache XMLBeans]] Java Data Binding Framework, kann bereits mit Java 1.4.2 verwendet werden
* [[Apache XMLBeans]] Java Data Binding Framework, kann bereits mit Java 1.4.2 verwendet werden
* [[Xerces]]: Ein validierender XML-Parser für C++, Java und Perl für eine große Anzahl an Plattformen.
* [[Xerces]]: Ein validierender XML-Parser für C++, Java und Perl für eine große Anzahl an Plattformen.
* [http://effbot.org/zone/element-iterparse.htm ElementTree iterparse]: Ein Parser-API für [[Python (Programmiersprache)|Python]], die über Teilbäume iteriert. Es kombiniert die Speichereffizienz eines Pull-Parsers mit der Einfachheit eines DOM-Parsers.
* [[VTD-XML]]: Beispiel für ein nicht extrahierendes XML-API.
* [[MSXML]]: Microsoft XML Core Services, die Microsoft XML Softwarebibliothek für XML-Unterstützung über DOM, SAX, XSLT, XML Schemata und andere zu XML gehörende Technologien
* [[MSXML]]: Microsoft XML Core Services, die Microsoft XML Softwarebibliothek für XML-Unterstützung über DOM, SAX, XSLT, XML Schemata und andere zu XML gehörende Technologien
* [[Pugixml]]: Ein DOM XML-Parser für C++ bei dessen Entwicklung besonders Wert auf effizienten Code gelegt wurde.


Zur Erstellung von XML-Dokumenten gibt es spezielle Programme, sogenannte [[XML-Editor]]en.
Zur Erstellung von XML-Dokumenten gibt es spezielle Programme, sogenannte [[XML-Editor]]en.
Zeile 194: Zeile 189:


=== Sprachen ===
=== Sprachen ===
Heute bedienen sich viele [[formale Sprache]]n der Syntax von XML. So ist XML ein wesentliches Instrument, um –&nbsp;wie es das W3C vorsieht&nbsp;– eine offene, für Mensch und Maschine verständliche Informationslandschaft ([[semantic Web]]) zu schaffen.
Heute bedienen sich viele [[formale Sprache]]n der Syntax von XML. So ist XML ein wesentliches Instrument, um –&nbsp;wie es das W3C vorsieht&nbsp;– eine offene, für Mensch und Maschine verständliche Informationslandschaft ([[Semantic Web]]) zu schaffen.


Auch die bekannte Dokumentsprache [[Hypertext Markup Language|HTML]] wurde als „Extensible HyperText Markup Language“ ([[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 [[Parser]]n und die einfache Syntax: die Definition von [[SGML]] umfasst 500 Seiten, jene von XML nur 26.
Auch die bekannte Dokumentsprache [[Hypertext Markup Language|HTML]] wurde als „Extensible HyperText Markup Language“ ([[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 [[Parser]]n und die einfache Syntax: die Definition von [[SGML]] umfasst 500 Seiten, jene von XML nur 26.
Zeile 230: Zeile 225:
* [[OpenLaszlo|Laszlo]] (LZX)
* [[OpenLaszlo|Laszlo]] (LZX)


==== [[Computersicherheit|Sicherheit]] ====
==== Sicherheit ====
* [[Security Assertion Markup Language]] (sicherheitsbezogene Informationen beschreiben und übertragen)
* [[Security Assertion Markup Language]] (sicherheitsbezogene Informationen beschreiben und übertragen)
* [[XML Signature]] (XML-Schreibweise für [[digitale Signatur]]en)
* [[XML Signature]] (XML-Schreibweise für [[digitale Signatur]]en)
Zeile 240: Zeile 235:
* GSDML, ein Format zur Beschreibung von Automatisierungsgeräten, die mit [[Profinet#Engineering|Profinet]] kommunizieren können
* GSDML, ein Format zur Beschreibung von Automatisierungsgeräten, die mit [[Profinet#Engineering|Profinet]] kommunizieren können
* [[IODD]], ein Format zur Beschreibung von Sensoren und Aktoren
* [[IODD]], ein Format zur Beschreibung von Sensoren und Aktoren
* PLMXML, ein Format zur Beschreibung von Produktdaten als Teil der [[Siemens PLM Software]]<ref>[http://www.plm.automation.siemens.com/de_de/products/open/plmxml/ plm.automation.siemens.com]</ref>
* PLMXML, ein Format zur Beschreibung von Produktdaten als Teil der [[Siemens PLM Software]]<ref>{{Internetquelle |url=https://www.plm.automation.siemens.com/global/de/products/plm-components/ |titel=PLM Components {{!}} Siemens Software |abruf=2021-11-23}}</ref>
* LandXML, ein Format zur Speicherung georeferenzierter Objekte
* LandXML, ein Format zur Speicherung georeferenzierter Objekte
* RTML (Remote Telescope Markup Language), ein Format für die Beschreibung astronomischer Beobachtungsanfragen<ref>Remote Telescope Markup Language (RTML), {{bibcode|2006AN....327..751H}}</ref>
* RTML (Remote Telescope Markup Language), ein Format für die Beschreibung astronomischer Beobachtungsanfragen<ref>Remote Telescope Markup Language (RTML), {{bibcode|2006AN....327..751H}}</ref>
'''Mathematik und Naturwissenschaften'''

* AnIML, der ASTM XML Standard zu Darstellung von Daten aus der analytischen Chemie und Biologie<ref>{{Internetquelle |url=https://www.animl.org/ |titel=Home - AnIML |abruf=2021-11-23}}</ref>
* CIDX, ein Standard der chemischen Industrie
* [[MathML]], zu Darstellung mathematischer Formeln und komplexer Ausdrücke


==== Weitere ====
==== Weitere ====
Darüber hinaus existieren XML-Sprachen für [[Webservice]]s (z.&nbsp;B. [[SOAP]], [[Web Services Description Language|WSDL]] und [[WS-*]]), für die Einbindung von [[Java (Programmiersprache)|Java]]-Code in XML-Dokumente ([[Extensible Server Pages|XSP]]), für die Synchronisation von Kalenderdaten [[SyncML]], mathematische Formeln ([[MathML]]), Repräsentation von [[Graph (Graphentheorie)|Graphen]] ([[GraphML]]), Verfahren im Bereich des [[Semantic Web|Semantischen Webs]] ([[Resource Description Framework|RDF]], [[Web Ontology Language|OWL]], [[Topic Maps]], [[UOML]]), ''Service Provisioning'' ([[Service Provisioning Markup Language|SPML]]), den Austausch von Nachrichten ([[Extensible Messaging and Presence Protocol|XMPP]]) oder Finanzberichten wie bspw. [[Jahresabschluss|Jahresabschlüssen]] ([[XBRL]]), in Bereichen der Automobilindustrie ([[ODX]], [[Manufacturer Supplier Relationship|MSRSW]], [[AUTOSAR]]-Templates, [[QDX (VDA)|QDX]], [[JADM]], [[OTX]]), automatisierter Test z.&nbsp;B. von Schaltkreisen ([[ATML]]) über Systembiologie ([[Systems Biology Markup Language|SBML]]) sowie Landwirtschaft ([[AgroXML]]) bis zum Verlagswesen ([[ONIX]]) oder Chemie (CIDX) und viele weitere mehr.
Darüber hinaus existieren XML-Sprachen für [[Webservice]]s (z.&nbsp;B. [[SOAP]], [[Web Services Description Language|WSDL]] und [[WS-*]]), für die Einbindung von [[Java (Programmiersprache)|Java]]-Code in XML-Dokumente ([[Extensible Server Pages|XSP]]), für die Synchronisation von Kalenderdaten [[SyncML]], Repräsentation von [[Graph (Graphentheorie)|Graphen]] ([[GraphML]]), Verfahren im Bereich des [[Semantic Web|Semantischen Webs]] ([[Resource Description Framework|RDF]], [[Web Ontology Language|OWL]], [[Topic Maps]], [[UOML]]), ''Service Provisioning'' ([[Service Provisioning Markup Language|SPML]]), den Austausch von Nachrichten ([[Extensible Messaging and Presence Protocol|XMPP]]) oder Finanzberichten wie bspw. [[Jahresabschluss|Jahresabschlüssen]] ([[XBRL]]), zur Darstellung von Rechtsetzungsdokumenten [[Akoma Ntoso]]<ref>{{Literatur |Autor=Amelie Flatt, Arne Langner, Olof Leps |Titel=Model-Driven Development of Akoma Ntoso Application Profiles |Hrsg=Springer Nature |Auflage=1. |Verlag=Springer Nature |Ort=Heidelberg |Datum=2022 |ISBN=978-3-031-14131-7 |Online=https://link.springer.com/book/9783031141331 |Abruf=2022-08-19}}</ref>, in Bereichen der Automobilindustrie ([[ODX]], [[Manufacturer Supplier Relationship|MSRSW]], [[AUTOSAR]]-Templates, [[QDX (VDA)|QDX]], [[JADM]], [[OTX]]), automatisierten Tests z.&nbsp;B. von Schaltkreisen ([[ATML]]) über Systembiologie ([[Systems Biology Markup Language|SBML]]) sowie Landwirtschaft ([[AgroXML]]) bis zum Verlagswesen ([[ONIX]]) und viele weitere mehr.


Eine Zusammenfassung von XML-Sprachen für [[Office-Paket|Office-Anwendungen]] findet sich im [[OpenDocument]]-Austauschformat (''[[Organization for the Advancement of Structured Information Standards|OASIS]] Open Document Format for Office Applications'').
Eine Zusammenfassung von XML-Sprachen für [[Office-Paket|Office-Anwendungen]] findet sich im [[OpenDocument]]-Austauschformat (''[[Organization for the Advancement of Structured Information Standards|OASIS]] Open Document Format for Office Applications'').


== Alternative Formate ==
== Alternative Formate ==
{{Hauptartikel|Konfigurationsdatei}}
* [[Lisp|S-Expressions]] (Lisp-Syntax für Listen)
* [[JavaScript Object Notation|JSON]] (JavaScript Object Notation)
* [[YAML]] (YAML Ain't Markup Language)

== Trivia ==
[[Linus Torvalds]] bezeichnete XML als Markup-Sprache als wenig geeignet<ref>{{Literatur |Titel=Kommentar in Diskussion um XML als Markup-Sprache (06.03.2014) |Auflage= |Datum= |Online=[https://plus.google.com/+LinusTorvalds/posts/X2XVf9Q7MfV plus.google.com] |Abruf=2017-04-10}}</ref> (Kommentar Nr. 19):
{{Zitat-en
|Text=XML is crap. Really. There are no excuses. XML is nasty to parse for humans, and it’s a disaster to parse even for computers. There’s just no reason for that horrible crap to exist.
|Autor=Linus Torvalds, 2014}}


== Literatur ==
== Literatur ==
'''Standardwerke''' (mit mindestens 2. Auflage):
* {{Literatur
* {{Literatur
|Autor=Charles F. Goldfarb, Paul Prescod
|Autor=[[Charles Goldfarb]], Paul Prescod
|Titel=XML Handbuch
|Titel=Das XML-Handbuch. Anwendungen, Produkte, Technologien
|Auflage=2.
|Verlag=Markt und Technik
|Verlag=Addison-Wesley
|Ort=München [u.&nbsp;a.]
|Ort=München [u.&nbsp;a.]
|Datum=1999
|ISBN=3-8272-9575-0}}
* {{Literatur
|Autor=Wiebke Möhr, Ingrid Schmidt
|Titel=SGML und XML: Anwendungen und Perspektiven
|Verlag=Springer-Verlag
|Ort=Berlin / Heidelberg / New York [u.&nbsp;a.]
|Datum=1999
|ISBN=3-540-65543-3}}
* {{Literatur
|Autor=Robert Eckstein
|Titel=XML – kurz & gut
|Verlag=O’Reilly Verlag
|Ort=Cambridge / Köln [u.&nbsp;a.]
|Datum=2000
|Datum=2000
|ISBN=3-89721-219-6}}
|ISBN=978-3-82731712-4}}
* {{Literatur
|Autor=Henning Lobin
|Titel=Informationsmodellierung in XML und SGML
|Verlag=Springer
|Ort=Berlin
|Datum=2000
|ISBN=3-540-65356-2}}
* {{Literatur
* {{Literatur
|Autor=Michael Seeboerger-Weichselbaum
|Autor=Michael Seeboerger-Weichselbaum
|Titel=Das Einsteigerseminar XML
|Titel=Das Einsteigerseminar XML
|Auflage=2., überarbeitete
|Auflage=2.
|Verlag=BHV Software
|Verlag=BHV Software
|Ort=Kaarst
|Ort=Kaarst
|Datum=2000
|Datum=2000
|ISBN=3-8287-1018-2}}
|ISBN=3-8287-1018-2}}
* {{Literatur
|Autor=Henning Behme, Stefan Mintert
|Titel=XML in der Praxis. Professionelles Web-Publishing mit der Extensible Markup Language
|Auflage=2.
|Verlag=Addison-Wesley
|Ort=München [u.&nbsp;a.]
|Datum=2000
|ISBN=978-3-82731636-3}}
* {{Literatur
* {{Literatur
|Autor=Elliotte Rusty Harold
|Autor=Elliotte Rusty Harold
|Titel=Die XML Bibel
|Titel=Die XML Bibel
|Auflage=2. aktualisierte
|Auflage=2.
|Verlag=mitp
|Verlag=mitp
|Ort=Bonn
|Ort=Bonn
|Datum=2002
|Datum=2002
|ISBN=3-8266-0821-6}}
|ISBN=3-8266-0821-6}}
* {{Literatur
|Autor=Stefan Mintert
|Titel=XML & Co. Die W3C-Spezifikationen für Dokumenten- und Datenarchitektur
|Verlag=Addison-Wesley
|Ort=München
|Datum=2002
|ISBN=3-8273-1844-0}}
* {{Literatur
|Autor=Christine Kränzler
|Titel=XML/XSL – … für professionelle Einsteiger. für Buch und Web
|Verlag=Markt+Technik
|Ort=München
|Datum=2002
|ISBN=3-8272-6339-5}}
* {{Literatur
|Autor=Frank Bitzer
|Titel=XML im Unternehmen. Briefing fürs IT-Management
|Verlag=Galileo Press
|Ort=Bonn
|Datum=2002
|ISBN=3-89842-288-7}}
* {{Literatur
* {{Literatur
|Autor=Erik T. Ray
|Autor=Erik T. Ray
|Titel=Einführung in XML
|Titel=Einführung in XML
|Auflage=2.
|Verlag=O’Reilly
|Verlag=O’Reilly
|Datum=2004
|Datum=2004
|ISBN=3-89721-286-2}}
|ISBN=978-3-89721-370-8}}
* {{Literatur
* {{Literatur
|Autor=Margit Becher
|Autor=Ed Tittel
|Titel=XML : DTD, XML-Schema, XPath, XQuery, XSLT, XSL-FO, SAX, DOM
|Titel=XML für Dummies
|Verlag=W3L Verlag
|Auflage=3.
|Ort=Witten
|Verlag=Wiley-VCH
|Datum=2009
|Datum=2005
|ISBN=978-3-937137-69-8}}
|ISBN=978-3-52770222-0}}
* {{Literatur
* {{Literatur
|Autor=Marco Skulschus, Marcus Wiederstein
|Autor=Simon St. Laurent, Michael Fitzgerald
|Titel=XML: Standards und Technologien
|Titel=XML. kurz & gut
|Auflage=3.
|Verlag=Comelio Medien
|Ort=Berlin
|Verlag=O’Reilly
|Ort=Cambridge / Köln [u.&nbsp;a.]
|Datum=2009
|Datum=2006
|ISBN=978-3-939701-21-7}}
|ISBN=978-3-89721-516-0}}
* {{Literatur
* {{Literatur
|Autor=Helmut Vonhoegen
|Autor=Helmut Vonhoegen
|Titel=Einstieg in XML. Aktuelle Standards: XML Schema, XSL, XLink
|Titel=XML. Einstieg, Praxis, Referenz
|Auflage=8.
|Auflage=9.
|Verlag=Rheinwerk
|Verlag=Rheinwerk
|Datum=2015
|Datum=2018
|ISBN=978-3-8362-3798-7}}
|ISBN=978-3-8362-6537-9}}
* {{Literatur
|Autor=Margit Becher
|Titel=XML. DTD, XML-Schema, XPath, XQuery, XSLT, XSL-FO, SAX, DOM
|Auflage=2.
|Verlag=Springer Vieweg
|Ort=Wiesbaden
|Datum=2022
|ISBN=978-3-658-35434-3}}


== Weblinks ==
== Weblinks ==
{{Commonscat|XML}}
{{Commonscat|XML}}
{{Wikibooks|Websiteentwicklung: XML}}
{{Wikibooks|Websiteentwicklung: XML}}
* [http://www.w3.org/XML World Wide Web Consortium über XML] (englisch),<br />[http://www.edition-w3c.de/ edition-w3c.de – Deutsche Übersetzungen zu XML u.&nbsp;a.]
* [http://www.w3.org/XML World Wide Web Consortium über XML] (englisch)
* [https://www.homepage-webhilfe.de/XML/ Ausführliche Erklärung zu XML und Tutorials zu diversen XML-Sprachen]
* [https://www.homepage-webhilfe.de/XML/ Ausführliche Erklärung zu XML und Tutorials zu diversen XML-Sprachen]
* [http://xml.silmaril.ie XML FAQ (Frequently-Asked Questions)] auf Englisch (z.&nbsp;Z. gibt es keine deutsche Übersetzung)
* [http://xml.silmaril.ie XML FAQ (Frequently-Asked Questions)] auf Englisch (z.&nbsp;Z. gibt es keine deutsche Übersetzung)
* {{dmoz|World/Deutsch/Computer/Datenformate/Markup_Languages/XML/|XML}}
* {{dmoz|World/Deutsch/Computer/Datenformate/Markup_Languages/XML/|XML}}
* [http://www.data2type.de/xml-xslt-xslfo/ Infos zu diversen XML-Technologien wie XSLT, XPath, Schematron, XProc, WordML, XSL-FO]
* [http://www.data2type.de/xml-xslt-xslfo/ Infos zu diversen XML-Technologien wie XSLT, XPath, Schematron, XProc, WordML, XSL-FO]
* [https://codeconvertertools.org/xmlvalidator XML-Parser]


== Einzelnachweise ==
== Einzelnachweise ==
Zeile 371: Zeile 340:


[[Kategorie:XML| ]]
[[Kategorie:XML| ]]
[[Kategorie:Datenserialisierungformat]]
[[Kategorie:Standard für Elektronischen Datenaustausch]]
[[Kategorie:Standard für Elektronischen Datenaustausch]]
[[Kategorie:Beschreibungssprache]]
[[Kategorie:Beschreibungssprache]]

Aktuelle Version vom 26. Dezember 2024, 16:39 Uhr

Extensible Markup Language
XML-Beispiel
Dateiendung: .xml
MIME-Type: application/xml, text/xml
Magische Zahl: 3C 3F 78 6D 6C hex
<?xml
Entwickelt von: World Wide Web Consortium
Art: Auszeichnungssprache
Erweitert von: SGML
Erweitert zu: XHTML, RSS, Atom
1.0 (Fifth Edition)
1.1 (Second Edition)


Die Extensible Markup Language (dt. Erweiterbare Auszeichnungssprache), abgekürzt XML, ist eine Auszeichnungssprache zur Darstellung hierarchisch strukturierter Daten im Format einer Textdatei, die sowohl von Menschen als auch von Maschinen lesbar ist.

XML wird auch für den plattform- und implementationsunabhängigen Austausch von Daten zwischen Computersystemen eingesetzt, insbesondere über das Internet, und wurde vom World Wide Web Consortium (W3C) am 10. Februar 1998 veröffentlicht.[1] Die aktuelle Fassung ist die fünfte Ausgabe vom 26. November 2008.[2] XML ist eine Metasprache, auf deren Basis durch strukturelle und inhaltliche Einschränkungen anwendungsspezifische Sprachen definiert werden. Diese Einschränkungen werden entweder durch eine Document Type Definition (DTD) oder durch ein XML Schema ausgedrückt. Beispiele für XML-Sprachen sind: RSS, MathML, GraphML, XHTML, XAML, Scalable Vector Graphics (SVG), GPX, aber auch das XML-Schema selbst.

Die Standardzeichenkodierung eines XML-Dokumentes ist UTF-8. XML-bearbeitende Systeme müssen die Kodierungen UTF-8 und UTF-16 beherrschen.[3] XML-Dokumente, die UTF-8 oder UTF-16 verwenden, können in allen Texteditoren, die diese Kodierungen unterstützen, angezeigt und bearbeitet werden.

Wenn das XML-Dokument Binärdaten enthalten soll, müssen diese Daten zu Text umkodiert werden. Dazu kann z. B. die Base64-Kodierung verwendet werden.

Die wichtigste Struktureinheit eines XML-Dokumentes ist das Element. Elemente können Text wie auch weitere Elemente als Inhalt enthalten. Elemente bilden die Knoten des Strukturbaumes eines XML-Dokumentes. Der Name eines XML-Elementes kann in XML-Dokumenten ohne Dokumenttypdefinition (DTD) frei gewählt werden. In XML-Dokumenten mit DTD muss der Name eines Elementes in der DTD deklariert sein und das Element muss sich in einer zugelassenen Position innerhalb des Strukturbaumes gemäß DTD befinden. In der DTD wird u. a. der mögliche Inhalt eines jeden Elementes definiert. Elemente sind die Träger der Information in einem XML-Dokument.

Für die Auszeichnung von Elementen werden Tags (Auszeichnungen) verwendet:

  • ein Starttag für den Beginn eines Elementes: <Elementname>
  • ein Endtag für das Ende eines Elementes: </Elementname>
  • ein Leertag für ein Element ohne Inhalt: <Elementname/>

Wohlgeformtheit

[Bearbeiten | Quelltext bearbeiten]

Ein XML-Dokument heißt „wohlgeformt“ (oder englisch well-formed), wenn es alle XML-Regeln einhält. Beispielhaft seien hier folgende genannt:

  • Das Dokument besitzt genau ein Wurzelelement. Als Wurzelelement wird dabei das jeweils äußerste Element bezeichnet, z. B. <html> in XHTML.
  • Alle Elemente mit Inhalt besitzen einen Start- und einen Endtag (z. B. <eintrag>Eintrag 1</eintrag>). Elemente ohne Inhalt können mit einem Leertag gekennzeichnet werden (z. B. <eintrag />).
  • Die Start- und Endtags sind ebenentreu-paarig verschachtelt. Das bedeutet, dass alle Elemente geschlossen werden müssen, bevor die End-Auszeichner des entsprechenden Elternelements oder die Beginn-Auszeichner eines Geschwisterelements erscheinen.
  • Ein Element darf nicht mehrere Attribute mit demselben Namen besitzen.
  • Attributwerte müssen in Anführungszeichen stehen ("..." oder '...').
  • Die Start- und Endtags beachten die Groß- und Kleinschreibung (z. B. <eintrag></Eintrag> ist nicht gültig).

Gültigkeit (Validität)

[Bearbeiten | Quelltext bearbeiten]

Soll XML für den Datenaustausch verwendet werden, ist es von Vorteil, wenn das Format mittels einer Grammatik (z. B. einer Dokumenttypdefinition oder eines XML-Schemas) definiert ist. Der Standard definiert ein XML-Dokument als gültig (oder englisch valid), wenn es wohlgeformt ist, den Verweis auf eine Grammatik enthält und das durch die Grammatik beschriebene Format einhält.

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.

Aufbau eines XML-Dokuments

[Bearbeiten | Quelltext bearbeiten]

Beispiel einer XML-Datei

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<verzeichnis>
    <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>
</verzeichnis>

XML-Dokumente besitzen einen physischen und einen logischen Aufbau.

Physischer Aufbau

[Bearbeiten | Quelltext bearbeiten]
  • Die Dokument-Entität (englisch Document entity) enthält das Hauptdokument.
  • 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;).
  • Eine XML-Deklaration wird verwendet, um XML-Version, Zeichenkodierung und eine mögliche Verarbeitbarkeit ohne DTD zu spezifizieren.
  • Eine DTD wird verwendet, um Entitäten sowie den erlaubten logischen Aufbau zu spezifizieren. Die Verwendung einer DTD kann in der XML-Deklaration abgewählt werden.

Logischer Aufbau

[Bearbeiten | Quelltext bearbeiten]

Der logische Aufbau entspricht einer Baumstruktur und ist damit hierarchisch organisiert. Als Baumknoten gibt es:

  • Elemente, deren physische Auszeichnung mittels
    • eines passenden Paars aus Starttag <Tagname> und End-Tag </Tagname> oder
    • eines Leertags <Tagname/> erfolgen kann,
  • Attribute als bei einem Starttag oder Leertag geschriebene zusätzliche Eigenschaften der Elemente in der Syntax Attributname=Attributwert,
  • Verarbeitungsanweisungen <?Zielname Daten?> (englisch Processing Instructions),
  • Kommentare <!-- Kommentar-Text -->, und
  • Text, der als normale Zeichendaten oder in Form eines CDATA-Abschnittes <![CDATA[ beliebiger Text]]> auftreten kann.

Ein XML-Dokument muss genau ein Element auf der obersten Ebene enthalten. Unterhalb dieses Dokumentelements können weitere Elemente und Text verschachtelt werden.

Eine Dokumenttypdefinition (DTD) beschreibt die Struktur und Grammatik von Dokumenten. Sie ist Systembestandteil von XML und per Standard aktiviert.

Werden Dokumente mit Bezug zu einer externen Dokumenttypdefinition oder mit einer integrierten Dokumenttypdefinition erstellt, so prüft der Parser das Dokument bereits beim Öffnen (Lesen). Ein Dokument auf Basis einer Dokumenttypdefinition ist stets ein valides Dokument. Die Übereinstimmung des Dokumentinhaltes mit den Regeln der Dokumenttypdefinition steht im Vordergrund. Die technische Lesbarkeit, also auch das Lesen von nicht validen Dokumenten ist nachrangig. Das ist für Volltextdokumente (erzählende Dokumente, engl. narrative documents) vorgesehen und der Haupteinsatzzweck.

Dokumente ohne DTD sind eher für den beliebigen Datenaustausch geeignet. Der Parser prüft diese Dokumente nur nach den Regeln der Wohlgeformtheit. Die technische Lesbarkeit steht hier an erster Stelle. Das Prüfen und Auslesen der eigentlichen Informationen wird mit nachgelagerten Prozessen realisiert.

Lesbarkeit von XML-Dokumenten

[Bearbeiten | Quelltext bearbeiten]

Praktisch alle Webbrowser wie Apple Safari, Google Chrome, Microsoft Edge, Mozilla Firefox und Opera können XML-Dokumente mit Hilfe des eingebauten XML-Parsers direkt visualisieren.

Klassifizierung von XML-Dokumenten

[Bearbeiten | Quelltext bearbeiten]

XML-Dokumente lassen sich anhand ihres beabsichtigten Gebrauchs und ihres Strukturierungsgrads in dokumentzentrierte und datenzentrierte Dokumente unterteilen. Die Grenze zwischen diesen Dokumentenarten ist jedoch fließend. Mischformen können als semistrukturiert bezeichnet werden.

  • dokumentzentriert: Das Dokument ist an ein Textdokument angelehnt, das für den menschlichen Leser größtenteils auch ohne die zusätzliche Metainformation verständlich ist. XML-Elemente werden hauptsächlich zur semantischen Markierung von Passagen des Dokuments genutzt, das Dokument ist nur schwach strukturiert. Aufgrund der schwachen Strukturierung ist eine maschinelle Verarbeitung schwierig.
  • datenzentriert: Das Dokument ist hauptsächlich für die maschinelle Verarbeitung bestimmt. Es folgt einem Schema, das Entitäten eines Datenmodells beschreibt und definiert, in welcher Beziehung die Entitäten zueinander stehen, sowie, welche Attribute die Entitäten haben. Das Dokument ist somit stark strukturiert und für den unmittelbaren menschlichen Gebrauch weniger geeignet.
  • semistrukturiert: Semistrukturierte Dokumente stellen eine Art Mischform dar, die stärker strukturiert ist als dokumentzentrierte Dokumente, aber schwächer als datenzentrierte Dokumente.

Es ist typisch für datenzentrierte XML-Dokumente, dass Elemente entweder Elementinhalt oder Textinhalt haben. Der sogenannte gemischte Inhalt (mixed content), bei dem Elemente sowohl Text als auch Kindelemente enthalten, ist für die anderen XML-Dokumente typisch.

Verarbeitung von XML

[Bearbeiten | Quelltext bearbeiten]

Verarbeitungskriterien

[Bearbeiten | Quelltext bearbeiten]

Grundsätzlich sind drei Aspekte beim Zugriff auf ein XML-Dokument von Bedeutung:

  • Wie erfolgt der Zugriff auf die XML-Datei: sequenziell oder wahlfrei?
  • Wie ist der Ablauf beim Zugriff auf die XML-Daten gestaltet: „Push“ oder „Pull“? (Push bedeutet, dass die Ablaufkontrolle des Programms beim Parser liegt. Pull bedeutet, dass die Ablaufkontrolle im Code, der den Parser aufruft, implementiert ist.)
  • Wie erfolgt das Baumstrukturmanagement der XML-Daten: hierarchisch oder verschachtelt?

Programmgesteuerter Zugriff auf XML-Dokumente

[Bearbeiten | Quelltext bearbeiten]

Das Einlesen von XML-Dokumenten erfolgt auf unterster Ebene über eine spezielle Programmkomponente, einen XML-Prozessor, auch XML-Parser genannt. Er stellt eine Programmierschnittstelle (API) zur Verfügung, über die die Anwendung auf das XML-Dokument zugreift.

Die XML-Prozessoren unterstützen dabei drei grundlegende Verarbeitungsmodelle.

  • DOM: Ein DOM-API repräsentiert ein XML-Dokument als Baumstruktur und gewährt wahlfreien Zugriff auf die einzelnen Bestandteile der Baumstruktur. DOM erlaubt außer dem Lesen von XML-Dokumenten auch die Manipulation der Baumstruktur und das Zurückschreiben der Baumstruktur in ein XML-Dokument. Aus diesem Grund ist DOM sehr speicherintensiv.
  • SAX: Ein SAX-API repräsentiert ein XML-Dokument als sequentiellen Datenstrom und ruft für im Standard definierte Ereignisse vorgegebene Rückruffunktionen (callback function) auf. Eine Anwendung, die SAX nutzt, kann eigene Unterprogramme als Rückruffunktionen registrieren und auf diese Weise die XML-Daten auswerten.
  • Pull-API: Ein XML-Pull-API verarbeitet Daten sequenziell und bietet sowohl ereignisbasierte Verarbeitung als auch einen Iterator an. Es ist hoch speichereffizient und ggf. leichter zu programmieren als das SAX-API, da die Ablaufkontrolle beim Programm und nicht beim Parser liegt.

Weitere Verarbeitungsmodelle:

  • Data Binding: Diese Möglichkeit stellt XML-Daten als Datenstruktur direkt für einen Programmzugriff bereit. Die XML-Daten werden per Unmarshalling direkt in z. B. Objekte gewandelt.
  • Nicht extrahierendes XML-API: Die Daten werden auf Byte-Ebene sehr effizient verarbeitet.

Oftmals greift der Anwendungscode nicht direkt auf die Parser-API zu. Stattdessen wird XML weiter gekapselt, so dass der Anwendungscode mit nativen Objekten / Datenstrukturen arbeitet, welche sich auf XML abstützen. Beispiele für solche Zugriffsschichten sind JAXB in Java, der Data Binding Wizard in Delphi oder das XML Schema Definition Toolkit in .Net. Die Umwandlung von Objekten in XML ist üblicherweise bidirektional möglich. Diese Umwandlung wird als Serialisierung oder Marshalling bezeichnet.

XML-Parser-API-Beispiele

[Bearbeiten | Quelltext bearbeiten]

XML-Parser-APIs sind für verschiedene Programmiersprachen vorhanden, z. B. Java, C, C++, C#, Python, Perl und PHP. Parser-API-Beispiele:

  • StAX (Java): Eine hochgradig speichereffiziente Parserimplementierung (Pull) und gleichzeitig einfach zu programmieren. Es werden Cursor- und Iteratorverarbeitungsmodelle angeboten.
  • JAXB: Data Binding für Java. Beispielsweise kann aus einem XML-Schema die entsprechende Java-Klasse generiert werden und umgekehrt.
  • Apache XMLBeans Java Data Binding Framework, kann bereits mit Java 1.4.2 verwendet werden
  • Xerces: Ein validierender XML-Parser für C++, Java und Perl für eine große Anzahl an Plattformen.
  • MSXML: Microsoft XML Core Services, die Microsoft XML Softwarebibliothek für XML-Unterstützung über DOM, SAX, XSLT, XML Schemata und andere zu XML gehörende Technologien

Zur Erstellung von XML-Dokumenten gibt es spezielle Programme, sogenannte XML-Editoren. Zur Speicherung und Verwaltung von XML-Dokumenten gibt es ebenfalls spezielle Programme, sogenannte XML-Datenbanken.

Transformation und Darstellung von XML-Dokumenten

[Bearbeiten | Quelltext bearbeiten]

Ein XML-Dokument kann mittels geeigneter Transformationssprachen wie XSLT oder DSSSL in ein anderes Dokument transformiert werden. Oftmals dient die Transformation zur Überführung eines Dokuments aus einer XML-Sprache in eine andere XML-Sprache, beispielsweise zur Transformation nach XHTML, um das Dokument in einem Webbrowser anzuzeigen.

Um die Struktur von XML-Sprachen zu beschreiben, bedient man sich sogenannter Schemasprachen.

XML Schema (beziehungsweise XSD für 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.

Weitere Schemasprachen

[Bearbeiten | Quelltext bearbeiten]

Weitere Schemasprachen sind Document Structure Description, RELAX NG und Schematron.

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, STX
  • Adressierung von Teilen eines XML-Baumes: XPath
  • Verknüpfung von XML-Ressourcen: XPointer, XLink und XInclude
  • Selektion von Daten aus einem XML-Datensatz: XQuery
  • Datenmanipulation in einem XML-Datensatz: XUpdate
  • Abfassen von elektronischen Formularen: XForms
  • Definition von XML-Datenstrukturen: XML Schema (= XSD, XML Schema Definition Language), DTD und RELAX NG
  • Signatur und Verschlüsselung von XML-Knoten: XML Signature und XML-Encryption
  • Aussagen zum formellen Informationsgehalt: XML Infoset
  • Formatierte Darstellung von XML-Daten: XSL-FO
  • Definition zum Methoden- bzw. Funktionsaufruf durch verteilte Systeme: XML-RPC
  • Standardisierte Attribute: XML Base und ID (DTD)
  • XML-basierte deklarative Programmiersprache: MXML

Heute bedienen sich 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 (Semantic 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.

  • XSL-FO (Textformatierung)
  • DocBook
  • DITA
  • XHTML (XML-konformes HTML)
  • TEI (Text Encoding Initiative)
  • NITF (News Industry Text Format)
  • OPML (Outline Processor Markup Language)
  • OSIS (Open Scripture Information Standard)
  • SVG (Vektorgrafiken)
  • X3D (3D-Modellierungssprache)
  • Collada (Austauschformat für Daten zwischen verschiedenen 3D-Programmen)
  • MEI (Music Encoding Initiative)
  • MusicXML (Notendaten, aufgeschriebene Musik)
  • SMIL (zeitsynchronisierte, multimediale Inhalte)
  • MPEG-7 (MPEG-7 Metadaten)
  • Laszlo (LZX)

Ingenieurwissenschaften

[Bearbeiten | Quelltext bearbeiten]
  • AutomationML, ein Format zur Speicherung von Anlagenplanungsdaten
  • CAEX, ein Format zur Speicherung hierarchischer Objektinformationen
  • GSDML, ein Format zur Beschreibung von Automatisierungsgeräten, die mit Profinet kommunizieren können
  • IODD, ein Format zur Beschreibung von Sensoren und Aktoren
  • PLMXML, ein Format zur Beschreibung von Produktdaten als Teil der Siemens PLM Software[4]
  • LandXML, ein Format zur Speicherung georeferenzierter Objekte
  • RTML (Remote Telescope Markup Language), ein Format für die Beschreibung astronomischer Beobachtungsanfragen[5]

Mathematik und Naturwissenschaften

  • AnIML, der ASTM XML Standard zu Darstellung von Daten aus der analytischen Chemie und Biologie[6]
  • CIDX, ein Standard der chemischen Industrie
  • MathML, zu Darstellung mathematischer Formeln und komplexer Ausdrücke

Darüber hinaus existieren XML-Sprachen für Webservices (z. B. SOAP, WSDL und WS-*), für die Einbindung von Java-Code in XML-Dokumente (XSP), für die Synchronisation von Kalenderdaten SyncML, Repräsentation von Graphen (GraphML), Verfahren im Bereich des Semantischen Webs (RDF, OWL, Topic Maps, UOML), Service Provisioning (SPML), den Austausch von Nachrichten (XMPP) oder Finanzberichten wie bspw. Jahresabschlüssen (XBRL), zur Darstellung von Rechtsetzungsdokumenten Akoma Ntoso[7], in Bereichen der Automobilindustrie (ODX, MSRSW, AUTOSAR-Templates, QDX, JADM, OTX), automatisierten Tests z. B. von Schaltkreisen (ATML) über Systembiologie (SBML) sowie 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).

Alternative Formate

[Bearbeiten | Quelltext bearbeiten]

Standardwerke (mit mindestens 2. Auflage):

  • Charles Goldfarb, Paul Prescod: Das XML-Handbuch. Anwendungen, Produkte, Technologien. 2. Auflage. Addison-Wesley, München [u. a.] 2000, ISBN 978-3-8273-1712-4.
  • Michael Seeboerger-Weichselbaum: Das Einsteigerseminar XML. 2. Auflage. BHV Software, Kaarst 2000, ISBN 3-8287-1018-2.
  • Henning Behme, Stefan Mintert: XML in der Praxis. Professionelles Web-Publishing mit der Extensible Markup Language. 2. Auflage. Addison-Wesley, München [u. a.] 2000, ISBN 978-3-8273-1636-3.
  • Elliotte Rusty Harold: Die XML Bibel. 2. Auflage. mitp, Bonn 2002, ISBN 3-8266-0821-6.
  • Erik T. Ray: Einführung in XML. 2. Auflage. O’Reilly, 2004, ISBN 978-3-89721-370-8.
  • Ed Tittel: XML für Dummies. 3. Auflage. Wiley-VCH, 2005, ISBN 978-3-527-70222-0.
  • Simon St. Laurent, Michael Fitzgerald: XML. kurz & gut. 3. Auflage. O’Reilly, Cambridge / Köln [u. a.] 2006, ISBN 978-3-89721-516-0.
  • Helmut Vonhoegen: XML. Einstieg, Praxis, Referenz. 9. Auflage. Rheinwerk, 2018, ISBN 978-3-8362-6537-9.
  • Margit Becher: XML. DTD, XML-Schema, XPath, XQuery, XSLT, XSL-FO, SAX, DOM. 2. Auflage. Springer Vieweg, Wiesbaden 2022, ISBN 978-3-658-35434-3.
Commons: XML – Sammlung von Bildern, Videos und Audiodateien
Wikibooks: Websiteentwicklung: XML – Lern- und Lehrmaterialien

Einzelnachweise

[Bearbeiten | Quelltext bearbeiten]
  1. Extensible Markup Language (XML) 1.0. w3.org, 10. Februar 1998, archiviert vom Original am 15. Juni 2006; abgerufen am 12. Februar 2017 (englisch).
  2. Extensible Markup Language (XML) 1.0 (Fifth Edition). w3.org, 26. November 2008, abgerufen am 12. Februar 2017 (englisch).
  3. Characters. In: Extensible Markup Language (XML) 1.0 (Fifth Edition). 26. November 2008, abgerufen am 9. März 2019 (englisch).
  4. PLM Components | Siemens Software. Abgerufen am 23. November 2021.
  5. Remote Telescope Markup Language (RTML), bibcode:2006AN....327..751H
  6. Home - AnIML. Abgerufen am 23. November 2021.
  7. Amelie Flatt, Arne Langner, Olof Leps: Model-Driven Development of Akoma Ntoso Application Profiles. Hrsg.: Springer Nature. 1. Auflage. Springer Nature, Heidelberg 2022, ISBN 978-3-03114131-7 (springer.com [abgerufen am 19. August 2022]).