Bei den Erläuterungen zu den Möglichkeiten von XML ist als eine interessante davon schon die Transformation von XML-Dateien in ein anderes (strukturiertes) Format genannt. Auch dazu gibt es einen Standard, XSLT (eXtensible Stylesheet Language Transformation), der wiederum von verschiedene Tools, wie unter anderem von modernen Web-Browsern, unterstützt wird.

XML als Basis

Damit lassen sich Inhalte, wie zum Beispiel die Texte für diese Webseite auch in einem (einfach gehaltenem) XML-Dokument kodieren, welches dann per XSLT in das Zielformat HTML transformiert wird. Es lassen sich sogar das XML-Dokument und die Datei mit der XSLT-Kodierung zusammen an den Browser ausliefern, der erst dann für die Anzeige die Transformation realisiert.

Genau darauf basiert das prinzipielle Vorgehen bei der Gestaltung dieses Webautritts. Die Basis bilden XML-Dateien für die einzelnen Webseiten, wie zum Beispiel:

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE document SYSTEM "finosWebsite.dtd" >


<document 
  xml:id="example-xml2011"  
  title="XML: Webseiten-Generierung"  
  subject="Generierung von Webseiten aus XML-Dateien"
  keywords="A. Knispel, Programmierung, Java, XML, XSLT"
  creation-time="2020-11-25"  
  last-update-time="2020-11-30" >


<references>

  <reference xml:id="lnk_xml-characteristics" 
    type="intern-link"  target="xml#characteristics" />

  <reference xml:id="pre_site" 
    type="src"   target="finosExampelXml2011pre.xml" />

  <reference xml:id="lnk_xml-website" 
    type="intern-link"  target="xml#website-xml" /> 

</references>

<content>

<intro>

<chapter xml:id="first" >

<p>Bei den Erläuterungen zu den Möglichkeiten von 
<link target="lnk_xml-characteristics">XML</link> 
ist als eine interessante davon schon ... 
... unter anderem von modernen Web-Browsern, wird.</p>

</chapter>

</intro>


<chapter xml:id="basic-xml"
	title="XML als Basis">

<p>Damit lassen sich Inhalte, wie zum Beispiel die 
Texte für diese Webseite ... 
..., der erst dann für die Anzeige die Transformation 
realisiert.</p>

...

</chapter>

...

</content>

</document>

Hier gibt es wieder, zu Beginn, ein references - Element als Container für Referenzen, die hier aber nicht nur zu den Ablageorten für die in die zu generierende HTML-Datei einzubindende Dateien (wie zum Beispiel Bilder) führen, sondern auch zur Verlinkung zu anderen Seiten dieses Internet-Auftritts dienen. Diese haben intern-link als Wert des type - Attributs und deren Ziel (target) wird über die Informationen der schon beschriebene XML-Datei für die Gesamtübersicht aufgelöst. Dabei wird sogar das gezielte Anspringen von Fragmenten unterstützt, wie zum Beispiel das Kapitel characteristics der Seite mit der ID xml

Das sich anschließende content - Element enthält im Wesentlichen die einzelnen chapter - Elemente, die jeweils ein xml:id - Attribut besitzen, welches die Basis für die gerade genannte Verlinkung zu den internen Fragmenten der generierten HTML-Seiten bildet. Weitere Elemente sind u. a. p (für Absätze), img (für Bilder), pre (für feste, vordefinierte Texte), em (für differenziert darzustellende Textabschnitte) und noch einige weitere.

Aus diesen Elementen werden bei der Transformation genau definierte Abschnitte des HTML-Codes generiert, die dann mittels den jeweils zugeordneten CSS - Dateien bei der Anzeige entsprechend formatiert werden. Für das pre - Element kann so zum Beispiel für Codeauszüge auch die Darstellung in einem weißen Textkasten erreicht werden.

Innerhalb der XSLT-Anweisungen wird die XML-Datei zur Gesamtübersicht mit eingebunden. Damit wird nicht nur, wie schon erläutert, die Verlinkung zu den anderen Seiten realisiert, sondern auch die Seitennavigation komplett automatisch generiert. Das erfordert zwar relativ aufwändige Kodierungen in der XSLT-Datei. Das macht sich aber dadurch bezahlt, dass es diese nur einmal geben muss, und sie dann zum Transformieren jeder einzelnen Webseite eingesetzt werden kann.

top ↑

Die Generierung der HTML-Dateien

Der Ablauf der Transformation selber folgt einem recht einfachen und klarem Schema: die XSLT-Datei wird als Quelle für einen Transformer (aus dem java.xml-Bereich der Java-Bibliotheksklassen) gesetzt und mit diesem werden nacheinander die XML-Quelldateien für die einzelnen Webseiten transformiert. Auch das kann relativ einfach realisiert werden, wenn die Festlegung eingehalten wird, dass sich diese Dateien in einem gemeinsamen Verzeichnis befinden müssen, von dem alle dort enthaltenen Dateien nacheinander abgearbeitet werden. Genauso sind Festlegungen zu festen Ablageorten für die generierten HTML-Dateien und den von dort referenzierten Ressourcen-Dateien notwendig.

Während der Transformation kann eine Liste geführt werden, in der alle bereits abgearbeiteten XML-Dateien aufgenommen werden - genauer: die ID-s des jeweils dort kodierten Dokuments. Mit dieser können die in der XML-Datei zur Gesamtübersicht bei den site - Elementen per document - Attribut angegebenen ID-Werten abgeglichen werden, um so »fehlende« (oder überzählige) Seiten zu erkennen. Auf ähnliche Art und Weise können auch die Ziele (target-s) der jeweils am Anfang der XML-Dateien angegebenen reference - Elemente geprüft werden.