39
Anmerkungen zu XML Entwicklung/Anspruch von XML Character Data DTD vs. Schemata XSL vs. CSS Prof. Dr. Manfred Sommer Fachbereich Mathematik und Informatik Universität Marburg Im September 2000

Anmerkungen zu XML Entwicklung/Anspruch von XML Character Data DTD vs. Schemata XSL vs. CSS Prof. Dr. Manfred Sommer Fachbereich Mathematik und Informatik

Embed Size (px)

Citation preview

Page 1: Anmerkungen zu XML Entwicklung/Anspruch von XML Character Data DTD vs. Schemata XSL vs. CSS Prof. Dr. Manfred Sommer Fachbereich Mathematik und Informatik

Anmerkungen zu XML

Entwicklung/Anspruch von XMLCharacter DataDTD vs. SchemataXSL vs. CSS

Prof. Dr. Manfred SommerFachbereich Mathematik und Informatik Universität Marburg

Im September 2000

Page 2: Anmerkungen zu XML Entwicklung/Anspruch von XML Character Data DTD vs. Schemata XSL vs. CSS Prof. Dr. Manfred Sommer Fachbereich Mathematik und Informatik

Sep. 2000 Anm. zu XML 2 XML

Struktur / Structure

Inhalt / Content

Format / Layout

Ein Dokument

Page 3: Anmerkungen zu XML Entwicklung/Anspruch von XML Character Data DTD vs. Schemata XSL vs. CSS Prof. Dr. Manfred Sommer Fachbereich Mathematik und Informatik

Sep. 2000 Anm. zu XML 3 W3C: XML

Aussagen des W3C zu XML:

XML in 10 points.htm

Die aktuelle XML-Definition des W3C:

XML-Dokus\Extensible Markup Language (XML) 1_0 (Second Edition) Review Version.htm

Page 4: Anmerkungen zu XML Entwicklung/Anspruch von XML Character Data DTD vs. Schemata XSL vs. CSS Prof. Dr. Manfred Sommer Fachbereich Mathematik und Informatik

Sep. 2000 Anm. zu XML 4

Ist XML einfach ?

HTML ist eine Anwendung von SGML.

XML ist (war mal ?) eine Teilmenge von SGML (ISO 8879).

Die Definition von SGML umfasst angeblich ca. 500 Seiten.

"Die Definition von XML passt auf ca. 33 Seiten."

Diese Aussage war vielleicht mal richtig, insgesamt gibt es mittlerweile sehr viel mehr Seiten über XML und angrenzende Themen.

An XML und den angrenzenden Themen arbeiten seit Jahren Komitees mit Mitgliedern von SUN, Microsoft, IBM und anderen Firmen.

Folge: XML wird immer umfangreicher und unübersichtlicher.

Page 5: Anmerkungen zu XML Entwicklung/Anspruch von XML Character Data DTD vs. Schemata XSL vs. CSS Prof. Dr. Manfred Sommer Fachbereich Mathematik und Informatik

Sep. 2000 Anm. zu XML 5

XML ist eine Baum-Sprache<?xml version="1.0"?><ausdruecke><Plus> <Operand class="var" name="b" type="int"/> <Mult> <Operand class="const" val="7" type="int"/> <Plus> <Plus> <Operand class="var" name="c" type="int"/> <Mult> <Operand class="var" name="d" type="int"/> <Operand class="var" name="e" type="int"/> </Mult> </Plus> <Operand class="const" val="8" type="int"/> </Plus> </Mult></Plus></ausdruecke>

B + 7 * (C + D * E + 8 )

+

+

*

8+

B

C

7

*

D E

Page 6: Anmerkungen zu XML Entwicklung/Anspruch von XML Character Data DTD vs. Schemata XSL vs. CSS Prof. Dr. Manfred Sommer Fachbereich Mathematik und Informatik

Sep. 2000 Anm. zu XML 6

Text

Text besteht aus Zeichen und eingestreuten Markierungen („Mark-Ups“).

