Webapplikationen mit Unterstützung von XML 
Navigation:Inhalt ->
Anhänge ->
F Metadaten
Neues und Änderungen
<< Vorheriges Kapitel

F Metadaten

F.1 Quelltexte dieser Arbeit
F.2 Verwendete Werkzeuge
F.3 Verwendete Literatur zum Erstellen der Quelltexte

F.1 Quelltexte dieser Arbeit

Hier sind alle Dokumente aufgelistet, die zur Erstellung dieser Arbeit verwendet wurden. Leider werden die XML-Dokumente von den unterschiedlichen Browser unterschiedlich interpretiert. Außerdem gibt es Probleme mit General Entities. Diese werden verwendet, um eine große XML-Datei in mehrere kleinere, übersichtlichere aufzuteilen. General Entities dürfen nur am Beginn des Dokuments definiert werden. Hier wurden sie daher in work.xml definiert, das alle anderen XML-Dokumente einbindet. Wird das General Entity allerdings in einem der eingebundenen Dokumente verwendet, ist dieses Dokument für sich genommen kein wohlgeformtes XML-Dokument, da das General Entity ja in der übergeordneten Datei definiert ist. Die Browser liefern dann meist einen Fehler.

Deshalb gibt es zu jeder Datei einen zweiten Link, der die XML-Datei als einfache, vorformatierte HTML-Datei darstellt. Link: (als Text).

XML-Schema Definitionen

Die XML-Schema Definitionen bestimmen den Aufbau des XML-Dokuments dieser Arbeit. Anhand des XML-Schemas kann leicht die Korrektheit (im XML-Jargon: Gültigkeit) überprüft werden.

XML Quelldokumente

Folgende Dateien enthalten den Inhalt der Arbeit als XML-Dokument. Zur besseren Übersicht wurde das Dokument mit Hilfe so genannter "General Entities" in mehrere Dateien aufgeteilt.

XSLT-Scripts für die Erzeugung der Webseiten

Diese Dateien enthalten XSLT-Scripts, die zur Generierung der XHTML-Seiten aus dem XML-Quelldokument dienen.

XSLT-Scripts für die Erzeugung der gedruckten Version

Diese Dateien enthalten XSLT-Scripts, die zur Generierung des XSL-FO-Dokuments (Formatting Objects) dient. Dieses Dokument kann dann mit Hilfe von XSL-FO-Prozessoren zu PDF-Dateien konvertiert oder direkt ausgedruckt werden.



F.2 Verwendete Werkzeuge

Überprüfen der Wohlgeformtheit

Zur Überprüfung der Wohlgeformtheit der XML-Dokumente wurde das Programm XML-Validator der Firma Elcel Technology eingesetzt (www.elcel.com/products/xmlvalid.html). Die meisten XML-Parser sind eher dafür ausgelegt, dass sie den Zugriff auf ein XML-Dokument für andere Programme erlauben. Weniger zum reinen Überprüfen der Wohlgeformtheit von der Kommandozeile (Shell) aus. XML Validator ist frei (als Open Source) unter Windows, Linux und Solaris verfügbar. Er unterstützt XML Version 1.0 inkl. Namensräume und ist sehr schnell. Üblicherweise werden aussagekräftige Fehlermeldungen generiert. Allerdings findet er nicht alle Fehler. Da aber auch beim Validieren anhand des Schemas und beim Transformieren mit XSLT das XML-Dokument eingelesen werden muss, wird auch hier die Wohlgeformtheit überprüft.

Überprüfen der Gültigkeit bezüglich der XML-Schemas

Schema-Validatoren und andere Schema-Werkzeuge findet man auf der Schema-Übersichtsseite des W3Cs [W3C-Schema 2002]. Zur Überprüfung der Schemas selbst empfiehlt sich der XML Schema Quality Checker von IBM (www.alphaworks.ibm.com/tech/xmlsqc). Zur Zeit ist die Version 2.1.1 verfügbar. Als XML-Parser kommt Xerxes (die Java-Version) vom Apache XML Project zum Einsatz (xml.apache.org/). Die Überprüfung ist sehr genau und liefert aussagekräftige Fehlermeldungen. Allerdings dauert sie für große Schemas eine Weile. Auf einem 800 MHz Rechner mit 384 MB Hauptspeicher werden für die beiden Schema-Dateien dieser Arbeit, die gemeinsam weniger als 500 Zeilen lang sind, ca. 19 Sekunden benötigt.

