XMLidP2000

Sitemap

Sitemap

1 Einführung
1.1 Warum mehr weniger ist
1.2 Warum mehr mehr ist
1.3 Wohin die Reise geht
2 Was sind Dokumente?
2.1 Eine kurze Geschichte der Textverarbeitung
2.2 Bestandteile eines Dokumentes
2.3 Die neue, alte Idee: Strukturorientiert schreiben
2.4 Die Entwicklung des Hypertextes
2.5 Textformate im Web
2.6 Das SGML-Konzept: Generic Markup
2.7 Dokumente versus Daten
3 XML im Web
3.1 XML bei der Verwaltung von Websites
3.2 Clientseitige XML-Interpretation
3.2.1 XML mit CSS
3.2.2 XML mit XSL(T)
3.3 XML auf dem Server
3.4 Linking-Möglichkeiten von XML
3.5 XML als Datenaustauschformat
4 XML Quick Start
4.1 Dokumenttyp-Definition (DTD) und Instanzen
4.2 Verarbeitung der Dokumente
4.2.1 Beispiel: Verarbeitung mit Cost/TCL
4.2.2 Beispiel: Verarbeitung mit XSLT
4.2.3 Beispiel: XML/XSLT im Internet Explorer
4.2.4 Fazit
5 XML-DTDs: Die verständliche Beschreibung
5.1 Ein Wort zur Notation
5.2 Dokumente
5.3 Elemente
5.4 Zeichen, Namen und Zeichendaten
5.5 Kommentare
5.6 Processing Instructions
5.7 Wo bleibt Multimedia?
5.8 Dokumenttyp-Definition (DTD)
5.8.1 Elementtyp-Deklaration
5.8.2 Attributlisten-Deklaration
5.8.3 Möglichkeiten, die DTD zu gestalten und zu gliedern
5.8.4 Notation-Deklaration
6 Namensräume in XML
7 XPath: Adressierung von XML-Dokumentteilen
7.1 Zu Grunde liegendes Datenmodell
7.2 Zugriff auf den Datenbaum
7.3 Hilfe von Operatoren
7.4 Kernfunktionen für den Datenzugriff
8 XML: Linking
8.1 Notwendige Begriffe
8.2 XLink: einfache und erweiterte Links
8.2.1 Einfache Verweise
8.2.2 Erweiterte Links
8.2.3 XLink in der Praxis
8.3 XPointer: Verweise in Dokumente hinein
8.3.1 XPath-Erweiterungen in XPointer
9 Überblick über Stylesheet-Sprachen
9.1 Cascading Style Sheets
9.1.1 Wertzuweisungen
9.1.2 Formatierungsmodell
9.1.3 CSS und XML
9.1.4 Ein Beispiel: XML im Mozilla
9.2 Document Style Semantics and Specification Language
9.2.1 Flow Objects
9.2.2 Verarbeitungs-Modus
9.2.3 DSSSL praktisch
9.2.4 Langer Marsch von DSSSL nach HTML
9.3 Extensible Stylesheet Language (XSLT und XSL)
9.3.1 Verhältnis von XSLT zu XSL
9.3.2 Formatierung mit XSL
10 XSL-Transformationen
10.1 Grundsätzliches über Templates
10.2 Ergänzungen zum Datenmodell von XPath
10.3 Struktur von XSLT-Stylesheets
10.4 Den Ergebnisbaum erzeugen
10.4.1 Diverse Basiselemente
10.4.2 Formatierte Nummerierung
10.4.3 Schleifen und bedingte Verarbeitung
10.4.4 Sortieren
10.4.5 Variable und Parameter
10.4.6 Zusätzliche Funktionen
10.4.7 XSLT-Erweiterungen
10.4.8 message, output
11 XSLT in Web-Anwendungen
11.1 XSLT im Internet Explorer
11.2 Linklisten erzeugen
11.3 Details einer Literaturgeschichte
11.3.1 Sortierte Überblicksseiten
11.3.2 Kalender: einzelne Tage ausgeben
12 XML-Editoren
12.1 Übersicht
12.1.1 Emacs + PSGML (mit XML-Unterstützung)
12.1.2 XML Notepad
12.1.3 XML Spy
12.1.4 XMetal
12.1.5 Epic
12.1.6 MarkupKit (für MS Word)
12.1.7 WordPerfect Office2000
12.2 Emacs und PSGML (mit XML-Unterstützung)
12.3 XML-Notepad
12.4 XML Spy
12.5 XMetal
12.6 Epic
12.7 MarkupKit (für MS Word)
12.8 WordPerfect Office2000
12.9 Fazit
13 Entwicklung einer DTD
13.1 Auswahl einer Mehrzweck-DTD
13.2 Entwurf einer DTD
13.2.1 Dokumentanalyse
13.2.2 Tipps und Tricks
13.3 Instanzen ohne DTD
14 Herstellung dieses Buches
14.1 Zielsetzung und Randbedingungen
14.2 Definition der DTD
14.2.1 Schritt 1: Die Grobstruktur
14.2.2 Schritt 2: Elemente auf Zeichenebene
14.2.3 Schritt 3: Die Details
14.3 Formatieren des Manuskriptes
14.3.1 Konvertierung in HTML
14.3.2 Aufbereitung für den Ausdruck
14.4 Erfahrungen mit der zweiten Auflage
15 Anwendungsbeispiel Literatur
15.1 Vorüberlegungen
15.2 En détail: die Autoren in der DTD
15.3 Wie die Daten ins Web gelangen
15.3.1 Inhaltsverzeichnis generieren
15.3.2 Ausgabe der Autorendaten
15.4 Vollständige Listings
15.4.1 DTD für die Literaturgeschichte
15.4.2 DSSSL-Listing: Inhaltsverzeichnis
15.4.3 DSSSL-Listing: Ausgabe eines einzelnen Autors
15.4.4 Perl-Code für Ausgabe einzelner Autoren
16 Verteilte Softwareverwaltung mit XML
16.1 Aufgabenbeschreibung
16.2 XML als Datenbasis
16.3 Bilden von DTD-Hierarchien
16.4 Zusammentragen von verteilten XML-Fragmenten
16.5 Fazit
16.6 Stylesheet zur Transformation in HTML
17 E-Commerce mit XML
17.1 B2B-E-Commerce
17.1.1 Die Rolle von XML
17.1.2 Technische Aspekte
17.2 BMEcat
17.3 Electronic Business XML (ebXML)
17.3.1 Arbeitsgruppen
17.3.2 Zeitplan des Projekts
17.4 XML und EDIFACT
18 XML und Apache
18.1 XML-Transformation per CGI
18.1.1 Konfiguration des Servers
18.1.2 CGI-Skript: xmlhandler.cgi
18.1.3 Beispiel: von HTML nach HTML mit DSSSL oder XSLT
18.2 Cocoon
18.2.1 Extensible Server Pages (XSP)
18.2.2 Beispiel: Formatierung in PDF mit XSL
18.2.3 Beispiel: Simuliertes XLink mit Dynamic HTML/JavaScript
18.2.4 Installation
19 XHTML: Neues HTML 4 — erweiterbar
19.1 Status quo: HTML neu definiert
19.2 Modulare Zukunft
20 Transformation von XML in WML und HTML
20.1 Erzeugen der WML-Dateien
20.2 Erzeugen der HTML-Dateien
21 Ausblick
21.1 XML Schema
21.2 Programmierung mit XML-Daten
21.3 XML und Java
21.4 Resource Description Framework
21.5 Die Zukunft
A Extensible Markup Language (XML) 1.0
A.1 Einleitung
A.1.1 Herkunft und Ziele
A.1.2 Terminologie
A.2 Dokumente
A.2.1 Wohlgeformte XML-Dokumente
A.2.2 Zeichen
A.2.3 Allgemeine syntaktische Konstrukte
A.2.4 Zeichendaten und Markup
A.2.5 Kommentare
A.2.6 Processing Instructions
A.2.7 CDATA-Abschnitte
A.2.8 Prolog und Dokumenttyp-Deklaration
A.2.9 Standalone-Dokumentdeklaration
A.2.10 Behandlung von Leerraum
A.2.11 Behandlung des Zeilenendes
A.2.12 Identifikation der Sprache
A.3 Logische Strukturen
A.3.1 Start-Tags, End-Tags und Leeres-Element-Tags
A.3.2 Elementtyp-Deklarationen
A.3.3 Attributlisten-Deklaration
A.3.4 Bedingte Abschnitte
A.4 Physikalische Strukturen
A.4.1 Zeichen- und Entity-Referenzen
A.4.2 Entity-Deklarationen
A.4.3 Analysierte Entities
A.4.4 Behandlung von Entities und Referenzen durch einen XML-Prozessor
A.4.5 Konstruktion des Ersetzungstextes von internen Entities
A.4.6 Vordefinierte Entities
A.4.7 Notation-Deklarationen
A.4.8 Dokument-Entity
A.5 Konformität
A.5.1 Validierende und nicht-validierende Prozessoren
A.5.2 Benutzen von XML-Prozessoren
A.6 Notation
A.7 Anhang A: Referenzen
A.7.1 Normative Referenzen
A.7.2 Weitere Referenzen
A.8 Anhang B: Zeichenklassen
A.9 Anhang C: XML und SGML (nicht normativ)
A.10 Anhang D: Expansion von Entity- und Zeichenreferenzen (nicht normativ)
A.11 Anhang E: Deterministische Inhaltsmodelle (nicht normativ)
A.12 Anhang F: Automatische Erkennung von Zeichenkodierungen (nicht normativ)
A.13 Anhang G: XML-Arbeitsgruppe des W3C (nicht normativ)
B Verknüpfen von Style Sheets mit XML-Dokumenten Version 1.0
B.1 Die xml-stylesheet-Processing-Instruction
B.2 Anhang A: Referenzen
B.3 Anhang B: Begründung
C Verhältnis von XML zu SGML und HTML
C.1 XML und SGML
C.2 XML und HTML
D Übersichten
D.1 Cascading Style Sheets
D.1.1 CSS-Eigenschaften und -Werte
D.1.2 CSS-Muster
D.2 DSSSL: Flow Objects
D.3 Syntax der XSLT-Elemente
D.4 DTD-Fragment für XSLT-Stylesheets (nicht normativ)
D.5 Relevante Spezifikationen und Organisationen
D.5.1 International Organization for Standardization
D.5.2 World Wide Web Consortium
D.5.3 Organization for the Advancement of Structured Information Standards
D.5.4 Internet Society und Internet Engineering Task Force
D.5.5 ISO-639-Sprachcodes
D.5.6 ISO-3166-Ländercodes
D.5.7 Zeichensatz ISO-Latin-1
D.5.8 Sonderzeichen
D.6 XML-1.0-Regeln

