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.2 Erweiterte Links

Was die meisten Anwender, denen A nicht reicht, faszinieren dürfte, sind die Erweiterungen, die XLink — und Xpointer (siehe weiter unten) — im Vergleich dazu bieten. Im Gegensatz zu den einfachen Links können die erweiterten mehr als nur eine Ressource enthalten.

Im Gegensatz zum einfachen Link kann der
  erweiterte auf mehrere Ziele verweisen

Abbildung 25: Im Gegensatz zum einfachen Link kann der erweiterte auf mehrere Ziele verweisen

Zunächst eine Definition (aus dem XLink-Entwurf): Ein erweiterter Link ist ein Link, der eine beliebige Anzahl von Ressourcen verbindet. Die beteiligten Ressourcen können irgendeine Kombination von lokalen und entfernten Ressourcen sein. Sind alle entfernte, handelt es sich um einen Out-of-line-Link. Ist auch nur eine Ressource lokal, handelt es sich um einen Inline-Link.

Hinweis

Zu den Besonderheiten der erweiterten Links gehört,

  1. dass es möglich ist, Verweise von Read-only-Medien aus zu anderen Stellen einzurichtenFussnoteEine Idee, die Bush (associative trails), Engelbart und Nelson schon vor vielen Jahren fasziniert hat. (beispielsweise von einer auf CD-ROM gespeicherten Datei oder einer anderen Website aus ...) und
  2. dass man Links zu und von Daten aus erzeugen kann, die selbst kein Linking unterstützen.

Erweiterte Links sind daran zu erkennen, dass für ein Element das Attribut xlink:type den Wert extended besitzt. Dieses Element wiederum enthält unter anderem Kindelemente, deren Attribut type die folgenden Werte hat:

type-Wert Aufgabe
locator spricht die beteiligten entfernten Ressourcen an
arc definiert die Verzweigungsregeln zwischen den beteiligten Ressourcen
title sorgt für menschenlesbare Beschriftungen
resource beschreibt die lokalen Ressourcen

In einer DTD lässt sich der Attributwert festlegen, sodass für ein solches Element Attribut und Wert nicht angegeben werden müssen. Das folgende Beispiel zeigt einen erweiterten Link mit einem als locator gekennzeichneten Kindelement.

Beispiel
<!-- in der DTD -->
<!ELEMENT erweitert erwverweis+>

<!ATTLIST erweitert
         xlink:type    CDATA    #FIXED    "extended"
         xlink:role    NMTOKEN  #FIXED    "erweitert"
         xlink:title   CDATA    #IMPLIED >

<!ELEMENT erwverweis ANY>

<!ATTLIST erwverweis
         xlink:type    CDATA    #FIXED    "locator"
         xlink:href    CDATA    #REQUIRED
         xlink:role    CDATA    #IMPLIED >

Das erste der beiden Elemente (erweitert) ist der erweiterte Link — durch den Wert des Attributs xlink:type. Das erweitert allerdings noch nicht die Funktion von Adressangaben; dazu dient das zweite Element erwverweis. Es enthält eins der genannten Schlüsselwörter für den xlink:type-Attributwert, denn der ist als locator definiert. Innerhalb einer XML-Instanz könnte das Element erweitert mehrere dieser Adressangaben beinhalten.

<!-- im Dokument -->
<erweitert xlink:type="extended">
    <erwverweis xlink:href="http://www.nimmermehr.de/foo/bar1.xml" 
                   xlink:role="einstieg" />
    <erwverweis xlink:href="http://www.nimmermehr.de/foo/bar2.xml" 
                   xlink:role="uebung" />
    <erwverweis xlink:href="http://www.nimmermehr.de/foo/bar3.xml" 
                   xlink:role="vertiefung" />
    <erwverweis href="http://www.nimmermehr.de/foo/bar4.xml" 
                   xlink:role="schluss" />
</erweitert>

Zunächst ist erweitert als erweiterter Link definiert. Innerhalb dieses Elements sind nun die eigentlichen Adressangaben aufgelistet. Wiederum müssen die Anwendungen (wie Browser etc.) Möglichkeiten bereitstellen, solche Links dem Anwender zu präsentieren. Denkbar wäre, ein PopUp-Menü zu erzeugen, das über die alternativ zu findenden Ressourcen aufklärt und eine Auswahl bietet, wenn jemand die Maus über ein sensitives Gebiet auf der Web-Seite führt. In solchem Umfeld kämen Attribute wie xlink:title zum Tragen, denn sein Wert kann zur Beschreibung der Adressangaben, etwa im genannten Auswahlmenü, herangezogen werden.

Sind die Ressourcen lokal, muss der Wert ihrer xlink:type-Attribute resource sein. Außer dem Typ können lokale Resourcen die Attribute xlink:role und xlink:title beinhalten.

Ein erweiterter Verweis, der einen Inline-Link
    darstellt, weil er über eine lokale Ressource
    verfügt

Abbildung 26: Ein erweiterter Verweis, der einen Inline-Link darstellt, weil er über eine lokale Ressource verfügt

Beispiel
<!-- in der DTD -->
<!ELEMENT  wetterbericht  (go | stadt | temperatur)*>
  <!ATTLIST wetterbericht
    xlink:type           (extended)   #FIXED "extended"
    xlink:role           NMTOKEN      #FIXED "ext-verweis"
    xlink:title          CDATA        #IMPLIED >

