PowerPoint Show

Werbung
Queries 2: Transformationsmechanismen
für semistrukturierte Daten
Klemens Böhm
Interoperable Informationssysteme - 1
Transformation - Gliederung

Einleitung
CSS
XSL


XSLT
Formating
Objects
YAT

Einleitung
Cascading Stylesheets (CSS)
Extensible Stylesheet Language (XSL)
 Transformation
XSLT – XSL Transformations
 Formatobjekte
YAT
Klemens Böhm
Interoperable Informationssysteme - 2
Logische Struktur vs. Layout-Struktur

Einleitung
CSS
XSL
XSLT

Logische Dokumentbestandteile Elementtypen können
beliebige Bedeutung haben,
Layout-Struktur –
Darstellung des Dokuments.
Formating
Objects
YAT
Klemens Böhm
Interoperable Informationssysteme - 3
Architekturüberlegungen
Einleitung
CSS
XSL
XSLT
Formating
Objects
Client,
z.B. IE5.0
Client, insbes.
‘alte’ Browser
LayoutKonvert
.
YAT
Client
Konvert
.
Proxy/
Firewall
Konvert
.
LayoutKonvert
.
Server
Server
Client,
z.B. IE5.0
Server
Konvert
.
Server
Wann könnte serverseitige Konvertierung sinnvoll/vorteilhaft sein?
Klemens Böhm
Interoperable Informationssysteme - 4
Stylesheets für XML

Einleitung
CSS
XSL
XSLT
Formating
Objects
YAT

Beschreiben, wie Dokumente
mit irgendeinem Medium dargestellt werden
Es gibt zwei Sprachen
mit unterschiedlichen Fähigkeiten:
 CSS (‚Cascading Stylesheets‘) –
auch für HTML, keine Transformation,
 XSL –
auch Transformationen.
Klemens Böhm
Interoperable Informationssysteme - 5
CSS - Eigenschaften

Einleitung
CSS
XSL
XSLT
Formating
Objects
YAT




Komplementär zu strukturierten Dokumenten,
d.h. komplementär zur Dokumenterstellung,
plattformunabhängig,
einfach,
flexibel durch Cascading,
d.h. Kombination mehrerer Stylesheets,
erlaubt Einbettung von Scripts.
Klemens Böhm
Interoperable Informationssysteme - 6
Aufbau von CSS-Stylesheets

Begriffsbildung:
selector { property1: wert1; property2: wert2 }
Einleitung

Beispiel:
CSS
<HEAD>
<TITLE>CSS Example</TITLE>
<STYLE TYPE="text/css">
H1 { font-size: x-large; color: red }
H2 { font-size: large; color: blue }
</STYLE>
</HEAD>
XSL
XSLT
Formating
Objects
YAT
Klemens Böhm
Interoperable Informationssysteme - 7
Einbettung externer Stylesheets
Beispiel:
Einleitung
CSS
XSL
XSLT
Formating
Objects
YAT
<HEAD>
<TITLE>CSS Example</TITLE>
<LINK REL=StyleSheet HREF="style.css”
TYPE="text/css” MEDIA=screen>
<LINK REL=StyleSheet HREF="color-8b.css"
TYPE="text/css” TITLE="8-bit Color Style"
MEDIA="screen, print">
<LINK REL="Alternate StyleSheet"
HREF="color-24b.css” TYPE="text/css"
TITLE="24-bit Color Style" MEDIA="screen,
print">
<LINK REL=StyleSheet HREF="aural.css”
TYPE="text/css” MEDIA=aural>
</HEAD>
Klemens Böhm
Interoperable Informationssysteme - 8
Einbettung externer Stylesheets (2)

Einleitung

CSS
XSL
XSLT
Formating
Objects
YAT


Mehrere Stylesheets können einen Style definieren
(TITLE muss gleich sein).
REL=StyleSheet + TITLE
-> kommt zur Anwendung.
MEDIA-Wert falsch – Stylesheet wird ignoriert.
Alternate Style –
Idee ist, dass Benutzer es aktivieren kann,
Browser unterstützen es aber nicht.
Klemens Böhm
Interoperable Informationssysteme - 9
Beispiel für CSS-Stylesheet
golfplatz
Einleitung
{ display:
background-color:
border-width:
border-style:
margin:
CSS
padding:
XSL
XSLT
Formating
Objects
YAT
block;
#eeeeee;
thin;
solid;
0.75em 0.75em
0.75em 0.75em;
0.5em 0.5em
0.5em 0.5em;
}
adresse
{ display: block; }
saison
{ display: block;
font-style: italic;
}
greenfee, platz, telefon, fax, plz
{ display: none; }
club
{ font-size:
140%;
color:
blue;
font-weight:
bold;
display:
block;
}
Klemens Böhm
Interoperable Informationssysteme - 10
Pattern Matching mit CSS

Beispiel:
DIV H1 EM { font-size: x-large; color: red }
Einleitung
CSS

Erläuterung:
EM-Element in H1-Element in DIV-Element.
XSL
XSLT
Formating
Objects
YAT
Klemens Böhm
Interoperable Informationssysteme - 11
Cascading Order

Einleitung
CSS
XSL
XSLT
Formating
Objects
YAT

Im allgemeinen Fall
sind mehrere Ersetzungen anwendbar.
Welcher Selektor gewinnt im Konfliktfall?
 ‚!important‘-Label für Regeln,
 Autor-Regel vs. Leser-Regel
(Autor-Regel gewinnt),
 ‚Specificity‘,
 Reihenfolge (letzte Regel gewinnt).
Klemens Böhm
Interoperable Informationssysteme - 12
Konvertierung vs. Transformation (1)

Einleitung
CSS
XSL
XSLT
Formating
Objects
YAT

Konvertierung:
 Unterschied zwischen Layout
und logischer Dokumentstruktur
wurde bereits besprochen,
 Stylesheets beschreiben, wie Dokumente
mit irgendeinem Medium dargestellt werden.
D.h. sie ermöglichen Ableitung
von Layout-Struktur aus logischer Struktur.
Transformation: Erzeugung einer anderen Struktur
aus der Ausgangsstruktur
Klemens Böhm
Interoperable Informationssysteme - 13
Konvertierung vs. Transformation (2)

Einleitung
CSS
XSL