8.2.1 Einfache Verweise

Zunächst nimmt XLink die Möglichkeiten von HTML auf: Links zwischen Dateien und Dateiteilen, Adressangaben von Bildern und Image-Maps. Im Vergleich zu HTML sind Links in XML jedoch immer etwas genauer zu bestimmen, weil es grundsätzlich zunächst zwei Arten von Links gibt: einfache und erweiterte. Der einfache Link entspricht dem aus HTML bekannten und sieht nur in zwei Details anders aus:

Beispiel

HTML:

<A HREF="http://www.nimmermehr.de/w.html#w12">wow</A>

XML:

<ein-link xlink:type="simple" 
   xlink:href="http://www.nimmermehr.de/w.html#w12">wow</ein-link>

Beachten Sie, dass XML-Elementnamen unterschiedlich behandelt, wenn sie sich in Groß- und Kleinbuchstaben unterscheiden. In XML gilt: A ist ungleich a und HREF ist ungleich hrefFussnoteDas gilt auch für XHTML, die Anfang 2000 verabschiedete neue Version von HTML 4.0..

Eine Adressangabe in XML enthält normalerweise einen Universal Resource Identifier (URI), wie er in den RFCs 1738 und 1808FussnoteBeide RFCs sind auf dem Web-Server des W3C zu finden: http://www.w3.org/Addressing/rfc1738.txt und http://www.w3.org/Addressing/rfc1808.txt. definiert ist. Das heißt unter anderem, dass die aus HTML bekannten URLs auch in XML verwendet werden können. Außerdem können Adressangaben auf einen Teil von Dokumenten zeigen (#..., wie in obigem Beispiel). Eine Adressangabe #w12 kann in HTML ausreichend sein. In diesem Fall muss es sich bei dem Fragmentbezeichner (fragment identifier, die auf '#' folgenden Zeichen bis zum Ende der Adressangabe) in XML allerdings um einen XPointer handeln. Zum XPointer selbst kommen wir erst im nächsten Abschnitt; so viel sei aber jetzt schon verraten: falls in einer Adressangabe nach dem '#' kein expliziter XPointer folgt, sondern ein Name, nehmen XML-Prozessoren an, dass es sich um einen XPointer handelt. Anstatt von Name gehen sie von dem Ausdruck id(Name) aus. Das heißt, Name muss der Attributwert einer id sein.