<ELEMENT temperatur  ANY>

<!ATTLIST temperatur
  xlink:type            (resource)    #FIXED  "resource"
  xlink:role            NMTOKEN       #FIXED  "temp"
  xlink:title           CDATA         #IMPLIED >

<ELEMENT stadt  ANY>

<!ATTLIST stadt
  xlink:type            (resource)    #FIXED  "resource"
  xlink:role            NMTOKEN       #FIXED  "stadt-info"
  xlink:title           CDATA         #IMPLIED >

<!-- im Dokument -->
<wetterbericht
    xlink:title="Wetter im Norden">

    <go xlink:from="temp" xlink:to="stadt-info" />
    ...
    <stadt>...</stadt>
    ...
  <temperatur>12,5</temperatur>
</wetterbericht>

Erweiterte Links können Angaben darüber enthalten, von wo nach wo verzweigt werden soll. Für diese Angaben sind Elemente vorgesehen, die als Wert von xlink:type-Attributen arc besitzen. Auch hierzu ein Beispiel.

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

<!ATTLIST go
  xlink:type            (arc)         #FIXED  "arc"
  xlink:from            NMTOKEN       #IMPLIED 
  xlink:to              NMTOKEN       #IMPLIED 
  xlink:role            NMTOKEN       #IMPLIED 
  xlink:title           CDATA         #IMPLIED 
  xlink:show            (new|replace|embed|undefined)    #IMPLIED 
  xlink:actuate         (onLoad|onRequest|undefined)    #IMPLIED >

<!-- im Dokument -->
<go xlink:from="woher" xlink:to="wohin" 
    xlink:show="new" actuate="onRequest"/>

Folgendes Beispiel zeigt die Verwendungsmöglichkeiten der Bögen. Angenommen sei dazu, dass die Elemente alle dem XLink-Namensraum entstammen und der xlink:type jeweils dem Namen des Elements entspricht. Es sei also das Element extended mit xlink:type="extendend" definiert.

Beispiel
<!-- im Dokument -->
<extended>
  <locator href="dokument1.xml"  
           role="inhalt"  title="Titel 1" />
  <locator href="dokument2.html" 
           role="inhalt"  title="Titel 2" />
  <locator href="ihv.xml"        
           role="navigation"  
           title="Inhaltsverzeichnis für diese Website" />
  <locator href="/CGI/suche.pl"  
           role="navigation"  
           title="Auf dieser Website suchen" />
  <locator href="impressum.html" 
           role="about-site"  
           title="Impressum" />

  <arc from="inhalt"     to="navigation" />
  <arc from="about-site" to="navigation" />

</extended>

Hinter diesem Beispiel steht eine Website mit zwei Dokumenten, die den Inhalt enthalten. Sie sind in den Dateien dokument1.xml und dokument2.html gespeichert. Des weiteren gibt es zwei Seiten, die die Navigation unterstützen sollen, nämlich ein Inhaltsverzeichnis (ihv.xml) und ein Suchformular (/CGI/suche.pl). Und letztlich noch eine Seite mit dem Impressum. Die Rollenangaben beschreiben jeweils, welche Funktion das Dokument erfüllt.

Bis jetzt gibt es eventuell noch keine Links zwischen den Dokumenten (es sei denn, sie enthalten Inline-Links). Die beiden Bögen (arc) schaffen nun Links von allen inhalt-Seiten und von allen about-site-Seiten auf alle navigation-Seiten (siehe Abbildung 27).

Link-Bögen zwischen Ressourcen
    verschiedener Rollen

Abbildung 27: Link-Bögen zwischen Ressourcen verschiedener Rollen

Nicht zu vergessen: Die Elemente, deren Attribut xlink:type den Wert title hat. Überschriften/Beschriftungen können zwar in den anderen XLink-Elementen (siehe oben) über ein Attribut enthalten sein, aber man kann auch Elemente vorsehen, die einen Titel darstellen. Das können durchaus geschachtelte Elemente sein, die allerdings keine Beziehung zu XLink haben.

Beispiel
<!-- in der DTD -->
<!ELEMENT wasauchimmer (name)>
<!ATTLIST wasauchimmer
  xlink:type       (title)       #FIXED  "title">

<!-- im Dokument -->
<wasauchimmer> 
  <name>
  <!-- (geschachtelter) Inhalt von name -->
  <name>
<wasauchimmer> 

Der XLink-Entwurf sieht einen Sonderfall vor, weil die Autoren annehmen, dass Listen von Links viel benutzt werden. Sie definieren als Link-Basen (linkbase) XML-Dokumente, die erweiterte Links enthalten. Und eine externe Link-Menge (external linkset) ist eine Liste von Referenzen auf die genannten Basen. Für die Link-Mengen haben die Autoren vorgesehen, dass sie über einen bestimmten Attributwert als solche deklariert werden und ihrerseits Element wie locator enthalten.

<erweitert
  xmlns:xlink="http://www.w3.org/1999/xlink"
  xlink:role="xlink:external-linkset">
  <locator ...>
  <locator ...>
  ...
</erweitert>

Valid HTML 4.01!Valid CSS!