Sql-und-Xml - Home

Xml lernen

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-2016 Jürgen Auer, Berlin.