Was XML nicht leistet, jedoch zusammen mit XSLT ermöglicht: Ausblick und Grenzen von XML
- Die hier vorgestellten Prinzipien sind seit 1998 weltweiter Standard, festgelegt im
http://www.w3.org/TR/xml/ und seither unverändert
gültig. Die Anpassungen bezüglich der Version Xml 1.1 lassen den
Kern stabil.
- XML enthält keinerlei Aussage darüber, wie ein Xml-Dokument darzustellen ist. Auch das, was
bei der Überprüfung auf Wohlgeformtheit in einem Browser angezeigt wird, ist kein weltweiter Standard,
sondern wird von den Entwicklern des Browser individuell festgelegt.
- Das Konzept von XML beruht also darauf, daß strikt zwischen dem eigentlichen Dokument und dessen
Darstellung getrennt wird. Das Xml-Dokument umfaßt seine logische und seine physikalische Beschreibung,
es beinhaltet seine eigene Selbstbeschreibung vollständig. Alle Fragen der Ausgabe, der Anpassung
an verschiedene Lesemedien (Bildschirm, Braille, Sprachwiedergabe, Druck) oder das Problem der Erstellung
einer Zusammenfassung oder eines Inhaltsverzeichnisses sind davon strikt getrennt.
- Deshalb gibt es in XML keinerlei dieser speziellen Elemente wie <h1> für Überschriften,
<b> für Fettdruck oder <a href='...'> für Verweise, wie Sie diese vielleicht von Html
her kennen und in Xml bislang vergeblich gesucht haben.
- Aufsetzend auf Xml gibt es inzwischen diverse DTDs, welche Vokabulare (Elemente, Attribute) und zusätzliche semantische
Bedeutungen ihrer Elemente normativ festlegen. Die semantische Bedeutung wird natürlich außerhalb von Xml festgelegt.
Sie ermöglichen immer die Erstellung eigener Xml-Dateien, welche diese Vokabulare nutzen sowie die Entwicklung von
Parsern, welche die entsprechende Semantik hinzufügen. Die beiden wichtigsten (Hintergrund-) Vokabulare sind XSL zur
Transformation und Formatierung von Ausgaben sowie Xml Schema zur schärferen Deklaration von Xml-Dokumenten.
Weitere Vokabulare sind bsp. Resource Description Framework (RDF)
oder MathML bzw. ChemML zur Darstellung mathematischer oder chemischer Formeln.
- Mit der eXtensible Stylesheet Language (siehe
XSL beim W3C) und seiner Teilmenge XSLT (eXtensible
Stylesheet Language Transformation) steht ein seit 2001
standardisiertes Werkzeug zur Verfügung. Mit diesem läßt sich beschreiben, wie ein Xml-Dokument in ein anderes Xml-Dokument oder auch
in 'bloßen Text ohne Markup' transformiert werden soll. Da alle Xml-Dokumente 'hinreichend ähnlich' aussehen (eindeutiges Wurzelelement,
Schachtelung), kann ein System von Transformationsregeln, zusammengefaßt in einer XSLT-Datei, von einem Transformationsprogramm gelesen,
ein Xml-Dokument geladen und auf letzteres die Transformationsregeln angewandt werden. Das Ergebnis ist ein neues Xml- oder
Textdokument (ohne Markup), welches auch leer sein kann.
- Dieses Konzept ermöglicht es, aus einem Xml-Dokument verschiedenartigste Outputs zu erzeugen,
in Abhängigkeit davon, welche Ausgabe gewünscht wird. So kann aus einem Text mit Überschriften einerseits
eine komplette Darstellung für den Druck, andererseits ein kurzes Inhaltsverzeichnis erzeugt werden.
Ebenso kann dasselbe Xml-Dokument einerseits transferiert werden in ein Xml-Dokument, das am Bildschirm
ausgegeben wird und ausgefeilte Formatierungen enthält, andererseits steht auch der bloße Content
zur Verfügung, so daß bsp. eine Braille- oder Sprachausgabe möglich ist.
-
Ein Xml-Dokument ist also so etwas wie eine Datenbank, welche die eigentlichen Rohdaten enthält.
So, wie mit Sql aus einer Datenbank Aggregationen und Verdichtungen extrahiert werden, können mit
XSLT aus demselben XML-Dokument verschiedenartigste Outputs erzeugt werden. Bei Sql gibt es
allerdings noch eine Bindung an das Datenbank-System und die darunterliegende Betriebssystem-Plattform.
Bei Xml / XSLT sind dagegen sowohl die Daten (das Xml-Dokument) als auch die Transformationsregeln
(eine oder mehrere XSLT-Dateien) reine Textdateien, die mit jedem Standard-Editor auf jedem Betriebssystem
bearbeitet werden können. Und einfache bzw. validierende Parser sowie Parser, die zusätzlich das
XSLT-Dokument laden und es auf das Xml-Dokument anwenden, gibt es ebenfalls auf jeder Plattform.
Damit ist die eigentliche Entwicklung eigener DTD's, das Schreiben der gewünschten Xml-Dokumente sowie
die Entwicklung des XSLT-Codes möglich, ohne betriebssystem-spezifische Besonderheiten beachten zu
müssen.
- Soll ein Html-Output, wie bsp. diese Site, erzeugt werden, so kann das Xml-Dokument entweder gewöhnliche
Html-Elemente enthalten und diese kopieren oder die Html-Elemente mit einem Namespace-Präfix der Form <html:body>,
<html:table> oder <html:a> auszeichnen. Die letztere Version wurde ursprünglich gewählt. Die Verwendung
des NET-Tools Xml-Batch-Converter führte allerdings dazu, daß die Namespace-Declaration in das html-Wurzelelement
übernommen wurde, so daß das Ergebnis nicht mehr der Html-DTD entsprochen hat. Die MSXML3.0 hatte die Namespace-Declaration
nicht eingetragen. Aus dem Code wurden deshalb alle <html: - Präfixe entfernt. Zusätzlich werden Sie im Xml-Quellcode
dieser Site Elemente finden, die offenkundig nicht html-artig sind, etwa das Wurzelelement
<own-body file="xml-ausblick-und-grenzen"> des aktuellen Dokuments. Leser der Html-Version
finden dieses Dokument derzeit, indem sie zwischen Domain und Verzeichnis 'xml/' einfügen und die
Endung der Datei von .html auf .xml ändern. Die dem Xml-Dokument zugeordnete XSLT-Datei
kopiert nun in der Regel die Html-Elemente einfach und fügt nur in relativ wenigen Fällen
zusätzliche Ausdrücke ein. Die selbstdefinierten Elemente werden dagegen für komplexe
Ausdrücke verwendet, so für die Erzeugung der links stehenden Verweisstruktur. Damit kann ein
Html-Output entweder durch einen passenden Browser clientseitig erzeugt werden oder ein Script bzw. Programm
erledigt dies einmalig und erzeugt aus allen Xml-Dokumenten die zugehörigen Html-Dokumente.
- Xml Schema: Die Verwendung einer DTD unterliegt mehreren Beschränkungen. Èine DTD ist kein wohlgeformtes Xml-Dokument,
sondern erfordert die Verwendung einer eigenen Sprache. Es gibt keine spezifischen Datentypen (Datum, Zeit, numerische Formate),
sondern nur CDATA. Ein Ausdruck '2000-10-01' kann nicht als gültiger, ein Ausdruck '2000-30-01' nicht als ungültiger
Datumsausdruck erkannt werden. Namespaces werden nicht unterstützt, die Definition für ein Element 'html:body' ist,
abgesehen vom aufwendigen Einsatz mit Parameter-Entities, unabhängig von der Definition des Elements 'body'. Schließlich sind
die Einschränkungsmöglichkeiten für Unterelemente auf wenige Fälle und deren mühsame Kombination beschränkt (0, 1 und mehrfach).
Überwunden wurden diese Grenzen durch die Entwicklung von Xml Schema (siehe Xml Schema - Einführung).
Analog zur Zuordnung einer DTD kann einem Xml-Dokument ein XmlSchema zugewiesen werden. Ihm werden all jene
weiteren Einschränkungen auferlegt, welche in der Schema-Datei festgelegt wurden. Der validierende Parser kann das Xml-Dokument
im Vergleich zur Prüfung gegen eine DTD schärfer validieren und es gegebenenfalls früher zurückweisen.
© 2003-2010 Jürgen Auer, Berlin.