Diese bestehen aus: <Start-Tag> ... <End-Tag/> oder </Leeres-Element Tag> „Entity references“ „character references“ Kommentaren CDATA Abschnitten DTDs (Document Type Declarations) PIs (Processing Instructions)

Text, der kein Markup ist, sind „die Zeichen des Dokumentes“ = Character Data = CharData (im Gegensatz zu CDATA)

Außerdem gibt es noch PCDATA

%pub; &amp;

&#xA9; &#123;

[14] CharData ::= [^<&]* - ([^<&]* ']]>' [^<&]*)

Page 7: Anmerkungen zu XML Entwicklung/Anspruch von XML Character Data DTD vs. Schemata XSL vs. CSS Prof. Dr. Manfred Sommer Fachbereich Mathematik und Informatik

Sep. 2000 Anm. zu XML 7

CDATA / PCDATA

Die Zeichen & < und müssen bis auf wenige Ausnahmen immer zitiert werden: "&amp;" und "&lt;“.

Natürlich sollten auch >, ], ‘ und “ zitiert werden.

Man kann auch Datenabschnitte definieren, in denen die üblichen Ersetzungsregeln nicht gelten: <![CDATA[<greeting>Hello, world!</greeting>]]>

In dem Beispiel wird <greeting> nicht als Tag behandelt.

Der einzige Text, der in einem CDATA-Abschnitt ausgewertet wird, ist ]]>.

Im Gegensatz zu dem Text in einem CDATA-Abschnitt wird ausgewerteter Text als PCDATA „Parsed“ CDATA bezeichnet.

Page 8: Anmerkungen zu XML Entwicklung/Anspruch von XML Character Data DTD vs. Schemata XSL vs. CSS Prof. Dr. Manfred Sommer Fachbereich Mathematik und Informatik

Sep. 2000 Anm. zu XML 8

Entitäten (1)

Entity steht für diverse Ersetzungsmechanismen. Gemeinsam ist allen Entities, daß es für sie einen

Namen gibt und daß sie einen Inhalt haben. Die meisten Entities müssen in einer Deklaration einen

Namen zugewiesen bekommen, bevor auf sie in einem Dokument verwiesen werden kann.

Wenn ein Entity deklariert wurde, kann der Entity-Name als ein Kürzel verwendet werden, und der Parser wird dafür sorgen, daß an die Stelle des Entity der Ersetzungstext gesetzt wird.

Vordefinierte Entities:&lt; steht für < &gt; steht für >&amp; steht für & &apos; steht für ' &quot; steht für "

<!ENTITY lt "&#38;#60;"> <!ENTITY gt "&#62;"> <!ENTITY amp "&#38;#38;"> <!ENTITY apos "&#39;"> <!ENTITY quot "&#34;">

Warum doppelt?

Page 9: Anmerkungen zu XML Entwicklung/Anspruch von XML Character Data DTD vs. Schemata XSL vs. CSS Prof. Dr. Manfred Sommer Fachbereich Mathematik und Informatik

Sep. 2000 Anm. zu XML 9

Entitäten (2)

Im einfachsten Fall kann man mit einer Entitiy-Deklaration selbst eine Abkürzung definieren:<!ENTITY pu "Philipps Universitaet Marburg"><!ENTITY fb "Fachbereich Mathematik und Informatik" ><!ENTITY dk "Der Dekan des &fb; der &pu;" >.... <zzz> &pu; </zzz> <zzz> &fb; </zzz> <zzz> &dk; </zzz>

<zzz>Philipps Universitaet Marburg</zzz> <zzz>Fachbereich Mathematik und Informatik</zzz> <zzz>Der Dekan des Fachbereich Mathematik und Informatik der Philipps Universitaet Marburg</zzz>

Page 10: Anmerkungen zu XML Entwicklung/Anspruch von XML Character Data DTD vs. Schemata XSL vs. CSS Prof. Dr. Manfred Sommer Fachbereich Mathematik und Informatik

Sep. 2000 Anm. zu XML 10

Entitäten (3)

Für Entities gibt es drei Einteilungskriterien: Interne und externe Entities. Parsed und unparsed Entities. Normale und Parameter-Entities

