Extensible Markup Language (PDF) - IT-Dienstleistungszentrum Berlin

Extensible Markup Language (PDF) - IT-Dienstleistungszentrum Berlin Extensible Markup Language (PDF) - IT-Dienstleistungszentrum Berlin

09.03.2014 Aufrufe

ç anhand der Werte ihrer Attribute oder anderer Merkmale beschreiben (zB alle Elemente vom Typ Rechnungsposten mit dem Attribut Art=Sonderangebot, die ein Kindelement Anmerkung besitzen) XSL Transformations (XSLT) XSLT ist eine Sprache zur Beschreibung von Transformationen von XML-Dokumenten in andere XML-Dokumente XSLT ist selbst mit Hilfe von XML definiert, was für viele Sprachen im XML-Umfeld zutrifft und ein Beweis der Universalität von XML ist XSLT war ursprünglich Teil der XSL-Spezifikation (su), wurde aber ausgegliedert, da die Transformation von XML-Dokumenten nicht nur für die Formatierung zum Zwecke der Präsentation nützlich ist In XSLT geschriebene Dokumente heißen XSLT-Stylesheets Um ein XSLT-Stylesheet anzuwenden, ist eine Software namens XSLT-Transformer oder -Processor nötig Diese liest ein XML-Dokument ein, wendet die Regeln aus dem Stylesheet darauf an und erzeugt ein neues XML-Dokument (Abbildung 3) Die Regeln in XSLT bestehen aus drei Teilen: definiert wird zum einen auf welche Knoten die betreffende Regel zutrifft, zum anderen welche Daten aus dem Quellbaum gelesen werden und zuletzt wohin diese Daten im Zielbaum geschrieben werden Für die Definition der ersten beiden Teile wird XPath eingesetzt So lassen sich komplexe Transformationen durchführen, die auch die Filterung von Daten und das Ändern der Struktur gegenüber dem Quellbaum beinhalten Extensible Stylesheet Language (XSL) XSL ist eine – ebenfalls mit Hilfe von XML definierte – Sprache zur Beschrei- XML- Quell- Dokument XSLT- Processor (Transformer) XSLT-Stylesheet Abbildung 3: XML-Transformation mit XSLT 2 XML- Ziel- Dokument bung des Layouts eines Dokuments Im Unterschied zu typischen Seitenbeschreibungssprachen wie PostScript oder PDF, welche die graphischen Elemente einer Seite (Buchstaben, Graphiken etc) auf absolute Koordinaten setzen, arbeitet XSL mit einem logischen Layout Es werden in XSL lediglich Textund Graphik-Objekte sowie die Beziehungen dieser Objekte untereinander und das Seitenformat definiert Die Berechnung der konkreten Koordinaten wird dem sog XSL-Processor oder Formatting Objects Processor überlassen Dieser versucht unter Ausnutzung der Vorgaben den verfügbaren Platz bestmöglich auszunutzen Ein logisches Layout lässt sich auch mit HTML definieren, allerdings nur sehr eingeschränkt Demgegenüber bietet XSL zahlreiche Vorteile, vor allem eine saubere Paginierung XML-Schema XML-Schema ist ein Ersatz für die von SGML übernommene Dokumenttypefinition (DTD) zur Definition der Grammatik eines Dokumenttyps und hat gegenüber dieser mehrere wesentliche Vorteile: es ist eine XML-basierte Sprache zur Beschreibung der Dokumentstruktur Die Definitionen der Datentypen und die Struktur können voneinander getrennt werden, die Vererbung wird unterstützt, es lassen sich sowohl für Elemente als auch für Attribute genaue Angaben über den erlaubten Wertebereich machen (bis hin zu regulären Ausdrücken) uvam Ein Nachteil muss jedoch erwähnt werden: ein XML-Schema ist meistens um eine Größenordnung länger als eine vergleichbare DTD, daher wird hier auf ein Beispiel verzichtet Extensible HyperText Markup Language (XHTML) XHTML 10 ist eine Neudefinition von HTML 40 in XML Es wurde bereits erwähnt, dass HTML in SGML definiert ist XML legt einige zusätzliche Restriktionen auf, so dass eine Neudefinition notwenig wurde Zugleich erhält HTML 1/02 2 10 dadurch die ersehnte Erweiterbarkeit von XML Eine Umwandlung von HTML nach XHTML ist immer verlustfrei möglich Von XHTML nach HTML nur dann, wenn keine Erweiterungen verwendet wurden XML und Java XML wäre nicht von Nutzen, wenn Software nicht in der Lage wäre XML zu lesen, zu schreiben und zu manipulieren Prinzipiell ist es möglich, XML aus jeder Programmiersprache heraus zu nutzen, so auch aus Java Diese Vorgänge sind komplex, vor allem erfordert das Lesen und das Auswerten von XML- Dokumenten, dass die Software deren Struktur versteht Ohne Erkennung der Baumstruktur ist ein XML-Dokument für eine Anwendung nur eine Folge von Zeichen Es wäre ein nicht vertretbarer Aufwand, die Logik zum Erkennen der Baumstruktur in jeder Anwendung neu zu implementieren Diese Logik lässt sich jedoch in eine separate Software- Bibliothek auslagern, da sie nicht von der in der Anwendung verwendeten Dokumentenart, sondern nur von der allgemeinen XML-Struktur abhängig ist DOM Anwendung XML-Bibliothek SAX Abbildung 4: Einsatz einer XML- Bibliothek in einer Anwendung Für Anwendungen wurden drei Schnittstellen zu solchen Bibliotheken definiert, SAX, DOM und JDOM (Abbildung 4), auf die hier nicht näher eingegangen wird Die bekannteste Bibliothek für Java, die einen XML-Parser implementiert und über SAX und DOM mit der Anwendung kommuniziert, ist Xerces von der Apache Software Foundation (ASF) ASF ist eine der größten Vereinigungen zur Förderung der Open Source Software und beherbergt viele Projekte aus dem Internet- und è

