Ebene3 - Datenbanken - Martin-Luther-Universität Halle

Werbung
Aufbau Integrierter
Informationssysteme
XML Bearbeitung und relationale Abbildung
• Sven Dammann
• Martin-Luther-Universität Halle-Wittenberg
Hauptseminar - Halle - 6. Februar 2002
© 2001 Sven Dammann
1
Gliederung
1.
Einleitung
1.1. XML und Datenbanken
1.2. XML Dokument
1.3. Document Type Definition
2.
XML Schema
2.1. Schema Aufbau
2.2. Tabellenmodellierung
2.3. Referentielle Integrität
3.
Datenbank-Operationen mit XML-Sprachen
3.1. Selektion und Projektion mit Xpath
3.2. Transformation mit XSLT
4.
Zusammenfassung
© 2001 Sven Dammann
2
XML und Datenbanken: Möglichkeiten
Middleware
XML-Enabled Databases
•Software
zum Transferieren
von Daten
zwischen
•Datenbanken
mit
Erweiterungen,
um
Daten
Native XML Databases
XML-Dokumenten
und Datenbanken
zwischen
XML-Dokumenten
und diesen
Daten•Datenbanken, die XML-Dokumente
in ihrer
XML-Server
banken
zuForm
transferieren
„nativen“
speichern (Erhalt der Struktur des
•Plattformen,
die
Daten
in Form von XML-DokuXMLDokuments)
Application
Server
XMLmenten an verteilte Anwendungen senden und von
Content
Management
Systems (e-commerce,
diesen
Anwendungen
empfangen
•Web Applikationen
Server,
die XML an Browser
•Systeme
zum
Speichern,
Wiederfinden
und
B2B-Applikationen)
verschicken
Zusammenstellen von Dokumenten aus
Dokumentfragmenten
Einleitung
XML Schema
© 2001 Sven Dammann
Xpath
XSLT
Zusammenfassung
3
XML: Verarbeitung
• Anwendungen, die XML verarbeiten benötigen drei Dateien:
– XML-Dokument
– DTD (Document Type Definition) oder XML Schema
– XSL-Stylesheet
• XML-Dokument nach Regeln der DTD o. XML Schema
aufgebaut
• DTD o. XML-Schema legt logische Struktur fest
• XSL-Stylesheet zur Darstellung (z.B. im Browser)
Einleitung
XML Schema
© 2001 Sven Dammann
Xpath
XSLT
Zusammenfassung
4
XML-Dokument: Aufbau
XML-Dokument: Aufbau
<?xml version=„1.0“?>
<beispiel
xmlns:xsi=...
<!DOCTYPE beispiel
SYSTEM xsi:noName
"beispiel.dtd">
<beispiel>
spaceSchemaLocation=„beispiel.xsd">
...untergeordnete Elemente
</beispiel>
<beispiel></beispiel>
identisch mit
<beispiel/>
Einleitung
XML Schema
© 2001 Sven Dammann
Xpath
XSLT
Zusammenfassung
5
XML: Baumstruktur
<Wurzel>
<Ebene1>
<Blatt1/>
<Blatt1/>
<Ebene2>
<Ebene3>
<Blatt4/>
</Ebene3>
<Blatt3/>
<Ebene3>
<Blatt4/>
<Ebene4>
<Blatt5/>
<Blatt5/>
</Ebene4>
<Blatt4/>
<Blatt4/>
<Ebene4>
<Blatt5/>
<Blatt5/>
</Ebene4>
</Ebene3>
<Blatt3/>
<Ebene3>
<Blatt4/>
</Ebene3>
</Ebene2>
<Blatt1/>
<Blatt1/>
</Ebene1>
</Wurzel>
Einleitung
XML Schema
© 2001 Sven Dammann
Xpath
XSLT
Zusammenfassung
6
DTD: Beispiel
<Wurzel>
<Ebene1>
<Blatt1/>
<Blatt1/>
<Ebene2>
<Ebene3>
<Blatt4/>
</Ebene3>
<Blatt3/>
<Ebene3>
<Blatt4/>
<Ebene4>
<Blatt5/>
<Blatt5/>
</Ebene4>
<Blatt4/>
<Blatt4/>
<Ebene4>
<Blatt5/>
<Blatt5/>
</Ebene4>
</Ebene3>
<Blatt3/>
<Ebene3>
<Blatt4/>
</Ebene3>
</Ebene2>
<Blatt1/>
<Blatt1/>
</Ebene1>
</Wurzel>
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT Blatt1 (#PCDATA)>
<!ELEMENT Blatt3 (#PCDATA)>
<!ELEMENT Blatt4 (#PCDATA)>
<!ELEMENT Blatt5 (#PCDATA)>
<!ELEMENT Ebene1 (#PCDATA | Blatt1 | Ebene2)*>
<!ELEMENT Ebene2 (#PCDATA | Blatt3 | Ebene3)*>
<!ELEMENT Ebene3 (#PCDATA | Blatt4 | Ebene4)*>
<!ELEMENT Ebene4 (#PCDATA | Blatt5)*>
<!ELEMENT Wurzel (#PCDATA | Ebene1)*>
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT Blatt1 EMPTY>
<!ELEMENT Blatt3 EMPTY>
<!ELEMENT Blatt4 EMPTY>
<!ELEMENT Blatt5 EMPTY>
<!ELEMENT Ebene1 (Blatt1 | Ebene2)+>
<!ELEMENT Ebene2 (Ebene3 | Blatt3)+>
<!ELEMENT Ebene3 (Blatt4 | Ebene4)+>
<!ELEMENT Ebene4 (Blatt5+)>
<!ELEMENT Wurzel (Ebene1)>
Einleitung
XML Schema
© 2001 Sven Dammann
Xpath
XSLT
Zusammenfassung
7
DTD: Nachteile
• Nur ein Datentyp
• Sicherung referentieller Integrität nur sehr eingeschränkt über
Definition von „ID“ und „IDREF“möglich
XML Schema
Einleitung
XML Schema
© 2001 Sven Dammann
Xpath
XSLT
Zusammenfassung
8
XML Schema
Einleitung
XML Schema
© 2001 Sven Dammann
Xpath
XSLT
Zusammenfassung
9
XML-Schema: Aufbau
XML-Schema: Aufbau
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema">
...Definition von Elementen ...
</xs:schema>
Einleitung
XML Schema
© 2001 Sven Dammann
Xpath
XSLT
Zusammenfassung
10
Beispieldatenbank: Company
emp
n
n
1
empno
ename
job
7839
King
President
7698
Blake
Manager
7654
Martin
7900
James
mgr
sal
deptnr
5000
10
7839
2850
30
Salesman
7698
1250
30
Clerk
7698
950
20
1
Einleitung
dept
deptno
dname
loc
10
Accounting
New York
20
Research
Dallas
30
Sales
Chicago
XML Schema
© 2001 Sven Dammann
Xpath
XSLT
Zusammenfassung
11
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="company">
<xs:complexType>
<xs:sequence>
<xs:element name="dept" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="deptno" type="xs:double"/>
<xs:attribute name="dname" type="xs:string"/>
<xs:attribute name="loc" type="xs:string"/>
</xs:complexType>
<xs:key name="dept_deptno">
<xs:selector xpath="company/dept"/>
<xs:field xpath="@deptno"/>
</xs:key>
</xs:element>
<xs:element name="emp" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="empno" type="xs:double"/>
<xs:attribute name="ename" type="xs:string"/>
<xs:attribute name="job" type="xs:string"/>
<xs:attribute name="mgr" type="xs:double"/>
<xs:attribute name="sal" type="xs:double"/>
<xs:attribute name="deptnr" type="xs:double"/>
</xs:complexType>
<xs:keyref name="emp_deptnr" refer="dept_deptno">
<xs:selector xpath="company/emp"/>
<xs:field xpath="@deptnr"/>
</xs:keyref>
<xs:key name="emp_empno">
<xs:selector xpath="company/emp"/>
<xs:field xpath="@empno"/>
</xs:key>
<xs:keyref name="emp_mgr" refer="emp_empno">
<xs:selector xpath="company/emp"/>
<xs:field xpath="@mgr"/>
</xs:keyref>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Einleitung
XML Schema
© 2001 Sven Dammann
Xpath
XML Schema: Bsp
<xs:element name=„...“>
•Definiert
Elemente (Markups)
<xs:complexType>
•‚name‘ entspricht dem Tag-Namen des
•Definiert den
Inhalt zwischen dem
<xs:sequence>
XML-Dokumentes
Start- undvon
End-Tag
•Angabe
Minimal-und
Maximal<xs:attribute
name=„...“
type=„...“>
•Definiert
eine
Folge
vonInhalt
Elementen
•complexType
kann
als
weitere
grenzen
möglich
•Reihenfolge
ist
zwingend
Elemente
enthalten
•Definiert
die
Attribute
des
<xs:key
name=„...“>
•Andere
Möglicjkeit:
choice
(Auswahl)
•Definition
von
eigenen
SimpleTypes
übergeordneten Elementes
oder group
(Gruppe)
•Definiert
einen
Primärschlüssel
‚Name‘
<xs:keyref
name=„...“
refer=„...“>
•,name‘ möglich
entspricht
dem Attribut-Namen
•„selector“
definiert den Pfad im XMLim XML-Dokument
•Definiert
einender
Fremdschlüssel
Dokument
Schlüssel
liegt‚Name‘
•Zwingendewo
Angabe
eines Datentyps
•„refer“
gibt den
den Knoten
zu referenzierenden
•„field“ legt
fest, der der
Schlüssel
an
Schlüssel ist
•„selector“ und „field“ legt die Position
des Knotens fest, dessen Wert zu
überprüfen ist
XSLT
Zusammenfassung
12
XML–Datei: personal.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="personal.xsl"?>
<company xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="personal.xsd">
<dept deptno="10" dname="Accounting" loc="New York"/>
<dept deptno="20" dname="Research" loc="Dallas"/>
<dept deptno="30" dname="Sales" loc="Chicago"/>
<emp empno="7839" ename="King" job="President" mgr="" sal="5000" deptnr="10"/>
<emp empno="7698" ename="Blake" job="Manager" mgr="7839" sal="2850" deptnr="30"/>
<emp empno="7654" ename="Martin" job="Salesman" mgr="7698" sal="1250" deptnr="30"/>
<emp empno="7900" ename="James" job="Clerk" mgr="7698" sal= "950" deptnr="20"/>
</company>
Einleitung
XML Schema
© 2001 Sven Dammann
Xpath
XSLT
Zusammenfassung
13
Referentielle Integrität
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="company">
<xs:complexType>
<xs:sequence>
<?xml version="1.0" encoding="UTF-8"?>
<xs:element name="dept" minOccurs="0" maxOccurs="unbounded">
<?xml-stylesheet type="text/xsl" href="personal.xsl"?>
<xs:complexType>
<company xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
<xs:attribute name="deptno" type="xs:double"/>
xsi:noNamespaceSchemaLocation="personal.xsd">
<xs:attribute name="dname" type="xs:string"/>
<xs:attribute name="loc" type="xs:string"/> <dept deptno="10" dname="Accounting" loc="New York"/>
</xs:complexType>
<dept deptno="20" dname="Research" loc="Dallas"/>
<xs:key name="dept_deptno">
<dept deptno="30" dname="Sales" loc="Chicago"/>
<xs:selector xpath="company/dept"/>
<emp empno="7839" ename="King" job="President" mgr="" sal="5000" deptnr="10"/>
<xs:field xpath="@deptno"/>
<emp empno="7698" ename="Blake" job="Manager" mgr="7839" sal="2850" deptnr="30"/>
</xs:key>
<emp empno="7654" ename="Martin" job="Salesman" mgr="7698" sal="1250" deptnr="30"/>
</xs:element>
<emp empno="7900" ename="James" job="Clerk" mgr="7698" sal="950" deptnr="20"/>
<xs:element name="emp" minOccurs="0" maxOccurs="unbounded">
</company>
<xs:complexType>
<xs:attribute name="empno" type="xs:double"/>
<xs:attribute name="ename" type="xs:string"/>
<xs:attribute name="job" type="xs:string"/>
<xs:attribute name="mgr" type="xs:double"/>
<xs:attribute name="sal" type="xs:double"/>
<xs:attribute name="deptnr" type="xs:double"/>
</xs:complexType>
<xs:keyref name="emp_deptnr" refer="dept_deptno">
<xs:selector xpath="company/emp"/>
<xs:field xpath="@deptnr"/>
</xs:keyref>
<xs:key name="emp_empno">
<xs:selector xpath="company/emp"/>
<xs:field xpath="@empno"/>
</xs:key>
<xs:keyref name="emp_mgr" refer="emp_empno">
<xs:selector xpath="company/emp"/>
<xs:field xpath="@mgr"/>
</xs:keyref>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Einleitung
XML Schema
© 2001 Sven Dammann
Xpath
XSLT
Zusammenfassung
14
XML-Schema: Simple Types
• Vorteile durch Definition eigener Datentypen
• Einschränkung mittels Regulären Ausdrücken
<xsd:simpleType name="SKU">
<xsd:restriction base="xsd:string">
<xsd:pattern value="\d{3}-[A-Z]{2}"/>
</xsd:restriction>
</xsd:simpleType>
•
Im Beispiel: Alle Werte 999-XX (drei Ziffern gefolgt von „-“ und zwei
Großbuchstaben
Einleitung
XML Schema
© 2001 Sven Dammann
Xpath
XSLT
Zusammenfassung
15
XML-Schema: warum?
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="personal.xsl"?>
<company ...>
<dept deptno="10" dname="Accounting" loc="New York"/>
...
<emp empno="7839" ename="King" job="President" mgr="" sal="5000" deptnr="10"/>
...
</company>
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="personal.xsl"?>
<company ...>
<dept>
<deptno>10</deptno>
<dname>Accounting</dname>
<loc>New York</loc>
</dept>
...
<emp>
<empno>7839</empno>
<ename>King</ename>
<job>President</job>
<mgr></mgr>
<sal>5000</sal>
<deptnr>10</deptnr>
</emp>
...
</company>
Anwendung 1
DB
Anwendung 2
Einleitung
XML Schema
© 2001 Sven Dammann
Xpath
XSLT
Zusammenfassung
16
Selektion und Projektion mit XPath
Einleitung
XML Schema
© 2001 Sven Dammann
Xpath
XSLT
Zusammenfassung
17
Datenbankoperationen: XSL
XSL
XPath
XSLT
XSL-FO
• XSL - eXtensible Stylesheet Language
• Transformation bestehender Quelldokumente
• Xpath - XML Path Language
• Selektion von Teilen des XML-Quelldokumentes
• XSLT - XSL Transformation
• Teil zur Transformation des Quelldokumentes
• XSL-FO - XSL Formatting Objects
• Informationen zur Darstellung
Einleitung
XML Schema
© 2001 Sven Dammann
Xpath
XSLT
Zusammenfassung
18
Xpath: Pfad Ausdrücke
Pfadbaustein (Grundgerüst):
achse::knoten-test[prädikate]
Pfad Ausdrücke
• Selektion von Resultats-Knotenmengen aus dem Quell-XML-Baum
•Pfad kann aus mehreren Bausteinen
bestehen
•Bausteine durch „/“ getrennt
Achse
•Gibt Baumbeziehungen
Knoten-Test
zwischen zu selektierenden
•Gibt Knotentyp
und Namen
Prädikate
Knoten und Kontextknoten
der zu selektierenden
an •Weitere Verfeinerung der
Knoten an
selektierten Knotenmenge
•optional
Einleitung
XML Schema
© 2001 Sven Dammann
Xpath
XSLT
Zusammenfassung
19
Xpath: Baumbeziehungen
Descendant-or-Self
Preceding-Sibling
Following-Sibling
Ancestor-or-Self
Descedant
Preceding
Following
Ancestor
Parent
Child
Self
•Kontextknoten
•Das
•Alle
•Aktueller
Abkömmlinge
direkten
Vorfahren
K.
auf
folgenden
Elternelement
die
den
Knoten
imKontextKinder
Dokudes
Brüder
& alle
des
Kontextknoten
eines
Kontextknoten
ment
knoten
des
(Kontextknoten)
Abkömmlinge
seine
Kontextknoten
vor
Kontextknotens
Vorfahren
folgenden
dem Kontextselbst
Elem.
knoten kommen
•Syntax
•Beispiel
Einleitung
: following::Elementname
following-sibling::Elementname
child::Elementname
parent::Elementname
ancestor::Elementname
descendant::Elementname
preceding::Elementname
preceding-sibling::Elementname
self::node()
ancestor-or-self::Elementname
descendant-or-self::Elementname
: alle
das
Auswahl
Kinder
Vorfahren
Nachfahren
einem
folgenden
Elternelement
Elemente
des
Kontextknoten
eines
Knotens
„Blatt1“
eines
Elemente
Brüder
eines
Knotens,
eines
Kontextknotens
Kontext-Elementes
die
des
Kontextknotens,
„Ebene1“
„Blatt1“
Kontextknoten,
„Blatt3“
vorangegangenen
Dokuments
die „Blatt4“
eines
heißen
Kontextknoten
heißen
die
inkl.
daß
„Ebene3“
Elemente
„Wurzel“
dem Element
heißen
heißt
„Blatt2“
selbst
vorherigen
Brüder
„Ebene3“
Kontextknotens
ancestor::*
descendant::Ebene3
preceding::Blatt2
following::Blatt1
following-sibling::Blatt3
preceding-sibling::Ebene3
ancestor-or-self::*
child::Blatt4
parent::Wurzel
child::Ebene1/self::node()
descendant-or-self::Blatt1
verkürzt:
verkürzt: Blatt4
parent::node()
verkürzt: //Blatt1
Ebene1/.
= ..
XML Schema
© 2001 Sven Dammann
Xpath
XSLT
<Wurzel>
<Ebene1>
<Blatt1/>
<Blatt1/>
<Ebene2>
<Ebene3>
<Blatt4/>
</Ebene3>
<Blatt3/>
<Ebene3>
<Blatt4/>
<Ebene4>
<Blatt5/>
<Blatt5/>
</Ebene4>
<Blatt4/>
<Blatt4/>
<Ebene4>
<Blatt5/>
<Blatt5/>
</Ebene4>
</Ebene3>
<Blatt3/>
<Ebene3>
<Blatt4/>
</Ebene3>
</Ebene2>
<Blatt1/>
<Blatt1/>
</Ebene1>
</Wurzel>
Zusammenfassung
20
Xpath: Ablauf
AAA
CCC/BBB/EEE
child::CCC /child::BBB/child::EEE
BBB
CCC
Ergebnis Node-Set: ( <EEE/> ; <EEE/> )
DDD
//BBB
descendant-or-self::BBB
BBB
EEE
BBB
Node-Set:
DDD
BBB
EEE
( <BBB/>; <BBB>; <BBB/>; <BBB/>)
EEE
GGG
-Knoten des Baumes
-Mögliche Knoten
-Treffer
Einleitung
XML Schema
© 2001 Sven Dammann
Xpath
XSLT
Zusammenfassung
21
Xpath: Selektion & Projektion mit Prädikaten
Wie heißen die Mitarbeiter mit einem Gehalt kleiner 2850?
• Relationale Algebra:
ename (sal < 2850 (emp))
• Schritt 1: Wähle alle „emp“-Knoten deren Inhalt ihres
„sal“-Attributs kleiner als 2850 ist
• Schritt 2: Wähle von diesen „emp“-Knoten das Attribut „ename“
descendant-or-self::emp[attribute::sal < 2850]/attribute::ename
Ergebnis Knoten-Set: (Martin ; James)
//emp[@sal < 2850]/@ename
Einleitung
XML Schema
© 2001 Sven Dammann
Xpath
XSLT
Zusammenfassung
22
Xpath: Weitere Funktionen
• Xpath bietet umfangreiche Funktionsbibliothek
• Meist Verwendung in Prädikaten
Allgemeine Funktionen
String-Funktionen
•number last(): entspricht Größe
des Kontexts (das letzte Element)
•number position(): gibt die Kontext-Position an
Boolsche-Funktionen
•numbercount(node
string-length(string?):
Längeindes
•number
set): Anzahl liefert
der Knoten
derStrings
Argumentmenge
•boolean starts-with(string, string): true, wenn 1. Argument mit 2. Argument
Zahlen-Funktionen
•boolean boolean(object): Konvertierung
unterschiedlicher Objekttypen
beginnt
nach boolean
•boolean
contains(string,
string):
true, wenn 1.des
Argument
das 2.Argument
•number
number(object?):
Konvertierung
angegebenen
Objekts nach
•boolean
not(boolean):
Negierung
des
angegebenen
Wertes
beinhaltet
numbertrue(): liefert true
•boolean
•number sum(node-set): Aufsummierung von Argument-Knoten des Typs
number
Einleitung
XML Schema
© 2001 Sven Dammann
Xpath
XSLT
Zusammenfassung
23
Transformation mit XSLT
Einleitung
XML Schema
© 2001 Sven Dammann
Xpath
XSLT
Zusammenfassung
24
XSLT: Aufbau
XSLT-Dokument: Aufbau
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www../1999/XSL/Transform>
...Definition von Templates ...
</xsl:stylesheet>
Einleitung
XML Schema
© 2001 Sven Dammann
Xpath
XSLT
Zusammenfassung
25
XSLT: Templates
XSLT: Template Grundgerüst
<xsl:template match=„Xpath Ausdruck“>
...Definition von Regeln ...
</xsl:template>
• Templates geben an, wie ein bestimmter Knotentyp
zu transformieren ist
• innerhalb des Templates weitere Templates aufrufbar
 Rekursionen abbildbar
Einleitung
XML Schema
© 2001 Sven Dammann
Xpath
XSLT
Zusammenfassung
26
XSLT: Beispiel
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:output method="html"/>
<xsl:template match="/">
<html>
<head>
<title>Personal-Relation</title>
</head>
<body>
<table border="1">
<tr>
<th>DeptNo</th>
<th>Dname</th>
<th>Loc</th>
</tr>
<xsl:apply-templates/>
</table>
</body>
</html>
</xsl:template>
<xsl:template match="//dept">
<tr>
<xsl:for-each select="@*">
<td>
<xsl:choose>
<xsl:when test="string-length(.) = 0">---</xsl:when>
<xsl:otherwise><xsl:value-of select="."/></xsl:otherwise>
</xsl:choose>
</td>
</xsl:for-each>
</tr>
</xsl:template >
</xsl:stylesheet>
Einleitung
XML Schema
© 2001 Sven Dammann
Xpath
XSLT
Zusammenfassung
27
Xpath und XSLT
Ablauf einer Transformation
Quelldokument
Ergebnis
Node-Sets
(DOM(DOMRepräsentation)
Repräsentation)
QuellDokument
XML
XML
Parser
( , , , , )
Ausgabe
XPath
HTML
File
...
Prozessor
Selektion
XSLT
Prozessor
XSLT
Stylesheet
XML
Einleitung
Stylesheet
Erzeugen
XSLT(DOMAnweisungen
von
Repräsentation)
(Literal, Result
Elements)
Knoten
Parser
(XML)
XML Schema
© 2001 Sven Dammann
Xpath
XSLT
Zusammenfassung
28
Transformation am Beispiel
XML
XSLT & XPath
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href=personal.xsl"?>
<company>
<dept deptno="10" dname="Accounting" loc="N..."/>
<dept deptno="20" dname="Research" loc="Dallas"/>
<dept deptno="30" dname="Sales" loc="Chicago"/>
<emp .../>
<emp .../>
<emp .../>
<emp .../>
</company>
Einleitung
XML Schema
© 2001 Sven Dammann
<?xml version="1.0"?>
<xsl:stylesheet>
<xsl:output method="html"/>
<xsl:template match="/">
<html>
<head><title>Personal-Relation</title></head>
<body>
<table border="1">
<tr>
<th>DeptNo</th>
<th>Dname</th>
<th>Loc</th>
</tr>
<xsl:for-each select="//dept">
<tr>
<xsl:for-each select="@*">
<td>
<xsl:choose>
<xsl:when test="string-length(.) = 0">---</xsl:when>
<xsl:otherwise><xsl:value-of select="."/></xsl:otherwise>
</xsl:choose>
</td>
</xsl:for-each>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template >
</xsl:stylesheet>
Xpath
XSLT
HTML
<html>
<head>
<title>Pers...</title>
</head>
<body>
<table> border="1">
<tr>
<th>DeptNo</th>
<th>Dname</th>
<th>Loc</th>
</tr>
<tr>
<td>10</td>
<td>Accounting</td>
<td>New York</td>
</tr>
<tr>
<td>20</td>
<td>Research</td>
<td>Dallas</td>
</tr>
<tr>
<td>30</td>
<td>Sales</td>
<td>Chicago</td>
</tr>
</table>
</body>
</html>
Zusammenfassung
29
Vergleich: SQL - XSL
• Gemeinsamkeiten:
– Anfragemöglichkeiten
• Wenige, einfache Anfragemöglichkeiten
• Erweiterung durch arithm. Funktionen und Vergleichsoperatoren
– Deskriptive Sprachen
• Beschreiben nur Ergebnis der Transformation, nicht den Algorithmus
– Abgeschlossenheit
• Ausgabe kann als Eingabe für weitere Transformationen dienen
• Unterschiede:
– Manipulation der Daten
• XSL: um bestehendes Dokument zu verändern muß es durch neues
ersetzt werden  hoher Aufwand bei kleinen Änderungen
• SQL: bietet neben SELECT weiter Operationen um Daten schnell zu
ändern
Einleitung
XML Schema
© 2001 Sven Dammann
Xpath
XSLT
Zusammenfassung
30
Zusammenfassung:
• Abbildung relationaler Strukturen mit XML sehr einfach
• Integration unterschiedlicher Dokumente durch Festlegen eines
einheitlichen Schemas (XML-Schema)
• Selektion und Projektion mit Xpath und XSLT
Einleitung
XML Schema
© 2001 Sven Dammann
Xpath
XSLT
Zusammenfassung
31
Herunterladen