Die einzigen Unterschiede, die auf den ersten Blick bei den beiden Listingschnipseln zu sehen sind, bestehen neben der Klein- und Großschreibung in den Attributen xlink:type und dessen Wert simple sowie im Vorsatz xlink zum href. Wie und wann die verschiedenen Attribute vorkommen können oder müssen, zeigt die folgende, dem derzeit aktuellen Entwurf [w3c00d] [w3c00d]XML Linking Language (XLink), World Wide Web Consortium, Eve Maler, Steve DeRose, David Orchard, Ben Trafford, 2000, http://www.w3.org/TR/xlink entnommene Tabelle. Sie enthält in der Waagerechten die XLink-Typen und in der Senkrechten die Attribute und wo sie notwendig (x) oder optional (o) sind.

Typ simple extended locator arc resource title
Attribut
type x x x x x x
href o x
role o o o o o
title o o o o o o
show o o
actuate o o
from o
to o
Ein Attribut definiert den Link-Status

Zurück zum Attribut xlink:type, das als einziges Attribut in allen XLink-Elementen vorkommen muss. Hier liegen deutliche Unterschiede zur Verarbeitung von HTML-Daten. Die Tatsache, dass ein Element einen Link oder gar mehrere enthält, ist in XML nicht ohne ausdrücklichen Hinweis zu erkennen. In HTML ist ein solcher Hinweis dagegen nicht notwendig, weil die Browser die HTML-DTD einkompiliert haben und deshalb wissen, dass das A-Element ein Attribut HREF beinhaltet, dessen Wert der URI ist. Entweder tun XML-Autoren dies, indem sie es, wie in obigem Beispiel, explizit in die XML-Instanz schreiben, oder sie geben einem Element in der DTD nicht nur das Attribut, sondern auch einen festen Wert.