ç XML-Umfeld Weitere erwähnenswerte Bibliotheken sind Xalan (ein XSLT-Processor) und FOP (ein XSL- Formatter), beide von ASF FOP kann aus der gleichen XSL-Eingabe wahlweise PDF, PostScript, PCL, MIF, RTF oder formatierten Text erzeugen Web-Anwendungen Web-Anwendungen sind Anwendungen im Internet oder Intranet, die einen Internet-Browser für die Darstellung der Benutzerschnittstelle verwenden Die Anwendung selbst läuft dabei auf dem Web-Server Die Aufgabe eines Web- Servers war ursprünglich nur die Bereitstellung der statischen HTML-Seiten Schon früh wurde die Möglichkeit einer Benutzerinteraktion benötigt Der Benutzer konnte im Internet-Browser ein Formular ausfüllen und abschicken Auf der Server-Seite wurde das Common Gateway Interface (CGI) geschaffen, um die vom Benutzer abgeschickten Daten durch externe Programme (CGI- Skripte) auswerten zu können Nach und nach kamen andere Lösungen hinzu, die Seiten wurden zunehmend dynamisch und konnten schließlich als Benutzerschnittstellen für komplexe Anwendungen eingesetzt werden Eine der bekanntesten und leistungsfähigsten neuen Lösungen sind die Java Servlets und die davon abgeleiteten Java Server Pages (JSP) Servlets sind in Java geschriebene Erweiterungen der Web- Server-Funktionalität, die in der virtuellen Java-Maschine (JVM) des Web-Servers ablaufen Die meisten Web-Server haben die Fähigkeit, Servlets zu nutzen oder lassen sich einfach in dieser Hinsicht erweitern, zB durch die Integration von Tomcat von ASF DB Servlet JVM Web-Server Formulardaten Name: Hinz Vorname: Kunz ... HTML-Seite (Ergebnis) Abbildung 5: Java Servlets Browser Servlets werten die Eingaben des Benutzers aus, leiten die Verarbeitung eventuell an andere Programme, wie zB Datenbanken, weiter und generieren dann eine neue HTML-Seite, die dem Benutzer angezeigt wird (Abbildung 5) Das Generieren von HTML-Seiten mit Hilfe von Java ist jedoch nicht effektiv, da in Java HTML wie normale Zeichenketten behandelt werden und die Ausgabe mit Hilfe von normalen Eingabe-/Ausgabe-Methoden erfolgt Das ist vor allem für die Pflege des statischen Teils der Seiten keine gute Lösung JSP-Seiten sind eine Weiterentwicklung von Servlets Sie enthalten den statischen Teil der Seiten als HTML im Klartext, während der dynamische Teil mit Hilfe von Java erzeugt wird Web-Anwendungen bestehen in der Regel aus mehreren Servlets und JSP-Seiten Apache Cocoon Zunächst soll unabhängig von Cocoon die Frage beantwortet werden, was es bedeutet und was benötigt wird, um Web-Anwendungen auf XML-Basis zu schreiben Das Wichtigste ist, dass die Information in einer solchen Anwendung in Form von XML-Daten vorliegt Neben den statischen Daten werden auch dynamische Daten, die aus Datenbanken und anderen Informationssystemen stammen können, temporär in XML zusammengestellt, um dann genauso wie die statischen Daten weiterverarbeitet zu werden Hier kommt der große Vorteil von XML zum Tragen, dass sie sich gleichermaßen zum Darstellen von Textdokumenten wie auch reinen Daten eignet Um die Information dem Benutzer zu präsentieren, ist es nötig, diese in eine Form umzuwandeln, die ein Internet Browser versteht – und das ist HTML Dafür werden die Daten aus dem XML- Dokument und die Formatierungsinformationen aus dem XSLT-Stylesheet mit Hilfe eines XSLT-Processors zusammengefügt Das Stylesheet muss entsprechende Regeln enthalten, damit dabei XHTML (und dann HTML, su) entsteht Neuere Browser verstehen auch direkt XML und besitzen einen eingebauten XSLT-Processor (IE ab 55, Netscape ab 60) In diesem Fall wird das XSLT-Stylesheet dem Browser direkt zur Verfügung gestellt (Abbildung 6) Der Nachteil dieser Lösung ist, dass sie zum einen nur die neueren Browser beherrschen, zum anderen, dass die Implementierungen in einigen Browsern nicht standardkonform sind XML- Dokument Web-Server XSLT-Stylesheet Browser XSLT- Processor (Transformer) Abbildung 6: Umwandlung von XML zu HTML zum Zwecke der Präsentation (auf dem Client) Für ältere Browser muss die Umwandlung von XML nach HTML auf dem Server erfolgen (Abbildung 7) XML- Dokument Web-Server Servlet XSLT- Processor (Transformer) XSLT-Stylesheet Abbildung 7: Umwandlung von XML zu HTML zum Zwecke der Präsentation (auf dem Server) Diese Lösung ist universell, sie erscheint praktisch und einfach realisierbar Der XSLT-Processor läuft innerhalb eines Servlets, das die Aufgabe hat, anhand der Benutzeranforderung die richtigen Daten auszuwählen und sie dem XSLT- Processor zuzuführen sowie das Resultat anschließend an den Browser weiterzuleiten Es wurde bereits festgestellt, dass XSLT nur eine Umwandlung von einem XML-Dokumenttyp in einen anderen mit Hilfe von Regeln erlaubt HTML ist kein XML, so dass im ersten Schritt zunächst XHTML erzeugt wird, das anschließend 1:1 in HTML umgewandelt wird Obwohl dieser zusätzliche Schritt trivial ist, erhöht sich dadurch etwas die Komplexität der Lösung è 1/02 2 11 7 HTML- Dokument Browser