Ursprünglich wurde zum Überprüfen der Gültigkeit der XML-Dokumente dieser Arbeit der XML-Schema-Validator XSV 1.4 eingesetzt. Dieser Validator wird von der Universität Edingburgh mit Unterstützung des W3Cs in der Programmiersprache Python entwickelt. Die Version 1.4 ist allerdings noch sehr ungenau und findet viele Fehler nicht. Sie benötigt zur Überprüfung der insgesamt mehr als 14.000 Zeilen langen XML-Dokumente anhand der zusammen ca. 500 Zeilen langen Schemas ca. sechs Sekunden.

Die aktuelle Version 2.4 validiert genauer, braucht dafür aber elf bis zwölf Sekunden und kennt nach wie vor viele XML-Schema-Datentypen nicht. Ob der Aufbau des Dokuments dem Schema entspricht, wird aber sehr genau überprüft. Die aktuelle Version von XSV ist unter www.ltg.ed.ac.uk/~ht/xsv-status.html erhältlich.

Sehr interessant zum Überprüfen der XML-Dokumente ist auch der oben bereits erwähnte XML-Parser Xerxes. Die neueren Versionen unterstützen nämlich auch die Validierung gegenüber XML-Schemas. Die aktuelle Version ist 2.2.0. Es steht sowohl eine Java-Implementierung als auch eine in C++ zur Verfügung. Die C++-Implementierung ist besonders schnell. So benötigt sie für dieselbe Aufgabe, für die XSV elf Sekunden benötigt, nur eine halbe Sekunde. Datentypen kennt Xerxes ebenfalls mehr. Allerdings wurde ein schwerwiegender Fehler in der Struktur des XML-Dokuments63 von Xerxes nicht gefunden, den XSV 2.4 entdeckte. Allerdings machte auch die Fehlermeldung von XSV nur indirekt auf den Fehler aufmerksam. Xerxes ist ein Parser, der anderen Anwendungen seine Funktionen zur Verfügung stellt und keine eigenständige Anwendung. Er kann daher nicht direkt aufgerufen werden. Allerdings sind im Paket Beispielanwendungen enthalten, die bei deren Ausführung die XML-Dokumente parsen und dabei die Gültigkeit bezüglich der angegebenen XML-Schemas überprüfen. Mehr Informationen zu Xerxes und Downloadmöglichkeiten findet man unter xml.apache.org/xerces-c/index.html.

Als dritten XML-Schema-Validator hat der Autor den Validator aus dem Paket "Microsoft XML Core Services 4.0 SP1", das früher MSXML hieß, getestet. Informationen dazu stehen unter msdn.microsoft.com/xml/ zur Verfügung. Auch der in diesem Paket enthaltene Parser lässt sich nicht direkt aufrufen, aber auf der oben erwähnten XML-Schema-Seite des W3Cs finden sich zwei Werkzeuge, mit Hilfe derer man diesen Parser inkl. Schema-Validation nutzen kann: Ein einfaches Script, das in der Kommandozeile von Windows ausgeführt wird, kann unter www.schemavalid.com/utils/msxsd.zip heruntergeladen werden. Die Firma Topologi bietet sogar ein kostenloses Programm mit grafischer Benutzeroberfläche, das ebenfalls den Parser von Microsoft benutzt und die Schema-Validierung unterstützt.

Der Microsoft-Parser scheint sehr schnell zu sein und hat auch den oben erwähnten Fehler gefunden. Er lieferte sogar eine aussagekräftigere Fehlermeldung als der XSV-Validator. Allerdings hat er zwei Probleme: Erstens wird jeweils nur ein Fehler zurückgeliefert. Die oben angeführten Produkte versuchen bei einem Fehler weiterzuarbeiten und liefern somit alle oder zumindest mehrere Fehler auf einmal. Das ist beim Korrigieren natürlich hilfreich. Zweitens validiert er ein XML-Dokument entweder nur bezüglich einer DTD oder nur bezüglich eines XML-Schemas. Das Problem dabei ist, dass es für normale XML-Datendateien noch keine vernünftige Methode gibt, externe Dateien einzubinden.64 XInclude www.w3.org/TR/xinclude/ soll hier Abhilfe schaffen. Allerdings ist dieser Standard erst Anwärter für eine W3C-Empfehlung ("Candidate Recommendation"). Da es aber anzuraten ist, große XML-Dokumente auf mehrere Dateien aufzuteilen, bleibt zur Zeit nichts anderes übrig als so genannte "General Entities" (auch: "External Entities") zu verwenden. Diese könen aber nur innerhalb einer DTD (im Kopf des XML-Dokuments oder als externe Datei) definiert werden. Das heißt: Man kann entweder General Entities verwenden oder eine Schema-Validierung durchführen, aber nicht beides. Ein Microsoft-Mitarbeiter empfiehlt in einer Newsgroup auf die Verwendung von General Entities zu verzichten. In Ermangelung einer Alternative ist das aber oft nicht praktikabel.