Gute Darstellung eines Dokuments erfordert
sowohl Transformation als auch Konvertierung.
DOM und SAX erfordern Programmierung,
XSL-Stylesheets sind deklarativ
und bewegen sich auf höherer Ebene.
XSLT
Formating
Objects
YAT
Klemens Böhm
Interoperable Informationssysteme - 14
Eigenschaften von XSL


Einleitung
CSS
XSL
XSLT
Formating
Objects
YAT



XSL verwendet XML Syntax,
unabhängig von einzelnem Dokument,
deklarativ,
erweiterbar
(Erweiterungen in Scripting Languages),
umfasst CSS-Funktionalität.
Klemens Böhm
Interoperable Informationssysteme - 15
XSL – Konzepte (1)

Einleitung
CSS
XSL
XSLT
XSL besteht aus zwei Teilen:
 Sprache für Dokumenttransformation,
 XML Vokabular
zur Spezifikation der Formatierung,
nicht obligatorisch.
Formating
Objects
YAT
Klemens Böhm
Interoperable Informationssysteme - 16
XSL – Konzepte (2)

Einleitung
CSS
XSL
XSLT
Formating
Objects
YAT

Sogenannte Template Rules
spezifizieren die Dokumenttransformation.
Template Rule besteht aus zwei Teilen:
 Pattern, das m. dem Source Tree
gematcht wird,
 Template, das instanziiert wird,
u. diese Instanziierung ist Teil des Result Trees.
 Höhere Wiederverwertbarkeit von XSL-Code.
Klemens Böhm
Interoperable Informationssysteme - 17
XSL Formatierungsprozess
CSS
XSL
Interpretation
=
Formating
Objects
The Times
New Roman
Browser
The Times
New Roman
PDF
XSLT
HTML
Transformation
Einleitung
Papier
YAT
Elementbaum
Klemens Böhm
Formatierungsobjekte Baum
(FOT)
JFC
XSL
Stylesheet
GUI
Treibersprache
Ausgabemedium
Interoperable Informationssysteme - 18
XSLT - Übersicht


Einleitung

CSS

XSL
XSLT

- Structural
Recursion
- value-of

- Template
Rules

- Conflicts
Structural Recursion,
Stylesheets,
Template Rules,
Conflict Resolution,
“Kontrollstrukturen”,
z.B. Schleife, bedingter Output
Variablen,
sonstige Features
(werden nur aufgelistet).
- Kontrollstrukturen
- Variablen
- Sonstiges
Formating
Objects
YAT
Klemens Böhm
Interoperable Informationssysteme - 19
Structural Recursion

Einleitung
CSS
XSL
XSLT
- Structural
Recursion


Mechanismus zur Beschreibung
komplexer Transformationen,
Alternative zu Datalog-Programmen.
Enger Zusammenhang
zwischen Structural Recursion und XSL.
- value-of
- Template
Rules
- Conflicts
- Kontrollstrukturen
- Variablen
- Sonstiges
Formating
Objects
YAT
Klemens Böhm
Interoperable Informationssysteme - 20
Structural Recursion – Beispiel

Finden aller Integer-Zahlen in der Datenbank.

Einleitung

CSS

XSL

XSLT
- Structural
Recursion
- value-of
- Template
Rules
- Conflicts
- Kontrollstrukturen
- Variablen

f1(v)
= if isInt(v) then
{result: v} else {}
f1({})
= {}
f1({l: t})
= f1(t)
f1(t1 union t2)
= f1(t1) union f1(t2)
Erläuterungen:
 Zugrundeliegendes Modell: OEM,
 Ergebnis ist Menge von Werten,
 v steht für Blattknoten,
 Innerer Knoten ist Menge seiner Teilbäume
plus Kanten.
- Sonstiges
Formating
Objects
YAT
Klemens Böhm
Interoperable Informationssysteme - 21
Structural Recursion – Beispiel

Konvertieren aller Integer-Werte in Strings.

Einleitung

CSS

XSL

XSLT
- Structural
Recursion
- value-of
- Template
Rules
- Conflicts

f2(v)
= if isInt(v) then
int2String(v) else v
f2({})
= {}
f2({l: t})
= {l: f2(t)}
f2(t1 union t2)
= f2(t1) union f2(t2)
Erläuterungen:
 Ergebnis ist Baum.
 Vier Fälle;
{} und t1 union t2 sind immer gleich.
- Kontrollstrukturen
- Variablen
- Sonstiges
Formating
Objects
YAT
Klemens Böhm
Interoperable Informationssysteme - 22
Structural Recursion –
weiteres Beispiel

Einleitung
CSS
XSL
XSLT
- Structural
Recursion
Konvertieren aller Integer-Werte in Strings,
aber nur innerhalb von book-Objekten.

f3(v)
= v

f3({})
= {}

f3({l: t})
= if l = book then
{l: g3(t)} else {l: f3(t)}

f3(t1 union t2)
= f3(t1) union f3(t2)
- value-of
- Template
Rules
- Conflicts
- Kontrollstrukturen
- Variablen




g3(v)
= if isInt(v) then
int2String(v) else v
g3({})
= {}
g3({l: t})
= {l: g3(t)}
g3(t1 union t2)
= g3(t1) union g3(t2)
- Sonstiges
Formating
Objects
YAT
Klemens Böhm
Interoperable Informationssysteme - 23
Einfaches Stylesheet (1)
Einleitung
CSS
XSL
<HTML><HEAD><TITLE>
<xsl:value-of select
="bookstore/book/title"/>
</TITLE></HEAD>
<BODY>Hello world.</BODY>
</HTML>
Template
XSLT
- Structural
Recursion
- value-of
- Template
Rules
- Conflicts
- Kontrollstrukturen
- Variablen
- Sonstiges
Formating
Objects
Erläuterungen:
 XSL-Stylesheets sind XML-Dokumente.
 xsl:value-of ist XSL-Kommando
XSL verwendet XML-Syntax
und Namespace-Mechanismus.
 Parameter select identifiziert das,
was ausgegeben werden soll.
 select-Parameter ist Pfad-Ausdruck.
YAT
Klemens Böhm
Interoperable Informationssysteme - 24
Einfaches Stylesheet (2)
Einleitung
Erläuterungen (Fortsetzung):
 Ergebnis ist nicht zwangsläufig HTML.
 Demo: http://dbs12/~boehm/books6.xml
CSS
XSL
XSLT
- Structural
Recursion
- value-of
- Template
Rules
- Conflicts
- Kontrollstrukturen
- Variablen
- Sonstiges
Formating
Objects
YAT
Klemens Böhm
Interoperable Informationssysteme - 25
XSL - Konzepte