Beispiel

Soll das Attribut einen festen Wert besitzen, sieht die entsprechende Definition in der DTD wie im folgenden Beispiel aus:

<!ATTLIST a    xlink:type    CDATA    #FIXED "simple" >

Soll dagegen die Tatsache, dass es sich um einen Link handelt, immer im Dokument stehen, sieht die Attributbeschreibung anders aus:

<!ATTLIST a    xlink:type    ( simple | extended )    #REQUIRED >

#REQUIRED muss hier stehen (statt etwa #IMPLIED), damit jeder Link zwingend das Attribut enthältFussnoteXML-Editoren sorgen dafür, dass Autoren es nicht vergessen..

Beide Vorgehensweisen haben Vor- und Nachteile. Legt man den Attributwert fest, weil man weiß, dass es nur einfache Links in den Dokumenten gibt, können nur validierende XML-Prozessoren (solche, die auch die DTD lesen), einen Link als solchen erkennen. Wenn auch nicht-validierende Parser Links erkennen können sollen, muss das Attribut — unabhängig von einer DTD — in allen Linkelementen stehen, was bei von Menschen generierten Daten die Fehleranfälligkeit erhöht.

Allein die Tatsache, dass es einen Wert simple gibt, suggeriert bereits, dass der nicht der einzige ist. Was stimmt, denn XLink kennt neben simple auch extended für erweiterte Linkelemente. Sowohl das einfache als auch das erweiterte Linkelement können über ihren Typ (oben type) und die Adressangabe (oben href) hinaus weitere Attribute enthalten, die die Bedeutung der Adressangabe sowie der referenzierten Ressourcen und ihre Rolle betreffen. Es handelt sich dabei um die in der Tabelle oben links ebenfalls genannten Attribute.