Wie man sieht, sind die Schema-Validatoren nocht nicht ganz ausgereift. Es empfiehlt sich daher, mehrere Produkte parallel einzusetzen.

Transformation der XML-Dokumente mit XSLT-Scripts

Zum Transformieren der XML-Dateien nach XHTML für das Web und in XSL-FO für die gedruckte Version wurde der XSLT-Prozessor Saxon von Michael Kay verwendet. Saxon ist in Java geschrieben und steht momentan in der Version 6.5.2 zur Verfügung. Aber auch die älteren Versionen konnten schon problemlos eingesetzt werden. Saxon 6.5.2 unterstützt die XSLT 1.0-Empfehlung des W3C und einige Erweiterungen, die auch im W3C-Entwurf ("Working Draft") XSLT 1.1 enthalten sind. Die Arbeiten am XSLT 1.1 Entwurf wurden aber eingestellt. Das W3C konzentriert sich auf XSLT 2.0 und XPath 2.0. Diese stehen jeweils als Entwurf zur Verfügung. Mehr Information zur aktuellen Entwicklung der XSL-Standards findet man unter [W3C-XSL 2002]. Die nachfolgenden Versionen von Saxon (7.x) implementieren bereits XSLT 2.0 und XPath 2.0.

Zum Transformieren der über 14.000 Zeilen langen XML-Quelldokumente in 38 XHTML-Dokumente mit den insgesamt über 1.800 Zeilen langen XSLT-Scripts (sechs verschiedene) benötigt Saxon ca. 20 Sekunden. Zum Erstellen der XSL-FO-Dokumente mit einem knapp 1.200 Zeilen langem XSLT-Script benötigt er viereinhalb Sekunden.

Transformieren des XSL-FO-Dokuments in druckbare Form

Ursprünglich wurde zum Transformieren des XSL-FO-Dokuments in PDF-Dokument der Formatting Objects Prozessors FOP des Apache XML Projects verwendet (xml.apache.org/fop/index.html). Nach und nach hat sich aber gezeigt, dass die Ergebnisse des FOPs nicht zufriedenstellend sind. So können beispielsweise Überschriften nicht mit den nachfolgenden Absätzen zusammengehalten werden. Einzelne Zeilen am Seitenanfang und -ende (Schusterjungen, Hurenkinder) lassen sich ebenfalls nicht verhindern. Probleme gibt es beim Zentrieren der Grafiken und Tabellen inkl. deren Kurzbeschreibungen. Auch bei der Formatierung der Beispiele im Dokument (insbesondere erzwungene Zeilenumbrüche und Leerzeichen) lassen sich nur durch Improvisation erzeugen. Die dafür vorgesehenen XSL-FO-Attribute funktionieren nicht.

Die aktuelle Version des FOP ist 0.2.5rc2. An diesem Projektzweig wird allerdings nicht mehr weitergearbeitet. Es werden nur noch Fehler korrigiert. Die Neuentwicklung konzentriert sich auf die Version 1.0. Wie meist bei Open-Source Produkten kann man aber den Zeitpunkt der Fertigstellung kaum abschätzen.

Der Autor wurde später auf ein kommerzielles Produkt aufmerksam. Die japanische Firma Antenna House Inc. (www.antennahouse.com/) bietet eine Evaluierungsversion ihres (normalerweise sehr teuren) XSL Formatters V2.4 an. Diese Evaluierungsversion darf nicht für kommerzielle Zwecke verwendet werden. Die einzige funktionale Einschränkung dieser Version ist jedoch, dass auf den erzeugten PDF-Dokumenten in der linken unteren Ecke die Webadresse der Firma steht. Das Produkt bietet allerdings eine grafische Benutzeroberfläche, in der das erzeugte Dokument angezeigt und direkt ausgedruckt werden kann. Dieser Ausdruck enthält die Webadresse nicht. Es muss zum Audrucken also kein PDF-Dokument erstellt werden. Optional ist dies allerdings möglich.

Zum Formatieren der Arbeit, die insgesamt 180 A4-Seiten lang ist, benötigt der XSL Formatter etwas über 28 Sekunden, wobei da die viereinhalb Sekunden des Saxon XSLT-Prozessors enthalten sind. Formattierungsprobleme traten beim Zentrieren der Tabellen und Abbildungen und deren Beschreibungen auf. Außerdem gibt es Fehler bei Innen- und Außenabständen (padding, margin). Durch Improvisation ließ sich das gewünschte Ergebnis trotzdem realisieren.