ç anhand der Werte ihrer Attribute<br />

oder anderer Merkmale beschreiben (zB<br />

alle Elemente vom Typ Rechnungsposten<br />

mit dem Attribut Art=Sonderangebot, die<br />

ein Kindelement Anmerkung besitzen)<br />

XSL Transformations (XSLT)<br />

XSLT ist eine Sprache zur Beschreibung<br />

von Transformationen von XML-Dokumenten<br />

in andere XML-Dokumente<br />

XSLT ist selbst mit Hilfe von XML<br />

definiert, was für viele Sprachen im<br />

XML-Umfeld zutrifft und ein Beweis<br />

der Universalität von XML ist XSLT<br />

war ursprünglich Teil der XSL-Spezifikation<br />

(su), wurde aber ausgegliedert,<br />

da die Transformation von XML-Dokumenten<br />

nicht nur für die Formatierung<br />

zum Zwecke der Präsentation nützlich<br />

ist In XSLT geschriebene Dokumente<br />

heißen XSLT-Stylesheets Um<br />

ein XSLT-Stylesheet anzuwenden, ist<br />

eine Software namens XSLT-Transformer<br />

oder -Processor nötig Diese liest<br />

ein XML-Dokument ein, wendet die<br />

Regeln aus dem Stylesheet darauf an<br />

und erzeugt ein neues XML-Dokument<br />

(Abbildung 3) Die Regeln in XSLT bestehen<br />

aus drei Teilen: definiert wird<br />

zum einen auf welche Knoten die betreffende<br />

Regel zutrifft, zum anderen<br />

welche Daten aus dem Quellbaum gelesen<br />

werden und zuletzt wohin diese<br />

Daten im Zielbaum geschrieben werden<br />

Für die Definition der ersten beiden<br />

Teile wird XPath eingesetzt So lassen<br />

sich komplexe Transformationen durchführen,<br />

die auch die Filterung von Daten<br />

und das Ändern der Struktur gegenüber<br />

dem Quellbaum beinhalten<br />

<br />

<br />

<br />

<br />

<strong>Extensible</strong> Stylesheet <strong>Language</strong> (XSL)<br />

XSL ist eine – ebenfalls mit Hilfe von<br />

XML definierte – Sprache zur Beschrei-<br />

XML-<br />

Quell-<br />

Dokument<br />

XSLT-<br />

Processor<br />

(Transformer)<br />

<br />

<br />

<br />

<br />

<br />

XSLT-Stylesheet<br />

Abbildung 3: XML-Transformation mit<br />

XSLT<br />

2<br />

<br />

<br />

<br />

<br />

XML-<br />

Ziel-<br />

Dokument<br />

bung des Layouts eines Dokuments Im<br />