xlink:href ist das Attribut, das die Adressangabe als Wert enthält. Das sei hier noch einmal mit dem Vorsatz xlink betont, weil die in HTML-Dokumenten vorhandenen href-Attribute in a-Elementen keine XLink-Attribute sind: Sie gehören diesem Namensraum nicht an. Das XLink-href kommt optional im einfachen Link vor; fehlt es, gibt es keinen Verweis.

Die Attribute role, title, to und from

Die Werte von role und title sind a) eine Beschreibung der Funktion des Links und b), wie der zweite Name schon sagt, ein Titel. Die Besonderheit der Attribute to und from ist, dass sie nur in einem einzigen Element vorkommen können, dem Bogen (arc). Sie benennen, von wo nach wo verzweigt werden kann. Die Attribute show und actuate beziehen sich darauf, was mit dem so referenzierten Dokumentteil geschehen soll. show kann folgende Werte haben:

actuate kann drei Werte annehmen: onLoad, onRequest und wiederum undefined. Im ersten Fall wird beim Laden der Start-Ressource auch zur Ende-Ressource verzweigt (wie das automatische Laden von img in HTML, was letzlich auch ein Link ist); im zweiten Fall wird beispielsweise eine Aktion des Benutzers erwartet, und Undefiniert bleibt wie oben der Anwendung überlassen.

Wie all dies in einer DTD und in einem XML-Dokument aussehen kann, sollen die folgenden Abschnitte sowohl für einfache wie erweiterte Links zeigen. Zunächst ein einfacher Link, der in XML etwa dieselbe Aufgabe wie das A in HTML übernimmtFussnoteDie hier folgenden Listings sind an den Entwurf angelehnt, verzichten aber auf die dort genutzte Möglichkeit, mehrere Attribute zu einer Parameter-Entity zusammenzufassen..

Beispiel
<!-- in der DTD -->
<!ELEMENT ganzeinfach ANY>

<!ATTLIST ganzeinfach
         xlink:type      CDATA    #FIXED    "simple"
         xlink:href      CDATA    #REQUIRED >

Im Dokument könnte dann der aus HTML bekannte Ausdruck stehen:

<!-- im Dokument -->
<ganzeinfach xlink:href="http://www.nimmermehr.de/foo/bar.xml">
dieses spezielle Tutorial</ganzeinfach>

Viel ist das nicht, aber wie oben zu sehen war, lassen sich der DTD-Ausschnitt und das Dokument ergänzen:

Beispiel
<!-- in der DTD -->
<!ELEMENT einfach ANY>

<!ATTLIST einfach
         xlink:type      CDATA    #FIXED    "simple"
         xlink:href      CDATA    #REQUIRED
         xlink:role      CDATA    #IMPLIED
         xlink:title     CDATA    #IMPLIED
         xlink:show      (embed|replace|new|undefined)    #IMPLIED>

Aussagekräftig ist auf den ersten Blick die Festlegung auf den einfachen Link (wie im ersten Beispiel). In einem XML-Dokument könnte nach dieser Definition stehen:

<!-- im Dokument -->
<einfach xlink:href="http://www.nimmermehr.de/foo/bar.xml"
         xlink:role="anleitung"
         xlink:title="Mehr X M L ist besser"
         show="new">dieses spezielle Tutorial</einfach>

xlink:type muss in diesem Beispiel, in Verbindung mit dem DTD-Schnipsel, im Code nicht erscheinen, weil es einen festen Wert hat, den der DTD-Schnipsel als Vorgabewert enthält. Ob und wie ein Browser oder eine andere Anwendung, mit Attributen wie xlink:title umgeht, ist ihr überlassen. xlink:role bekommt seine Bedeutung erst bei den erweiterten Links.

Valid HTML 4.01!Valid CSS!