Einleitung
Komplexe Suchmuster sind möglich.
Beispiele:
 <xsl:value-of select
="bookstore/*/title"/>
CSS
XSL
XSLT
 <xsl:value-of select ="//title"/>
- Structural
Recursion

- value-of
Auch Pfadausdrücke möglich, die ‘nach oben’
oder ‘zur Seite’ gehen.
- Template
Rules
- Conflicts
- Kontrollstrukturen
- Variablen
- Sonstiges
Formating
Objects
YAT
Klemens Böhm
Interoperable Informationssysteme - 26
XSL - Konzepte

Einleitung
CSS
XSL
XSLT
- Structural
Recursion
- value-of

Beispiel-Stylesheet von eben
verwendet value-of Konstrukt;
dieses Konstrukt allein
bringt nicht genügend Flexibilität.
Beispiel:
Wir wollen mehrere Elemente konvertieren,
z.B. alle Titel kursiv und alle Namen fett,
egal wo im Dokument sie vorkommen.
- Template
Rules
- Conflicts
- Kontrollstrukturen
- Variablen
- Sonstiges
Formating
Objects
YAT
Klemens Böhm
Interoperable Informationssysteme - 27
XSL - Konzepte

Einleitung

CSS
XSL
XSLT
- Structural
Recursion
- value-of
- Template
Rules
- Conflicts
- Kontrollstrukturen
- Variablen
- Sonstiges

Probleme der Folie von eben
sind Motivation für Template Rules.
Template Rules spezifizieren
die Dokumenttransformation.
Template Rule besteht aus zwei Teilen:
 Pattern, das mit dem Source Tree
gematcht wird,
 Template, das instanziiert wird,
und diese Instanziierung
ist Teil des Result Trees.
Template – Struktur, die den Output
des Transformationsschrittes spezifiziert.
Formating
Objects
YAT
Klemens Böhm
Interoperable Informationssysteme - 28
Patterns

Einleitung
CSS
XSL

Syntax von Patterns ist Teilmenge
der Syntax von (XPath-)Ausdrücken,
Location Paths können
(mit kleinen Einschränkungen)
als Patterns verwendet werden.
XSLT
- Structural
Recursion
- value-of
- Template
Rules
- Conflicts
- Kontrollstrukturen
- Variablen
- Sonstiges
Formating
Objects
YAT
Klemens Böhm
Interoperable Informationssysteme - 29
Template Rules
Einleitung
CSS
XSL
<xsl:template match=„title">
<I>
<xsl:apply-templates/>
</I>
</xsl:template>
Template
Pattern
XSLT
- Structural
Recursion
- value-of
- Template
Rules
- Conflicts
- Kontrollstrukturen
- Variablen
- Sonstiges
Formating
Objects
YAT
Klemens Böhm
Interoperable Informationssysteme - 30
Template Rules (1)
CSS
Erläuterungen:
 xsl:template gibt an,
dass es sich um Template Rule handelt.
 title ist das Pattern.
XSL

Einleitung
XSLT
- Structural
Recursion
- value-of
- Template
Rules

XSL-Interpreter bewegt sich durch das Dokument
und kennt aktuelle Position.
Das title-Element
muss Kind des aktuellen Patterns sein.
Patterns mit komplexerer Struktur sind möglich.
- Conflicts
- Kontrollstrukturen
- Variablen
- Sonstiges
Formating
Objects
YAT
Klemens Böhm
Interoperable Informationssysteme - 31
Template Rules (2)
Einleitung
CSS
XSL
XSLT
- Structural
Recursion
- value-of
Erläuterungen (Fortsetzung):
 Der lila unterlegte Teil ist das Template
und erscheint im Output-Dokument.
 I im Template ist HTML-Markup.
 xsl:apply-templates bedeutet
‚Transformiere Inhalt des aktuellen Elements
gemäss der Regel, die anwendbar ist‘.
Regelanwendung löst Anwendung weiterer Regel aus.
- Template
Rules
- Conflicts
- Kontrollstrukturen
- Variablen
- Sonstiges
Formating
Objects
YAT
Klemens Böhm
Interoperable Informationssysteme - 32
Vergleich mit ECA-Modell
aus aktiven Datenbanken


Event: XSL-Interpreter betrachtet Element.
Condition: Element ist vom Typ title.
Einleitung
CSS
XSL
XSLT
- Structural
Recursion