Unterschied zu typischen Seitenbeschreibungssprachen<br />

wie PostScript<br />

oder <strong>PDF</strong>, welche die graphischen Elemente<br />

einer Seite (Buchstaben, Graphiken<br />

etc) auf absolute Koordinaten setzen,<br />

arbeitet XSL mit einem logischen<br />

Layout Es werden in XSL lediglich Textund<br />

Graphik-Objekte sowie die Beziehungen<br />

dieser Objekte untereinander<br />

und das Seitenformat definiert Die Berechnung<br />

der konkreten Koordinaten<br />

wird dem sog XSL-Processor oder<br />

Formatting Objects Processor überlassen<br />

Dieser versucht unter Ausnutzung<br />

der Vorgaben den verfügbaren Platz<br />

bestmöglich auszunutzen Ein logisches<br />

Layout lässt sich auch mit HTML definieren,<br />

allerdings nur sehr eingeschränkt<br />

Demgegenüber bietet XSL zahlreiche<br />

Vorteile, vor allem eine saubere<br />

Paginierung<br />

XML-Schema<br />

XML-Schema ist ein Ersatz für die von<br />

SGML übernommene Dokumenttypefinition<br />

(DTD) zur Definition der Grammatik<br />

eines Dokumenttyps und hat gegenüber<br />

dieser mehrere wesentliche Vorteile:<br />

es ist eine XML-basierte Sprache<br />

zur Beschreibung der Dokumentstruktur<br />

Die Definitionen der Datentypen<br />

und die Struktur können<br />

voneinander getrennt werden, die Vererbung<br />

wird unterstützt, es lassen sich<br />

sowohl für Elemente als auch für Attribute<br />

genaue Angaben über den erlaubten<br />

Wertebereich machen (bis hin zu<br />

regulären Ausdrücken) uvam Ein<br />

Nachteil muss jedoch erwähnt werden:<br />

ein XML-Schema ist meistens um eine<br />

Größenordnung länger als eine vergleichbare<br />

DTD, daher wird hier auf ein<br />

Beispiel verzichtet<br />

<strong>Extensible</strong> HyperText <strong>Markup</strong><br />

<strong>Language</strong> (XHTML)<br />

XHTML 10 ist eine Neudefinition von<br />

HTML 40 in XML Es wurde bereits<br />

erwähnt, dass HTML in SGML definiert<br />

ist XML legt einige zusätzliche Restriktionen<br />

auf, so dass eine Neudefinition<br />

notwenig wurde Zugleich erhält HTML<br />

1/02 2 10<br />

dadurch die ersehnte Erweiterbarkeit<br />

von XML Eine Umwandlung von<br />

HTML nach XHTML ist immer verlustfrei<br />

möglich Von XHTML nach HTML<br />

nur dann, wenn keine Erweiterungen<br />

verwendet wurden<br />

XML und Java<br />

XML wäre nicht von Nutzen, wenn Software<br />

nicht in der Lage wäre XML zu<br />

lesen, zu schreiben und zu manipulieren<br />

Prinzipiell ist es möglich, XML aus<br />

jeder Programmiersprache heraus zu<br />

nutzen, so auch aus Java Diese Vorgänge<br />

sind komplex, vor allem erfordert das<br />

Lesen und das Auswerten von XML-<br />

Dokumenten, dass die Software deren<br />

Struktur versteht Ohne Erkennung der<br />

Baumstruktur ist ein XML-Dokument<br />

für eine Anwendung nur eine Folge von<br />

Zeichen Es wäre ein nicht vertretbarer<br />

Aufwand, die Logik zum Erkennen der<br />

Baumstruktur in jeder Anwendung neu<br />

zu implementieren Diese Logik lässt<br />

sich jedoch in eine separate Software-<br />

Bibliothek auslagern, da sie nicht von<br />

der in der Anwendung verwendeten<br />

Dokumentenart, sondern nur von der<br />

allgemeinen XML-Struktur abhängig ist<br />

DOM<br />

<br />

<br />

<br />

Anwendung<br />

XML-Bibliothek<br />

SAX<br />

Abbildung 4: Einsatz einer XML-<br />

Bibliothek in einer Anwendung<br />

Für Anwendungen wurden drei Schnittstellen<br />

zu solchen Bibliotheken definiert,<br />

SAX, DOM und JDOM (Abbildung 4),<br />

auf die hier nicht näher eingegangen<br />

wird Die bekannteste Bibliothek für<br />

Java, die einen XML-Parser implementiert<br />

und über SAX und DOM mit der<br />

Anwendung kommuniziert, ist Xerces<br />

von der Apache Software Foundation<br />

(ASF) ASF ist eine der größten Vereinigungen<br />

zur Förderung der Open Source<br />

Software und beherbergt viele Projekte<br />

aus dem Internet- und<br />

è

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!