Das Erzeugen von XSL-FO-Dokumenten erinnert leider noch etwas an die Zeiten, als die Browser die HTML- und CSS-Standards nicht ausreichend unterstützten. Es muss also immer wieder probiert und getestet werden, wie der eine oder andere XSL-FO-Prozessor reagiert. Ein Beispiel, das zeigt, dass es nicht so einfach möglich ist, ein XSL-FO-Dokument für FOP und XSL-Formatter zu erzeugen: Letzterer unterstützt (vermutlich wegen der Lizenzprobleme) keine GIF-Grafiken. Die Alternative zu GIF ist PNG. PNG-Grafiken werden allerdings vom FOP nicht korrekt dargestellt.

Verwendete Entwicklungsumgebung

Prinzipiell würde zum Entwickeln dieser Arbeit ein einfacher Text-Editor genügen. Der Autor ist allerdings auf eine für Studenten äußerst günstige Entwicklungsumgebung gestoßen, die insbesondere das Debuggen von PHP und XSLT unterstützt. Diese Entwicklungsumgebung ist Komodo 2.3 der Firma Active State (www.activestate.com/). Die aktuelle Version ist im Vergleich zu früheren sehr stabil, wenn auch hin und wieder etwas langsam. Es bietet natürlich "Syntax-Highlighting" und auch "Code-Completion". Das heißt, es erkennt die verwendeten XML-Elemente und es genügt dann später, nur mehr die ersten Buchstaben eines Elements einzugeben. Der Autor hat zwar das Debuggen der XSLT-Scripts selten verwendet aber insbesondere am Anfang war es sehr hilfreich, um die Funktionsweise von XSLT und XPath besser verstehen zu lernen. Andere Editoren bieten allerdings oft mehr und bessere Funktionen zum Editieren von Texten.



F.3 Verwendete Literatur zum Erstellen der Quelltexte

XML Grundlagen

Zum Erlernen der XML-Grundlagen haben hauptsächlich die Bücher [Anderson et al. 2000] und [Goldfarb 2000] gedient. Zusätzlich diverse Artikel in Zeitschriften und im Web.

XML-Schema

Für eine Einführung in XML-Schemas, die durchaus auch ins Detail geht, eignet sich das Tutorial von Roger L. Costello [Costello 2002], das laufend aktualisiert wird. Bei Entwurfsfragen helfen die Dokumente, die unter XML-Schemas: Best Practices [Costello et al. 2002] zu finden sind. Bei Detailfragen kann natürlich auf die W3C-Empfehlungen unter [W3C-Schema 2002] zurückgegriffen werden.

XSLT und XPath

Die Grundlagen zum Thema XSLT hat der Autor im bereits oben genannten Buch [Anderson et al. 2000] und in Zeitschriftenartikeln gelernt. Für aufwändige XSLT-Scritps sind aber das Buch von Michael Kay [Kay 2001] und die XSL FAQs auf der Webseite von Dave Pawson [Pawson 2002] fast unabdingbar.

XSL-FO

Zum Erlernen von XSL-FO hat zuerst ein kleines Beispiel-Dokument eines Freundes gedient. Eine schöne Übersicht über die wichtigsten - aber nicht alle - Elemente und Eigenschaften von XSL-FO ist unter www.renderx.com/Tests/doc/html/tutorial.html zu finden. Erst relativ spät ist der Autor auf ein Dokument der Firma Antenna House Inc. gestoßen, das die Erstellung eines XSL-FO-Dokuments für (technische) Textdokumente - ähnlich dieser Arbeit - beschreibt (www.antennahouse.com/XSLsample/XSLsample.htm). Was in diesen Dokumenten nicht beschrieben wird, muss direkt in der W3C-Empfehlung unter www.w3.org/TR/xsl/ nachgeschlagen werden. Die W3C-Empfehlungen müssen aber einen Standard genaustens definieren. Daher ist es oft zeitaufwändig die benötigte Information aus diesen Empfehlungen herauszulesen.

Internetrecherche bei Detailfragen

Bei Detailfragen hat sich eine Suche im Web (oft in Mailinglisten, die im Web veröffentlicht sind) oder im Usenet65 meist als sehr hilfreich herausgestellt.



63Das XML-Dokument wäre richtig gewesen, allerdings war das Schema für das XML-Dokument falsch definiert.

64Andere XML-Standards - wie XML-Schemas oder XSLT - enthalten eigene Mechanismen zur Einbindung externer Dateien.

65Zu finden in den Google Groups unter www.google.com/grphp.

Zum Seitenanfang diplomarbeit_o a-t schmiderer d-o-t cc2003-04-25