Action: Einschalten des Kursiv-Modus,
Anwendung weiterer Regeln auf die Kinder,
Ausschalten des Kursiv-Modus.
- value-of
- Template
Rules
- Conflicts
- Kontrollstrukturen
- Variablen
- Sonstiges
Formating
Objects
YAT
Klemens Böhm
Interoperable Informationssysteme - 33
XML-Dokument
mit Stylesheet-Referenz
Einleitung
CSS
XSL
XSLT
- Structural
Recursion
- value-of
-Template
Rules
- Conflicts
- Kontrollstrukturen
- Variablen
- Sonstiges
Formating
Objects
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl"
href="portfolio.xsl"?>
<portfolio xmlns:dt="urn:schemas-microsoftcom:datatypes" xml:space="preserve">
<stock exchange="nyse">
<name>zacx corp</name>
<symbol>ZCXM</symbol>
<price dt:dt="number">28.875</price>
</stock>
<stock exchange="nasdaq">
<name>zaffymat inc</name>
<symbol>ZFFX</symbol>
<price dt:dt="number">92.250</price>
</stock>
<stock exchange="nasdaq">
...
</stock>
</portfolio>
YAT
Klemens Böhm
Interoperable Informationssysteme - 34
Beispiel-Spreadsheet
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
Einleitung
CSS
XSL
XSLT
- Structural
Recursion
- value-of
- Template
Rules
- Conflicts
- Kontrollstrukturen
- Variablen
- Sonstiges
<xsl:template match="/">...
<HTML><HEAD><TITLE>Beispiel</TITLE></HEAD>
<BODY><xsl:apply-templates
select="node()"/></BODY>
</HTML>
</xsl:template>
<xsl:template match=„title">
<I>
<xsl:apply-templates/>
</I>
</xsl:template>
Formating
Objects
YAT
Klemens Böhm
Interoperable Informationssysteme - 35
Beispiel-Spreadsheet Fortsetzung
Einleitung
CSS
XSL
<xsl:template match="node()">
<xsl:copy>
<xsl:apply-templates select="node()"/>
</xsl:copy>
</xsl:template>
XSLT
- Structural
Recursion
- value-of
- Template
Rules
<xsl:template match="text()">
<xsl:value-of select=“.“/>
</xsl:template>
- Conflicts
- Kontrollstrukturen
</xsl:stylesheet>
- Variablen
- Sonstiges
Formating
Objects
YAT
Klemens Böhm
Interoperable Informationssysteme - 36
Beispiel-Dokument
Einleitung
CSS
XSL
XSLT
- Structural
Recursion
- value-of
- Template
Rules
- Conflicts
- Kontrollstrukturen
- Variablen
- Sonstiges
<?xml version='1.0’?>
<bookstore>
<book genre="autobiography">
<title>The Autobiography of
Benjamin Franklin</title>
<author>
<first-name>Benjamin</first-name>
<last-name>Franklin</last-name>
</author>
<price>8.99</price>
</book>
<book genre="novel">
…
</book>
</bookstore>
Formating
Objects
YAT
Klemens Böhm
Interoperable Informationssysteme - 37
Ergebnis der Transformation (1)
Einleitung
CSS
XSL
XSLT
- Structural
Recursion
<HTML><HEAD><TITLE>Beispiel</TITLE></HEAD>
<BODY><bookstore>
<book genre=„autobiography“>
- value-of
- Template
Rules
- Conflicts
- Kontrollstrukturen
- Variablen
- Sonstiges
Formating
Objects
YAT
Klemens Böhm
Interoperable Informationssysteme - 38
Ergebnis der Transformation (2)
Einleitung
CSS
XSL
XSLT
- Structural
Recursion
- value-of
- Template
Rules
<HTML><HEAD><TITLE>Beispiel</TITLE></HEAD>
<BODY><bookstore>
<book genre=„autobiography“>
<I>The autobiography
of Benjamin Franklin</I>
<author>
...
- Conflicts
- Kontrollstrukturen
- Variablen
- Sonstiges
Formating
Objects
YAT
Klemens Böhm
Interoperable Informationssysteme - 39
Erzeugen von Attributwerten und
Zugriff auf Attributwerte
Einleitung
CSS
XSL
XSLT
- Structural
Recursion
- value-of
-Template
Rules
- Conflicts
- Kontrollstrukturen
<xsl:for-each select="portfolio/stock">
<TR>
<xsl:attribute name="TITLE">
<xsl:value-of select="symbol"/>
is listed on the
<xsl:value-of select="@exchange"/>
stock exchange.
</xsl:attribute>
<TD><xsl:value-of select="symbol"/></TD>
<TD><xsl:value-of select="name"/></TD>
<TD><xsl:value-of select="price"/></TD>
</TR>
</xsl:for-each>
- Variablen
- Sonstiges
Formating
Objects
YAT
Klemens Böhm
Interoperable Informationssysteme - 40
Erzeugen von Elementen

Einleitung
CSS

XSL
XSLT
- Structural
Recursion
- value-of
-Template
Rules
- Conflicts
- Kontrollstrukturen
- Variablen
- Sonstiges

In vorangegangenen Beispielen
wurde das Element, das Teil der Zielstruktur ist,
direkt hingeschrieben.
Man kann Elementnamen
auch on-the-fly generieren.
Beispiel für die Verwendung
des entsprechenden Konstrukts
(namespace ist optionales Attribut):
<xsl:element
name = "DIV"
namespace = "http://…">
<!– Content: template -->
</xsl:element>
Formating
Objects
YAT
Klemens Böhm
Interoperable Informationssysteme - 41
Conflict Resolution

Einleitung

CSS
XSL
XSLT
- Structural
Recursion
- value-of
- Template
Rules
- Conflicts
- Kontrollstrukturen
- Variablen
- Sonstiges
Formating
Objects

Es kann i.a. sein, dass ein Knoten
mehrere Template Rules matcht.
Default Priority ist wie folgt:
 Importierte oder
inkludierte Regeln
haben niedrigere Priorität,
 Spezifischere Patterns
haben höhere Priorität
als weniger spezifische.
Beispiel: Test,
ob irgendein Knoten existiert,
ist weniger spezifisch als Test
für Knoten mit konkretem Namen.
Wenn es mehrere gleichberechtigte
Regeln gibt, ist dies ein Fehler.
YAT
Klemens Böhm
Interoperable Informationssysteme - 42
Das folgende Spreadsheet