Alles ganz einfach ???

Soll sich der Substitutionsmechanismus nur auf den DTD-Teil und auf den Erstellungszeitpunkt der DTD beziehen, verwendet man „Parameter Entities“.

<!ENTITY % pub "&#xc9;ditions Gallimard" ><!ENTITY rights "All rights reserved" ><!ENTITY book "La Peste: Albert Camus, &#xA9; 1947 %pub;. &rights;" >

<!ENTITY book2 "La Peste: Albert Camus, © 1947 Éditions Gallimard. &right;" >

=

Page 11: Anmerkungen zu XML Entwicklung/Anspruch von XML Character Data DTD vs. Schemata XSL vs. CSS Prof. Dr. Manfred Sommer Fachbereich Mathematik und Informatik

Sep. 2000 Anm. zu XML 11 DTD: allgemein

Der Typ eines Dokumentes wird in einer DTD beschrieben.

Diese definiert die Struktur eines Dokumentes und sollte alle verwendeten Markups beschreiben.

Dies ist jedoch keine Pflicht! (Warum eigentlich nicht?) Eine DTD kann intern sein oder extern. Beides ist auch möglich. Man spricht dann von einer

internen und einer externen Teilmenge der DTD. Beispiel für eine externe DTD:<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE gruss SYSTEM "hello.dtd"> <gruss> Hallo XML! </gruss>

Auf SYSTEM folgt eine URI. Alternativ kann das Schlüsselwort PUBLIC verwendet werden. Das verweist auf eine „öffentliche“ URI. Als Beispiel sind Standards anzusehen.

Page 12: Anmerkungen zu XML Entwicklung/Anspruch von XML Character Data DTD vs. Schemata XSL vs. CSS Prof. Dr. Manfred Sommer Fachbereich Mathematik und Informatik

Sep. 2000 Anm. zu XML 12 DTD: Inhalt

In einer DTD werden definiert:

Elemente

Attribute

Entitäten

Notationen

...

Page 13: Anmerkungen zu XML Entwicklung/Anspruch von XML Character Data DTD vs. Schemata XSL vs. CSS Prof. Dr. Manfred Sommer Fachbereich Mathematik und Informatik

Sep. 2000 Anm. zu XML 13 DTD: Beispiel