Einleitung
erzeugt HTML-Liste der Bücher,
generiert HTML-Layout
für Bestandteile der Buchbeschreibungen.
CSS
XSL
XSLT
- Structural
Recursion
- value-of
- Template
Rules
- Conflicts
- Kontrollstrukturen
- Variablen
- Sonstiges
Formating
Objects
YAT
Klemens Böhm
Interoperable Informationssysteme - 43
Beispiel-Spreadsheet (1)
<xsl:stylesheet
xmlns:xsl=""http://www.w3.org/1999/XSL/Transform"">
Einleitung
CSS
XSL
XSLT
- Structural
Recursion
- value-of
- Template
Rules
- Conflicts
- Kontrollstrukturen
- Variablen
- Sonstiges
Formating
Objects
<xsl:template match="/">
<HTML>
<HEAD>
<TITLE>Bookstore Inventory</TITLE>
</HEAD>
<BODY>
<H1>Bookstore Inventory</H1>
<UL>
<xsl:for-each select="bookstore/book">
<LI><xsl:apply-templates /></LI>
</xsl:for-each>
</UL>
</BODY>
</HTML>
</xsl:template>
YAT
Klemens Böhm
Interoperable Informationssysteme - 44
Beispiel-Spreadsheet (2)
Einleitung
CSS
XSL
XSLT
- Structural
Recursion
- value-of
- Template
Rules
- Conflicts
- Kontrollstrukturen
- Variablen
- Sonstiges
Formating
Objects
<xsl:template match=„book">
<DIV>
<H2>
<xsl:value-of select="title"/>
</H2>
<xsl:apply-templates/>
</DIV>
</xsl:template>
<xsl:template match=„author">
<I><xsl:apply-templates /></I>
</xsl:template>
<xsl:template match="name">
<B><xsl:apply-templates /></B>
</xsl:template>
YAT
Klemens Böhm
Interoperable Informationssysteme - 45
Beispiel-Spreadsheet (3)
Einleitung
CSS
XSL
XSLT
<xsl:template match="node()">
<xsl:copy>
<xsl:apply-templates select="node()"/>
</xsl:copy>
</xsl:template>
- Structural
Recursion
- value-of
- Template
Rules
- Conflicts
- Kontrollstrukturen
- Variablen
<xsl:template match="text()">
<xsl:value-of select=“.“/>
</xsl:template>
</xsl:stylesheet>
- Sonstiges
Formating
Objects
YAT
Klemens Böhm
Interoperable Informationssysteme - 46
Ergebnis der Transformation (1)
Einleitung
CSS
XSL
XSLT
- Structural
Recursion
- value-of
- Template
Rules
<HTML>
<HEAD>
<TITLE>Bookstore Inventory</TITLE>
</HEAD>
<BODY>
<H1>Bookstore Inventory</H1>
...
- Conflicts
- Kontrollstrukturen
- Variablen
- Sonstiges
Formating
Objects
YAT
Klemens Böhm
Interoperable Informationssysteme - 47
Ergebnis der Transformation (2)
Einleitung
CSS
XSL
XSLT
- Structural
Recursion
- value-of
- Template
Rules
- Conflicts
- Kontrollstrukturen
<HTML>
<HEAD>
<TITLE>Bookstore Inventory</TITLE>
</HEAD>
<BODY>
<H1>Bookstore Inventory</H1>
<UL>
<LI>
<DIV>
<H2>
The Autobiography…
</H2>
...
- Variablen
- Sonstiges
Formating
Objects
YAT
Klemens Böhm
Interoperable Informationssysteme - 48
Ergebnis der Transformation (3)
Einleitung
CSS
XSL
XSLT
- Structural
Recursion
- value-of
- Template
Rules
- Conflicts
- Kontrollstrukturen
- Variablen
- Sonstiges
<HTML><HEAD>
<TITLE>Bookstore Inventory</TITLE>
</HEAD>
<BODY>
<H1>Bookstore Inventory</H1>
<UL><LI><DIV>
<H2>
The Autobiography…
</H2>
<I>
<first-name>Benjamin</first-name>
<last-name>Franklin</last-name>
</I>
<price>8.99</price>
</LI>...
Formating
Objects
YAT
Klemens Böhm
Interoperable Informationssysteme - 49
Sortierung und bedingter Output

Sortierung:
<xsl:for-each select=“bookstore/book”
order-by=“price”>
Einleitung
order-by=“author; - number(price)”
CSS
XSL
XSLT
- Structural
Recursion
- value-of
- Template
Rules
- Conflicts
- Kontrollstrukturen
- Variablen
- Sonstiges
Formating
Objects

Bedingter Output:
<xsl:if author=„@nationality[.=‚U.S.‘]“>*
</xsl:if>
<xsl:choose>
<xsl:when author=…>
<xsl:when author=…>
…
</xsl:choose>
YAT
Klemens Böhm
Interoperable Informationssysteme - 50
Templates mit Namen


Einleitung
CSS
XSL
XSLT
- Structural
Recursion
- value-of
-Template
Rules
- Conflicts
- Kontrollstrukturen
- Variablen
Templates mit Namen können direkt aufgerufen werden.
Beispiel: Kopieren von bestimmten Attributen in den
Zielbaum, unabhängig vom Elementtyp.
 Template-Definition:
<xsl:template name="apply-temp-copy-lang">
<xsl:for-each select="@xml:lang">
<xsl:copy/>
</xsl:for-each>
<xsl:apply-templates/> </xsl:template>

Aufruf:
<xsl:call-template name="apply-temp-copylang"/>
anstelle von
<xsl:apply-templates/>
- Sonstiges
Formating
Objects
YAT
Klemens Böhm
Interoperable Informationssysteme - 51
Variablen
Einleitung
Zwei Arten der Variablendefinition:
 Mittels select-Attribut:
 Variablendefinition:
<xsl:variable name="n" select="2"/> ...
CSS
 Verwendung
XSL
<xsl:value-of select="item[$n]"/>
XSLT
- Structural
Recursion
- value-of
-Template
Rules
- Conflicts
- Kontrollstrukturen
- Variablen
- Sonstiges
Formating
Objects
YAT
der Variablen:

Wert des select-Attributes ist Expression.
Variablenbelegung ergibt sich
durch Auswertung des Ausdrucks.
Über den Inhalt des xsl:variable-Elements:
 Variablendefinition:
<xsl:variable name="n">2</xsl:variable>
 Verwendung
der Variablen:
<xsl:value-of
select="item[position()=$n]"/>
Variable steht für Menge von Teilbäumen.
Klemens Böhm
Interoperable Informationssysteme - 52
Variablen – Beispiel (1/3)

Einleitung
CSS
XSL
XSLT
Ergebnis der Transformation:
Chapter
Chapter
Chapter
Chapter
A
B
C
D
(1/4)
(2/4)
(3/4)
(4/4)
- Structural
Recursion
- value-of
-Template
Rules
- Conflicts
- Kontrollstrukturen
- Variablen
- Sonstiges
Formating
Objects
YAT
Klemens Böhm
Interoperable Informationssysteme - 53
Variablen – Beispiel (2/3)
<xsl:variable name="totalChapters">
<xsl:value-of select="count(//chapter)"/>
</xsl:variable>
Einleitung
CSS
XSL
XSLT
- Structural
Recursion
- value-of
-Template
Rules
- Conflicts
- Kontrollstrukturen
- Variablen
<xsl:template match="/"> <TABLE>
<xsl:for-each select="//chapter">
<TR> <TD> <xsl:value-of select="."/>
<xsl:text> (</xsl:text>
<xsl:value-of select="position()"/>
<xsl:text> /</xsl:text>
<xsl:value-of select="$totalChapters"/>
<xsl:text> )</xsl:text>
</TD></TR> </xsl:for-each> </TABLE>
</xsl:template>
- Sonstiges
Formating
Objects
YAT
Klemens Böhm
Interoperable Informationssysteme - 54
Variablen – Beispiel (3/3)
Einleitung
Variablenzuweisung Alternative:
<xsl:variable name="totalChapters"
select='count(//chapter)'/>
CSS
XSL
XSLT
- Structural
Recursion
- value-of
-Template
Rules
- Conflicts
- Kontrollstrukturen
- Variablen
- Sonstiges
Formating
Objects
YAT
Klemens Böhm
Interoperable Informationssysteme - 55
Einbettung von DOM-Methoden
in XSL-Stylesheets

Einleitung
CSS
XSL
XSLT
- Structural
Recursion
- value-of
-Template
Rules
- Conflicts
- Kontrollstrukturen
- Variablen
- Sonstiges
Formating
Objects

Methodenaufruf im Stylesheet:
<xsl:eval>formatNumber(invoiceTotal(this),
"$#,##0.00")</xsl:eval>
Methodendefinition:
<xsl:script><![CDATA[
function invoiceTotal(invoice) {
items = invoice.selectNodes("items/item");
var sum = 0;
for (var item = items.nextNode(); item;
item = items.nextNode()) { …
return sum;
} …]]></xsl:script>
YAT
Klemens Böhm
Interoperable Informationssysteme - 56
Zusätzliche Features
Einleitung
CSS
XSL
Unter anderem:
 Import und Inkludierung von Stylesheets,
 Erzeugung von Processing Instructions
und Kommentaren.
XSLT
- Structural
Recursion
- value-of
-Template
Rules
Sowie low-level Features:

Whitespace Stripping,

Numerierung,
- Conflicts
- Kontrollstrukturen
- Variablen
- Sonstiges
Formating
Objects
YAT
Klemens Böhm
Interoperable Informationssysteme - 57
XSL - Schlussbemerkungen

Einleitung
CSS
XSL
XSLT
- Structural
Recursion
- value-of
-Template
Rules
- Conflicts
- Kontrollstrukturen
- Variablen
- Sonstiges
Formating
Objects

Zusammenfassung:
 Regelbasierter Mechanismus:
Aufbau der Regeln
 Regeln können geschachtelt sein.
 “Kontrollstrukturen”,
die Regelanwendung flexibler machen.
 Transformationen, z.B. Transformation
der Relationen aus Kapitel 1, sind möglich.
Fazit:
 XML allein kann HTML nicht ersetzen,
es braucht XSL-artige Mechanismen.
 XSL: Nicht in erster Linie Grundlage
für Anwendungsentwicklung,
obwohl erweiterbar,
Transformationsmechanismus
YAT
Klemens Böhm
Interoperable Informationssysteme - 58
XSL - LayoutBeschreibungsmechanismen

Einleitung
CSS

XSL
XSLT
Formating
Objects
YAT

Bisherige Beispiele:
Direkte Erzeugung von HTML aus XML;
Jetzt: Erzeugung einer ‚abstrakten‘,
plattformunabhängigen Beschreibung
des gelayouteten Dokuments.
XSL standardisiert das Vokabular
dieser Beschreibungssprache;
Implementierung als XML-Namespace.
Klemens Böhm
Interoperable Informationssysteme - 59
XSL Regelmodell – Formating Objects
<xsl:template
match="warnung">
Einleitung
CSS
XSL
XSLT
Formating
Objects
YAT
…
<warnung>
…
</warnung>
...
XML-Dokument
...
<fo:block
font-size="24pt"
font-family="serif”>
<xsl:text>
Warnung:
</xsl:text>
<xsl:applytemplates/>
</fo:block>
</xsl:template>
warnung
Regel
Muster
<fo:block
font-size
="24pt"
font-family
="serif”>
Warnung:
...
</fo:block>
Aktion
Plattformunabhängige
Beschreibung
...
Warnung:
...
...
...
Text zwischen <xsl:text>
und </xsl:text> wird explizit ausgegeben. ...
... ... ...
Klemens Böhm
Stylesheet
.
Interoperable Informationssysteme - 60
Formatting Objects

Einleitung
CSS

XSL
XSLT
Formating
Objects
YAT



XSL Spezifikation: Formatting is the process
of turning the result of an XSL transformation
into a tangible form for the reader or listener.
XSL Formatting Objects –
spezifizieren die Formatierung,
wichtige Struktur: area tree,
Beispiel für Formatting Objects: block –
block Formatting Object erlaubt die Erzeugung
einer Block-Level Area mit Textzeilen.
Beispiel: Schriftgrösse.
XSL legt nicht fest, wie genau das Formatting,
z.B. Zeilenumbruch, Letterspacing, Hyphenation,
implementiert sein muss, lediglich Constraints.
Klemens Böhm
Interoperable Informationssysteme - 61
Formatting Model


Einleitung

CSS
XSL
XSLT

Formating
Objects
YAT

Areas sind das Ergebnis des Formatting.
Areas reservieren Platz und nehmen Inhalt auf.
Areas können ein Koordinatensystem definieren
und andere Areas enthalten.
Formatting Object, durch das die Area erzeugt
wurde, spezifiziert Eigenschaften der Area
wie margin oder border.
Vier Arten von Areas
mit unterschiedlichen Eigenschaften:
regions, block-areas,
line-areas, und inline-areas,
(regions: eigenes Koordinatensystem, eigener
writing mode, im Gegensatz zu block-areas).
Klemens Böhm
Interoperable Informationssysteme - 62
XSL Beispiel
Stylesheet konstruiert Baum unter Verwendung
des Formatting Object Vocabulary.
Einleitung
CSS
XSL
XSLT
Formating
Objects
YAT
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/TR/WD-xsl”
xmlns:fo="http://www.w3.org/TR/WD-xsl/FO”
Wert dieses Attributs gibt Output des XSL Processors an.
result-ns="fo">
Ist mit IE5.0 immer XML (inkl. HTML).
<xsl:template match="/">
<fo:basic-page-sequence font-family="serif">
<xsl:apply-templates/>
</fo:basic-page-sequence> Regel ist für den
Wurzelknoten.
</xsl:template>
Regel ist für
<xsl:template match="para"> para-Elemente.
<fo:block font-size="10pt" spacebefore="12pt">
<xsl:apply-templates/>
para-Elemente werden
</fo:block>
Block Formatting Objects.
</xsl:template>
</xsl:stylesheet>
Klemens Böhm
Interoperable Informationssysteme - 63
XSL Beispiel

Ausschnitt aus XML-Dokument:
This is an <emph>important</emph>
point.

Regel matcht Elemente vom Typ emph
und erzeugt ein fo:inline-sequence
Formatting Object.
<xsl:template match="emph">
<fo:inline-sequence fontweight="bold">
<xsl:apply-templates/>
</fo:inline-sequence>
</xsl:template>
Einleitung
CSS
XSL
XSLT
Formating
Objects
YAT
Klemens Böhm
Interoperable Informationssysteme - 64
XSL - Zusammenfassung

Einleitung
CSS
XSL
XSLT
Formating
Objects

Konstrukte von XSLT:
 Template Rules,
 Kontrollstrukturen,
 Variablen,
Formating Objects.
YAT
Klemens Böhm
Interoperable Informationssysteme - 65
YAT

Einleitung
CSS

XSL
XSLT
Formating
Objects

YAT

System zur einfachen Manipulation von
Transformationsprogrammen,
Explizite Beschreibung des Inputs und
Outputs von Transformationsprogrammen,
YAT beinhaltet Typen von Datenstrukturen
(Mengen, Listen),
akademische Entwicklung (INRIA,
Frankreich, 1998).
Klemens Böhm
Interoperable Informationssysteme - 66
YAT
Einleitung
CSS
XSL
XSLT
Formating
Objects
Was für Features?
 Customization:
Programm wird automatisch in Spezifischeres
transformiert, das dann von Hand modifiziert
werden kann.
 Automatische Zusammensetzung von
Transformationsprogrammen.
YAT
Abfolge:
1. Modell vorstellen - erlaubt Vererbung,
2. Transformationssprache nicht speziell, wird aber gebraucht, um
Customization zu illustrieren,
3. Customization, Composition
Klemens Böhm
Interoperable Informationssysteme - 67
Modell

Einleitung
CSS
XSL

XSLT
Formating
Objects
YAT
- Modell


- Transform.
sprache
- Customiz.

Modell: Beschreibung dessen, was Input/Output
der Konvertierung sein kann, z.B. Schema, d.h.
Menge von Dokumenten, aber auch
(pathologischer Fall) einzelnes Dokument.
Modell besteht aus
Patterns und Wertebereichen der Variablen.
Fundamentaler Aspekt: Vererbung/Instanziierung.
Begriff ‘Instanziierung’ allgemeiner als im XMLKontext: Spezielleres Schema ist Instanz des
allgemeinen Schemas, nicht nur ‘Dokument ist
Instanz eines Schemas’.
Wichtig für Customization.
Klemens Böhm
Interoperable Informationssysteme - 68
Customizing
InputModell
Einleitung
CSS
Programm
OutputModell
XSL
XSLT
Formating
Objects
Instanziierung
Prog.‘
YAT
InputModell‘
- Modell
- Transform.
sprache
InputModell‘
- Customiz.
Customizing
Klemens Böhm
Interoperable Informationssysteme - 69
YAT - Modelle (1)
Car Schema - Modell:
Pcar:
class
Psup:
Einleitung
car
CSS
...
XSL
XSLT
name
desc
suppliers
S1: string
S2: string
set
*
&Psup
Formating
Objects
YAT
- Modell
- Transform.
sprache
- Customiz.




&Pcar
Kleinbuchstaben: Konstanten,
Grossbuchstaben: Variable,
fett: Patterns
‘*’ bedeutet, dass Kante in Instanziierung mehrmals
vorkommen darf.
Klemens Böhm
Interoperable Informationssysteme - 70
YAT - Modelle (2)
Einleitung
‘Golf’
Modell:
CSS
XSL
XSLT
c1:
class
s1:
...
s2:
...
car
Formating
Objects
YAT
- Modell
- Transform.
sprache
- Customiz.
name
desc
suppliers
“Golf”
“Der Golf
besticht
durch …”
set
Klemens Böhm
&s1
&s1
Interoperable Informationssysteme - 71
YAT - Modelle (3)
ODMG
Modell:
Pclass:
Einleitung
class
Class_name
*
Att
CSS
XSL
XSLT
Formating
Objects
Ptype
YAT
- Modell
- Transform.
sprache
- Customiz.
Ptype:
Y: Int  
String
tuple 
*
Att

Z: (set, list,
* bag, array)
Ptype
&Pclass
Ptype
Klemens Böhm
Interoperable Informationssysteme - 72
Erläuterungen

Einleitung
CSS

XSL
XSLT
Formating
Objects
YAT
- Modell
- Transform.
sprache
- Customiz.

Kanten-Labels sind Occurrence-Indicators
(kein explizites Label  genau 1).
Variablen:
Bei Instanziierung sind Einschränkungen
des Wertebereichs möglich,
z.B. ‘Int  String’  ‘String’,
Patterns: können in Blättern
Patterns oder Pattern-Referenzen enthalten
(Rekursion, Sharing + Zykel).
Klemens Böhm
Interoperable Informationssysteme - 73
Modell-Instanziierung
ODMG
Modell:
Pclass:
Ptype:
class
Class_name
*
Att
Einleitung
CSS
XSL
Y: Int  
String
tuple 
*
Att
Z: (set, list,  &Pclass
* bag, array)
Ptype
Ptype
Ptype
XSLT
Formating
Objects
YAT
- Modell
Pcar:
Psup:
car
- Transform.
sprache
- Customiz.
class
...
name
desc
suppliers
S1:
string
S2:
string
set
*
&Psup
Klemens Böhm
&Pcar
Interoperable Informationssysteme - 74
YAT - das allgemeinste Modell
YAT Modell:
Einleitung
CSS
XSL
XSLT
Formating
Objects
Yat:
L 
&Yat 
L
*
Yat
YAT
- Modell
- Transform.
sprache
- Customiz.
Klemens Böhm
Interoperable Informationssysteme - 75
Text-Syntax für Modelle
Einleitung
Pcar: class  car <  name  S1: String,
 desc  S2: String,
 suppliers  set *  &Psup>
CSS
XSL
XSLT
Formating
Objects
YAT
Psup: class  supplier <  name  S1: String,
 city  S2: String,
 zip  S3: String>
- Modell
- Transform.
sprache
- Customiz.
Klemens Böhm
Interoperable Informationssysteme - 76
DTD für Beispiel
<!DOCTYPE
<!ELEMENT
brochure [
brochure
--
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
number
title
model
desc
spplrs
supplier
name
address
---------
Einleitung
CSS
XSL
XSLT
Formating
Objects
YAT
- Modell
- Transform.
sprache
- Customiz.
Klemens Böhm
(number, title, model,
desc, spplrs)>
(#PCDATA)>
(#PCDATA)>
(#PCDATA)>
(#PCDATA)>
(sup)*>
(name, address)>
(#PCDATA)>
(#PCDATA)> ] >
Interoperable Informationssysteme - 77
Beispiel-Regel
Einleitung
CSS
XSL
XSLT
Psup(SN):
class  supplier
<  name  SN,
 city  C,
 zip  Z>
Formating
Objects
YAT
- Modell
- Transform.
sprache
Output-Pattern
entspricht
Supplier-Pattern.
- Customiz.

Pbr:
brochure <  number  Num,
 title  T,
 model  Year,
 desc  D,
 suppls * supplier
<  name  SN,
 address  Add >>,
Year > 1975,
C is city(Add),
Z is Zip(Add)
Input-Pattern
entspricht
Beispiel-DTD.
Klemens Böhm
Interoperable Informationssysteme - 78
Erläuterungen

Einleitung
CSS
XSL
XSLT
Formating
Objects
YAT
- Modell
- Transform.
sprache
- Customiz.

Body der Regel enthält nicht nur Pattern,
sondern auch
 Prädikate,
 Aufrufe externer Funktionen
für Umrechnungen.
Parametrisierter Pattern-Name
(hier ist ‘SN’ der Parameter von ‘Psup’),
Erzeugung eines Objekts
für jeden Wert von SN
(d.h. SN ist quasi Schlüsselattribut,
sonst undefiniertes Systemverhalten).
Klemens Böhm
Interoperable Informationssysteme - 79
Rule Processing - Abfolge
Einleitung
CSS
XSL
XSLT
Formating
Objects
YAT
- Modell
- Transform.
sprache
1. Pattern Matching für Rule Bodies
2. Evaluierung externer Funktionen
3. Evaluierung der Prädikate
4. Zuordnung von OIDs (der OutputStrukturen)
zu parametrisierten Pattern-Namen
(global für das ganze Programm)
5. Konstruktion der Output Patterns.
- Customiz.
Klemens Böhm
Interoperable Informationssysteme - 80
Beispiel-Regel 2
Einleitung
CSS
XSL
XSLT
Formating
Objects
Pcar(Pbr):
class  car
<  name  T,
 desc  D,
 suppliers
 set {} &Psup(SN)>
YAT
- Modell

Pbr:
brochure
<  number  Num,
 title  T,
 model  Year,
 desc  D,
 suppls * supplier
<  name  SN,
 address  Add>>
- Transform.
sprache
- Customiz.
Klemens Böhm
Interoperable Informationssysteme - 81
Erläuterungen

Einleitung
CSS
XSL
XSLT
Formating
Objects

Verwendung von Referenzen
Dereferenzierung wäre auch möglich, d.h.
in der Regel stünde ‘set {} Psup(SN)’,
und statt einer Referenz
erhielte man eine Kopie des Teilbaums;
Erzeugung von Mengen von Söhnen.
YAT
- Modell
- Transform.
sprache
- Customiz.
Klemens Böhm
Interoperable Informationssysteme - 82
Typing
Einleitung
CSS
XSL
XSLT
Programm: Modell  Modell
Aussagen über Typen anhand von
 Input-/Output-Patterns,
 Signaturen von Prädikaten und Funktionen,
 Wertebereiche von Variablen.
Formating
Objects
YAT
- Modell
- Transform.
sprache
- Customiz.
Nutzen von Typing:
 Kombinierbarkeit von Programmen
 Zusammenhang zwischen Input- und
Output-Modellen von Programmen, z.B.
‘Ist _ Generalisierung von _?’,
 Customizing von Programmen.
Klemens Böhm
Interoperable Informationssysteme - 83
Beispiel für Customizing - Regeln
Einleitung
CSS
XSL
XSLT
Formating
Objects
YAT
- Modell
- Transform.
sprache
- Customiz.
HtmlPage(Pclass):
html<  head  title  Classname,
 body< h1  Classname,
 ul * li
<  Att2,
 HtmlElement(Ptype)>>>

Pclass:
class  Classname * Att  Ptype,
Att2 is concat(Att, “ : “)
HtmlElement(Ptype): S
 Ptype: Data,
S is data_to_string(Data)
Für jede Klasse
ein HTMLDokument.
Explizite
Typisierung,
z.B. Variable X
HtmlElement(Ptype):
ul * li  HtmlElement(P2: Ptype)>

Ptype:
X: {set, bag} * P2: Ptype>
Weitere Regeln für andere
Bestandteile des ODMG-Modells
Klemens Böhm
Interoperable Informationssysteme - 84
Beispiel (Fortsetzung 1)
HtmlPage(Pclass):
html<  head  title  car,
 body<  h1  car,
 ul<  li<
Einleitung
 li<
CSS
XSL
 li<
XSLT
Formating
Objects
YAT

 “name: “,
 T1>,
 “age: “,
 D1>,
 “suppliers: “,
 ul * li  a
<  href  &HtmlPage(Psup),
 cont  Classname>>>>>
Pcar:
class  car <  name  T,
 desc  D,
 suppliers  set * &Psup>,
Psup:
class  Classname  P2: Ptype,
T1 is data_to_string(T),
D1 is data_to_string(D)
- Modell
- Transform.
sprache
- Customiz.
Diese Regel wird aus den vorhandenen Regeln
und dem Input-Modell automatisch erzeugt.
Klemens Böhm
Interoperable Informationssysteme - 85
Beispiel (Fortsetzung 2)
Einleitung
HtmlPage(Pclass):
html<  head  title  car,
 body
<  h1  car,
 ul<  li<
CSS
 li<
XSL
XSLT
Formating
Objects

 “name: “,
 T1>,
 “age: “,
 D1>>>>
Pcar:
class  car
<  name  T,
 desc  D,
 suppliers  set * &Psup>,
T1 is data_to_string(T),
D1 is data_to_string(D)
YAT
- Modell
- Transform.
sprache
- Customiz.
Automatisch erzeugte Regel lässt sich von Hand anpassen.
Besser, als Programm neu schreiben zu müssen.
Klemens Böhm
Interoperable Informationssysteme - 86
Composition

Einleitung

Automatische Generierung eines Programms aus
zwei oder mehr existierenden,
Benutzer kann es dann wieder anpassen.
CSS
XSL
XSLT
Formating
Objects
YAT
- Modell
- Transform.
sprache
- Customiz.
Klemens Böhm
Interoperable Informationssysteme - 87
Zusammenfassung YAT

Einleitung
CSS
XSL
XSLT
Formating
Objects


“Entwicklungsumgebung” für
Transformationsprogramme,
Input-/Output-Modelle,
Customization und Kombinierbarkeit von
Transformationsprogrammen.
YAT
- Modell
- Transform.
sprache
- Customiz.
Klemens Böhm
Interoperable Informationssysteme - 88
Herunterladen