<?xml version="1.0" standalone="no"?> <!DOCTYPE AdrListe [ <!ELEMENT AdrListe (Adr)*> <!ELEMENT Adr (Vorname?, Nachname,

(Strasse|Postfach), PLZ, Ort)> <!ELEMENT Vorname (#PCDATA)><!ELEMENT Nachname (#PCDATA)><!ELEMENT Strasse (#PCDATA)><!ELEMENT Postfach (#PCDATA)><!ELEMENT PLZ (#PCDATA)><!ELEMENT Ort (#PCDATA)>]>....

... <AdrListe> <Adr><Nachname> Sommer </Nachname> <Postfach> 4711 </Postfach> <PLZ> 35037 </PLZ> <Ort> Marburg </Ort></Adr><Adr><Vorname> Manfred </Vorname><Nachname> Winter </Nachname> <Postfach> 4711 </Postfach> <PLZ> 35037 </PLZ> <Ort> Marburg </Ort></Adr></AdrListe>

Page 14: Anmerkungen zu XML Entwicklung/Anspruch von XML Character Data DTD vs. Schemata XSL vs. CSS Prof. Dr. Manfred Sommer Fachbereich Mathematik und Informatik

Sep. 2000 Anm. zu XML 14 DTD: Diskussion (1)

In einer DTD können die Elemente und Attribute beschrieben werden. Die zur Verfügung stehenden Datentypen sind sehr beschränkt:

Der Inhalt von Elementen kann sein:Der Inhalt kann leer (EMPTY) oder beliebig (ANY) sein. Der Inhalt kann ausschließlich aus noch zu parsenden Character Daten

(#PCDATA) bestehen. Der Inhalt kann ausschließlich aus Elementen bestehen. Der Inhalt kann sowohl aus Daten als auch aus Elementen bestehen.

Attribute können folgenden Typs sein:#CDATAID, IDREF, IDREFS, ENTITY, ENTITIES, NMTOKEN, NMTOKENS, NOTATION, NOTATIONS

Page 15: Anmerkungen zu XML Entwicklung/Anspruch von XML Character Data DTD vs. Schemata XSL vs. CSS Prof. Dr. Manfred Sommer Fachbereich Mathematik und Informatik

Sep. 2000 Anm. zu XML 15 DTD: Diskussion (2)

DTDs sind ein Relikt aus der SGML-Zeit und können den Inhalt von XML-Dokumenten nur sehr ungenau beschreiben, wenn darin z.B. spezifische Datenstrukturen verwendet werden.

Das Problem lässt sich auch nicht kompatibel beheben.

Daher wurden XML-Schemata definiert.

In DTDs können keine Namespace-Konstrukte verwendet werden.

Page 16: Anmerkungen zu XML Entwicklung/Anspruch von XML Character Data DTD vs. Schemata XSL vs. CSS Prof. Dr. Manfred Sommer Fachbereich Mathematik und Informatik

Sep. 2000 Anm. zu XML 16 XML-Schema

XML-Schema erweitern die Möglichkeit zur Definition von XML-Datenstrukturen erheblich!

In der Definition von XML-Schemata wird das Thema Datenstrukturen vollständig erschlagen (overkill?)

XML-Schemata sind nicht kompatibel zur SGML-Vergangenheit.

Die Verwendung und auch die genaue Definition von XML-Schemata ist umstritten!

Page 17: Anmerkungen zu XML Entwicklung/Anspruch von XML Character Data DTD vs. Schemata XSL vs. CSS Prof. Dr. Manfred Sommer Fachbereich Mathematik und Informatik

Sep. 2000 Anm. zu XML 17 XML-Schema Beispiel (1)

Für das folgende XML-Element wird auf den nächsten Folien ein passendes Schema definiert.

Das Beispiel ist aus der Diplomarbeit von Frank Bingel.

<auftrag bestellDatum="2000.04.30"> <lieferadresse> <name>Mustermann</name> <vorname>Herbert</vorname> <strasse>Musterstrasse 1</strasse> <postleitzahl>60000</postleitzahl> <wohnort>Frankfurt</wohnort> </lieferadresse> <posten> <produktnummer>212-456</produktnummer> <anzahl>5</anzahl> <preis>19.99</preis> </posten> <posten> <produktnummer>942-132</produktnummer> <anzahl>2</anzahl> <preis>37.49</preis> </posten></auftrag>

Page 18: Anmerkungen zu XML Entwicklung/Anspruch von XML Character Data DTD vs. Schemata XSL vs. CSS Prof. Dr. Manfred Sommer Fachbereich Mathematik und Informatik

Sep. 2000 Anm. zu XML 18 XML-Schema Beispiel (2)

<schema> <element name="auftrag" type="auftragTyp"/> <complexType name="auftragTyp"> <element name="lieferAdresse" type="adressTyp"/> <element name="posten" type="postenTyp" maxOccurs="10"/> <attribute name="bestellDatum" type="date"/> </complexType>

<complexType name="adressTyp"> <element name="name" type="string"/> <element name="vorname" type="string"/> <element name="strasse" type="string"/> <element name="postleitzahl" type="posteitzahlTyp"/> <element name="wohnort" type="string"/> </complexType>...

Page 19: Anmerkungen zu XML Entwicklung/Anspruch von XML Character Data DTD vs. Schemata XSL vs. CSS Prof. Dr. Manfred Sommer Fachbereich Mathematik und Informatik

Sep. 2000 Anm. zu XML 19 XML-Schema Beispiel (3)

... <simpleType name="postleitzahlTyp" base="string"> <pattern value="[0-9][1-9][0-9]{3}"/> </simpleType>

<complexType name="postenTyp"> <element name="produktNummer" type="produktNummerTyp"/> <element name="anzahl"> <simpleType base="positive-integer"> <maxExclusive value="10"/> </simpleType> </element> <element name="preis" type="decimal"/> </complexType>

<simpleType name="produktNummerTyp" base="string"> <pattern value="[1-9]{3}-[1-9]{3}"/> </simpleType>

</schema>

Page 20: Anmerkungen zu XML Entwicklung/Anspruch von XML Character Data DTD vs. Schemata XSL vs. CSS Prof. Dr. Manfred Sommer Fachbereich Mathematik und Informatik

Sep. 2000 Anm. zu XML 20

Vorteile unabhängiger Stilvorlagen

Wiederverwendbarkeit

Mehrere Varianten für unterschiedliche Ausgabemedien.

Standardisierte Textvorlagen können eingeführt werden.

Individuelle Textgestaltung ist immer noch möglich.

Trennung von „Inhalts-Autoren“ und „Stil-Autoren“.

Stilvorlagen können deklarativ oder prozedural sein.

Deklarative Stilvorlagen sagen wie ein Textelement aussieht.

Prozedurale Stilvorlagen sagen wie ein Textelement transformiert werden soll.

Page 21: Anmerkungen zu XML Entwicklung/Anspruch von XML Character Data DTD vs. Schemata XSL vs. CSS Prof. Dr. Manfred Sommer Fachbereich Mathematik und Informatik

Sep. 2000 Anm. zu XML 21

Stilvorlagen für XML

Die Diskussion über Stilvorlagen für XML ist anhaltend und noch keineswegs abgeschlossen.

Die Puristen halten CSS, wie bereits für HTML definiert, für völlig ausreichend.

Daneben gibt es einen andauernden Versuch zusätzlich einen XML spezifischen Stilvorlagen Mechanismus zu definieren.

Eine erste Version von XSL wurde vor 1998 definiert.Eine neue Version wurde seit 1999 eingeführt. Diese ist völlig anders – dies wurde aber nirgends an die grosse Glocke gehängt.

Gegenwärtig gibt es eine zweistufige XSL-Definition: XSLT definiert Baumtransformationen.XSL definiert XML-Formate.

Page 22: Anmerkungen zu XML Entwicklung/Anspruch von XML Character Data DTD vs. Schemata XSL vs. CSS Prof. Dr. Manfred Sommer Fachbereich Mathematik und Informatik

Sep. 2000 Anm. zu XML 22

XSL und XSLT (1)

Baumtransformationen könnte man übrigens genau so gut mit DOM machen!

Page 23: Anmerkungen zu XML Entwicklung/Anspruch von XML Character Data DTD vs. Schemata XSL vs. CSS Prof. Dr. Manfred Sommer Fachbereich Mathematik und Informatik

Sep. 2000 Anm. zu XML 23

XSL und XSLT (2)

Die Baum-Transformationen sind durch XSLT definiert.Das Ergebnis kann sein: ein Text mit Format-Auszeichnungen ein anderer XML-Baum ein HTML-Baum ...

Input: Ein XML-Baum Ergebnis: Ein anderer Baum

Page 24: Anmerkungen zu XML Entwicklung/Anspruch von XML Character Data DTD vs. Schemata XSL vs. CSS Prof. Dr. Manfred Sommer Fachbereich Mathematik und Informatik

Sep. 2000 Anm. zu XML 24

Baumstruktur

Ein XML Dokument definiert einen Baum. XSLT definiert eine Baumtransformation für einen

solchen Baum.Die Struktur eines XML ist: Er besteht aus einem

Wurzelknoten und Kind-Knoten.Es gibt folgende Arten von Knoten:

Wurzel-KnotenElement-KnotenText-KnotenAttribut-Knoten(Namespace)-Knoten(Processing Instruction)-KnotenKommentar-Knoten

Page 25: Anmerkungen zu XML Entwicklung/Anspruch von XML Character Data DTD vs. Schemata XSL vs. CSS Prof. Dr. Manfred Sommer Fachbereich Mathematik und Informatik

Sep. 2000 Anm. zu XML 25

Knotenarten: Beispiel<section> <title>The First Day</title> <p>It was the <emph>best</emph> of days, it was the <emph>worst</emph> of days.</p></section>

Elementknoten:section

Wurzel

Elementknoten:title

Elementknoten:p

Textknoten:It was the

El.knoten:emph

Textknoten:of days, it was the

El.knoten:emph

Textknoten:of days

Textknoten:The First Day

Textknoten:best

Textknoten:worst

Page 26: Anmerkungen zu XML Entwicklung/Anspruch von XML Character Data DTD vs. Schemata XSL vs. CSS Prof. Dr. Manfred Sommer Fachbereich Mathematik und Informatik

Sep. 2000 Anm. zu XML 26 Aktueller Knoten

Bei der Verarbeitung eines Baumes gibt es ausgezeichnete Positionen:

Der aktuelle Knoten: Auf diesen bezieht sich die momentane Verabeitung.

Wenn ein Template angewandt wird, wird der Knoten auf den es angewandt wird, der aktuelle Knoten.

Weitere Arten von Knoten: Wurzel-Knoten Vorgänger-Knoten (Eltern-Knoten) Kind-Knoten (1. Kind, 2. Kind, .... Letztes Kind)

Page 27: Anmerkungen zu XML Entwicklung/Anspruch von XML Character Data DTD vs. Schemata XSL vs. CSS Prof. Dr. Manfred Sommer Fachbereich Mathematik und Informatik

Sep. 2000 Anm. zu XML 27 Abhängige Knoten (1)

Ausgehend von der aktuellen Position kann man folgende Mengen von Knoten definieren. Dafür gibt es eine ausführliche und eine abgekürzte Schreibweise. Einige Beispiele in ausführlicher Schreibweise:

from-children(para) Die Kinder-Elementknoten namens para.from-children(*) Alle Kinder-Elementknoten.from-children(text()) Alle Kinder-Textknoten. from-children(node()) Alle Kinder-Knoten.from-attributes(name) Die Kinder-Attributknoten namens name. from-attributes(*) Alle Kinder-Attributknoten.from-descendants(para) Aus der Menge der Abkömmlinge:

Elementknoten namens parafrom-self(para) ist der aktuelle Knoten, wenn er ein Elementknoten

namens para ist, die leere Menge andernfalls.

Page 28: Anmerkungen zu XML Entwicklung/Anspruch von XML Character Data DTD vs. Schemata XSL vs. CSS Prof. Dr. Manfred Sommer Fachbereich Mathematik und Informatik

Sep. 2000 Anm. zu XML 28 Abhängige Knoten (2)

Zusammengesetzte Selektoren:from-ancestors-or-self(...)

from-descendants-or-self(...)

Abgekürzte Schreibweise:para bezeichnet die Kind-Elemente names para. * alle Kind-Elemente.text() Alle Kinder-Textknoten. @name Die Kinder-Attributknoten namens name. @* Alle Kinder-Attributknoten.para[1] das 1. Element der Kind-Elemente names para. para[last()] das letzte Element der Kind-Elemente names para.

Page 29: Anmerkungen zu XML Entwicklung/Anspruch von XML Character Data DTD vs. Schemata XSL vs. CSS Prof. Dr. Manfred Sommer Fachbereich Mathematik und Informatik

Sep. 2000 Anm. zu XML 29 Muster

/ wählt das Wurzelelement eines XML Baumes aus.* wählt alle Elemente eines XML Baumes aus.m1|m2 wählt Elemente aus, auf die m1 oder m2 zutrifft. m1 and m2 wählt Elemente aus, auf die m1 und m2 zutrifft. m1/m2 wählt Elemente aus, auf die m2 zutrifft, wenn der

Elternknoten m1 ist. m1//m2 wählt Elemente aus, auf die m2 zutrifft, wenn sie einen

Vorgängerknoten m1 haben.@a wählt ein Attribut mit Namen a aus.*@ wählt alle Attribute aus.

Eine wesentliche Komponente von XSL ist der Vergleich von Mustern. Beispiele:<xsl:template match="preparation">

<xsl:value-of select="@units"/>

<xsl:when test="note[@status='credit']">

<xsl:template match="/">

Page 30: Anmerkungen zu XML Entwicklung/Anspruch von XML Character Data DTD vs. Schemata XSL vs. CSS Prof. Dr. Manfred Sommer Fachbereich Mathematik und Informatik

Sep. 2000 Anm. zu XML 30 Filter

[] definiert einen Filter für ein Muster.Beispiele: div[@class="appendix"]//p wählt jedes Element namens p aus

(auf das p zutrifft), das ein Vorgängerelement namens div hat, der ein Attribut class mit dem Wert appendix hat.

para[1] trifft auf alle para Elemente zu, die 1. Kind ihres Elternknotens sind.

*[position()=1] wählt jedes Element aus das 1. Kind seines Elternknotens ist.

*[last()=1] wählt jedes Element aus das das einzige Kind seines Elternknotens ist.

item[position() mod 2 = 1] trifft auf ein Element namens item zu, wenn es eine ungerade Positionsnummer hat.

item[position() > 1] trifft auf ein Element namens item zu, wenn es nicht das 1. Kind seines Elternknotens ist.

Page 31: Anmerkungen zu XML Entwicklung/Anspruch von XML Character Data DTD vs. Schemata XSL vs. CSS Prof. Dr. Manfred Sommer Fachbereich Mathematik und Informatik

Sep. 2000 Anm. zu XML 31 XSL/XSLT Beispiel (1)

Für das folgende XML-Element wird auf den nächsten Folien eine passende Formatierung definiert.

Das Beispiel ist aus der W3C XSL Spezifikation.

<doc> <chapter><title>Chapter</title> <p>Text</p> <section><title>Section</title> <p>Text</p> </section> <section><title>Section</title> <p>Text</p> </section> </chapter> <chapter><title>Chapter</title> <p>Text</p> <section><title>Section</title> <p>Text</p> </section> <section><title>Section</title> <p>Text</p> </section> </chapter></doc>

Page 32: Anmerkungen zu XML Entwicklung/Anspruch von XML Character Data DTD vs. Schemata XSL vs. CSS Prof. Dr. Manfred Sommer Fachbereich Mathematik und Informatik

Sep. 2000 Anm. zu XML 32 XSL/XSLT Beispiel (2)

<?xml version='1.0'?><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" version='1.0'>

<xsl:template match="chapter"> <fo:block break-before="page"> <xsl:apply-templates/> </fo:block></xsl:template>

<xsl:template match="chapter/title"> <fo:block text-align="center" space-after="8pt" space-before="16pt" space-after.precedence="3"> <xsl:apply-templates/> </fo:block></xsl:template>...

XSLT – Definition:

Page 33: Anmerkungen zu XML Entwicklung/Anspruch von XML Character Data DTD vs. Schemata XSL vs. CSS Prof. Dr. Manfred Sommer Fachbereich Mathematik und Informatik

Sep. 2000 Anm. zu XML 33 XSL/XSLT Beispiel (3)

... <xsl:template match="section/title"> <fo:block text-align="center" space-after="6pt" space-before="12pt" space-before.precedence="0" space-after.precedence="3"> <xsl:apply-templates/> </fo:block></xsl:template>

<xsl:template match="p[1]" priority="1"> <fo:block text-indent="0pc" space-after="7pt" space-before.minimum="6pt" space-before.optimum="8pt" space-before.maximum="10pt"> <xsl:apply-templates/> </fo:block></xsl:template> ...

Page 34: Anmerkungen zu XML Entwicklung/Anspruch von XML Character Data DTD vs. Schemata XSL vs. CSS Prof. Dr. Manfred Sommer Fachbereich Mathematik und Informatik

Sep. 2000 Anm. zu XML 34 XSL/XSLT Beispiel (4)

... <xsl:template match="p"> <fo:block text-indent="2pc" space-after="7pt" space-before.minimum="6pt" space-before.optimum="8pt" space-before.maximum="10pt"> <xsl:apply-templates/> </fo:block></xsl:template>

</xsl:stylesheet>

Page 35: Anmerkungen zu XML Entwicklung/Anspruch von XML Character Data DTD vs. Schemata XSL vs. CSS Prof. Dr. Manfred Sommer Fachbereich Mathematik und Informatik

Sep. 2000 Anm. zu XML 35 XSL/XSLT Beispiel (5)

<fo:block break-before="page"> <fo:block text-align="center" space-after="8pt" space-before="16pt" space-after.precedence="3">Chapter </fo:block>

<fo:block text-indent="0pc" space-after="7pt" space-before.minimum="6pt" space-before.optimum="8pt" space-before.maximum="10pt">Text </fo:block>

<fo:block text-align="center" space-after="6pt" space-before="12pt" space-before.precedence="0" space-after.precedence="3">Section </fo:block>

<fo:block text-indent="0pc" space-after="7pt" space-before.minimum="6pt" space-before.optimum="8pt" space-before.maximum="10pt">Text </fo:block>...

Ergebnis-Format:

Page 36: Anmerkungen zu XML Entwicklung/Anspruch von XML Character Data DTD vs. Schemata XSL vs. CSS Prof. Dr. Manfred Sommer Fachbereich Mathematik und Informatik

Sep. 2000 Anm. zu XML 36 XSL/XSLT Beispiel (6)

... <fo:block text-align="center" space-after="6pt" space-before="12pt" space-before.precedence="0" space-after.precedence="3">Section </fo:block>

<fo:block text-indent="0pc" space-after="7pt" space-before.minimum="6pt" space-before.optimum="8pt" space-before.maximum="10pt">Text </fo:block></fo:block>

...

Page 37: Anmerkungen zu XML Entwicklung/Anspruch von XML Character Data DTD vs. Schemata XSL vs. CSS Prof. Dr. Manfred Sommer Fachbereich Mathematik und Informatik

Sep. 2000 Anm. zu XML 37 XSL/XSLT Beispiel (7)

... <fo:block break-before="page"> <fo:block text-align="center" space-after="8pt" space-before="16pt" space-after.precedence="3">Chapter </fo:block>

<fo:block text-indent="0pc" space-after="7pt" space-before.minimum="6pt" space-before.optimum="8pt" space-before.maximum="10pt">Text </fo:block>

<fo:block text-align="center" space-after="6pt" space-before="12pt" space-before.precedence="0" space-after.precedence="3">Section </fo:block> ...

Page 38: Anmerkungen zu XML Entwicklung/Anspruch von XML Character Data DTD vs. Schemata XSL vs. CSS Prof. Dr. Manfred Sommer Fachbereich Mathematik und Informatik

Sep. 2000 Anm. zu XML 38 XSL/XSLT Beispiel (8)

... <fo:block text-indent="0pc" space-after="7pt" space-before.minimum="6pt" space-before.optimum="8pt" space-before.maximum="10pt">Text </fo:block>

<fo:block text-align="center" space-after="6pt" space-before="12pt" space-before.precedence="0" space-after.precedence="3">Section </fo:block>

<fo:block text-indent="0pc" space-after="7pt" space-before.minimum="6pt" space-before.optimum="8pt" space-before.maximum="10pt">Text </fo:block></fo:block>

Page 39: Anmerkungen zu XML Entwicklung/Anspruch von XML Character Data DTD vs. Schemata XSL vs. CSS Prof. Dr. Manfred Sommer Fachbereich Mathematik und Informatik

Sep. 2000 Anm. zu XML 39 Diskussion (und Ende)

XML war einmal eine bestechende Idee ...

Heute verderben zu viele Köche den XML-Brei ...

HTML war gut für Textdokumente.

XML versucht die Struktur ganz allgemeiner Dokumente zu beschreiben – geht das mit denselben Hilfsmitteln.

XML sollte ganz einfach sein – Baumtransormationen etc. sind nicht ganz einfach...

Viele Details habe ich noch gar nicht diskutiert.