31
© 2001 Sven Dammann 1 Aufbau Integrierter Informationssysteme XML Bearbeitung und relationale Abbildung Sven Dammann Martin-Luther-Universität Halle-Wittenberg Hauptseminar - Halle - 6. Februar 2002

© 2001 Sven Dammann1 Aufbau Integrierter Informationssysteme XML Bearbeitung und relationale Abbildung Sven Dammann Martin-Luther-Universität Halle-Wittenberg

Embed Size (px)

Citation preview

Page 1: © 2001 Sven Dammann1 Aufbau Integrierter Informationssysteme XML Bearbeitung und relationale Abbildung Sven Dammann Martin-Luther-Universität Halle-Wittenberg

© 2001 Sven Dammann 1

Aufbau Integrierter Informationssysteme

XML Bearbeitung und relationale Abbildung

• Sven Dammann

• Martin-Luther-Universität Halle-Wittenberg

Hauptseminar - Halle - 6. Februar 2002

Page 2: © 2001 Sven Dammann1 Aufbau Integrierter Informationssysteme XML Bearbeitung und relationale Abbildung Sven Dammann Martin-Luther-Universität Halle-Wittenberg

© 2001 Sven Dammann 2

Gliederung

1. Einleitung1.1. XML und Datenbanken1.2. XML Dokument1.3. Document Type Definition

2. XML Schema2.1. Schema Aufbau2.2. Tabellenmodellierung2.3. Referentielle Integrität

3. Datenbank-Operationen mit XML-Sprachen3.1. Selektion und Projektion mit Xpath3.2. Transformation mit XSLT

4. Zusammenfassung

Page 3: © 2001 Sven Dammann1 Aufbau Integrierter Informationssysteme XML Bearbeitung und relationale Abbildung Sven Dammann Martin-Luther-Universität Halle-Wittenberg

© 2001 Sven Dammann 3

XML und Datenbanken: Möglichkeiten

Middleware

•Software zum Transferieren von Daten zwischen XML-Dokumenten und Datenbanken

XML-Enabled Databases•Datenbanken mit Erweiterungen, um Daten zwischen XML-Dokumenten und diesen Daten- banken zu transferieren

Native XML Databases•Datenbanken, die XML-Dokumente in ihrer „nativen“ Form speichern (Erhalt der Struktur des XML- Dokuments)

XML-Server•Plattformen, die Daten in Form von XML-Doku- menten an verteilte Anwendungen senden und von diesen Anwendungen empfangen (e-commerce, B2B-Applikationen)

XML Application Server

•Web Applikationen Server, die XML an Browser verschicken

Content Management Systems•Systeme zum Speichern, Wiederfinden und Zusammenstellen von Dokumenten aus Dokumentfragmenten

Einleitung XML Schema Xpath XSLT Zusammenfassung

Page 4: © 2001 Sven Dammann1 Aufbau Integrierter Informationssysteme XML Bearbeitung und relationale Abbildung Sven Dammann Martin-Luther-Universität Halle-Wittenberg

© 2001 Sven Dammann 4

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 Xpath XSLT Zusammenfassung

Page 5: © 2001 Sven Dammann1 Aufbau Integrierter Informationssysteme XML Bearbeitung und relationale Abbildung Sven Dammann Martin-Luther-Universität Halle-Wittenberg

© 2001 Sven Dammann 5

XML-Dokument: Aufbau

XML-Dokument: Aufbau

<?xml version=„1.0“?><!DOCTYPE beispiel SYSTEM "beispiel.dtd"><beispiel>...untergeordnete Elemente</beispiel>

<beispiel></beispiel>identisch mit<beispiel/>

<?xml version=„1.0“?><beispiel xmlns:xsi=... xsi:noName spaceSchemaLocation=„beispiel.xsd">...untergeordnete Elemente</beispiel>

Einleitung XML Schema Xpath XSLT Zusammenfassung

Page 6: © 2001 Sven Dammann1 Aufbau Integrierter Informationssysteme XML Bearbeitung und relationale Abbildung Sven Dammann Martin-Luther-Universität Halle-Wittenberg

© 2001 Sven Dammann 6

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 Xpath XSLT Zusammenfassung

Page 7: © 2001 Sven Dammann1 Aufbau Integrierter Informationssysteme XML Bearbeitung und relationale Abbildung Sven Dammann Martin-Luther-Universität Halle-Wittenberg

© 2001 Sven Dammann 7

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 Xpath XSLT Zusammenfassung

Page 8: © 2001 Sven Dammann1 Aufbau Integrierter Informationssysteme XML Bearbeitung und relationale Abbildung Sven Dammann Martin-Luther-Universität Halle-Wittenberg

© 2001 Sven Dammann 8

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 Xpath XSLT Zusammenfassung

Page 9: © 2001 Sven Dammann1 Aufbau Integrierter Informationssysteme XML Bearbeitung und relationale Abbildung Sven Dammann Martin-Luther-Universität Halle-Wittenberg

© 2001 Sven Dammann 9

XML Schema

Einleitung XML Schema Xpath XSLT Zusammenfassung

Page 10: © 2001 Sven Dammann1 Aufbau Integrierter Informationssysteme XML Bearbeitung und relationale Abbildung Sven Dammann Martin-Luther-Universität Halle-Wittenberg

© 2001 Sven Dammann 10

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 Xpath XSLT Zusammenfassung

Page 11: © 2001 Sven Dammann1 Aufbau Integrierter Informationssysteme XML Bearbeitung und relationale Abbildung Sven Dammann Martin-Luther-Universität Halle-Wittenberg

© 2001 Sven Dammann 11

Beispieldatenbank: Company

deptno dname loc

10 Accounting New York

20 Research Dallas

30 Sales Chicago

empno ename job mgr sal deptnr

7839 King President 5000 10

7698 Blake Manager 7839 2850 30

7654 Martin Salesman 7698 1250 30

7900 James Clerk 7698 950 20

emp

dept

1

nn1

Einleitung XML Schema Xpath XSLT Zusammenfassung

Page 12: © 2001 Sven Dammann1 Aufbau Integrierter Informationssysteme XML Bearbeitung und relationale Abbildung Sven Dammann Martin-Luther-Universität Halle-Wittenberg

© 2001 Sven Dammann 12

XML Schema: Bsp<?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>

<xs:element name=„...“>

•Definiert Elemente (Markups)•‚name‘ entspricht dem Tag-Namen des XML-Dokumentes•Angabe von Minimal-und Maximal-grenzen möglich

<xs:complexType>

•Definiert den Inhalt zwischen dem Start- und End-Tag•complexType kann als Inhalt weitere Elemente enthalten•Definition von eigenen SimpleTypes möglich

<xs:sequence>

•Definiert eine Folge von Elementen•Reihenfolge ist zwingend•Andere Möglicjkeit: choice (Auswahl) oder group (Gruppe)

<xs:attribute name=„...“ type=„...“>

•Definiert die Attribute des übergeordneten Elementes•,name‘ entspricht dem Attribut-Namen im XML-Dokument•Zwingende Angabe eines Datentyps

<xs:key name=„...“>

•Definiert einen Primärschlüssel ‚Name‘•„selector“ definiert den Pfad im XML-Dokument wo der Schlüssel liegt•„field“ legt den Knoten fest, der der Schlüssel ist

Einleitung XML Schema Xpath XSLT Zusammenfassung

<xs:keyref name=„...“ refer=„...“>

•Definiert einen Fremdschlüssel ‚Name‘•„refer“ gibt den zu referenzierenden Schlüssel an •„selector“ und „field“ legt die Position des Knotens fest, dessen Wert zu überprüfen ist

Page 13: © 2001 Sven Dammann1 Aufbau Integrierter Informationssysteme XML Bearbeitung und relationale Abbildung Sven Dammann Martin-Luther-Universität Halle-Wittenberg

© 2001 Sven Dammann 13

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 Xpath XSLT Zusammenfassung

Page 14: © 2001 Sven Dammann1 Aufbau Integrierter Informationssysteme XML Bearbeitung und relationale Abbildung Sven Dammann Martin-Luther-Universität Halle-Wittenberg

© 2001 Sven Dammann 14

<?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>

Referentielle Integrität

<?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 Xpath XSLT Zusammenfassung

Page 15: © 2001 Sven Dammann1 Aufbau Integrierter Informationssysteme XML Bearbeitung und relationale Abbildung Sven Dammann Martin-Luther-Universität Halle-Wittenberg

© 2001 Sven Dammann 15

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 Xpath XSLT Zusammenfassung

Page 16: © 2001 Sven Dammann1 Aufbau Integrierter Informationssysteme XML Bearbeitung und relationale Abbildung Sven Dammann Martin-Luther-Universität Halle-Wittenberg

© 2001 Sven Dammann 16

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>

Anwendung 1

<?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 2

DB

Einleitung XML Schema Xpath XSLT Zusammenfassung

Page 17: © 2001 Sven Dammann1 Aufbau Integrierter Informationssysteme XML Bearbeitung und relationale Abbildung Sven Dammann Martin-Luther-Universität Halle-Wittenberg

© 2001 Sven Dammann 17

Selektion und Projektion mit XPath

Einleitung XML Schema Xpath XSLT Zusammenfassung

Page 18: © 2001 Sven Dammann1 Aufbau Integrierter Informationssysteme XML Bearbeitung und relationale Abbildung Sven Dammann Martin-Luther-Universität Halle-Wittenberg

© 2001 Sven Dammann 18

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 Xpath XSLT Zusammenfassung

Page 19: © 2001 Sven Dammann1 Aufbau Integrierter Informationssysteme XML Bearbeitung und relationale Abbildung Sven Dammann Martin-Luther-Universität Halle-Wittenberg

© 2001 Sven Dammann 19

Xpath: Pfad Ausdrücke

Pfad Ausdrücke• Selektion von Resultats-Knoten-mengen aus dem Quell-XML-Baum•Pfad kann aus mehreren Bausteinen bestehen•Bausteine durch „/“ getrennt

Pfadbaustein (Grundgerüst):

achse::knoten-test[prädikate]

Achse•Gibt Baumbeziehungen zwischen zu selektierenden Knoten und Kontextknoten an

Einleitung XML Schema Xpath XSLT Zusammenfassung

Knoten-Test•Gibt Knotentyp und Namen der zu selektierenden Knoten an

Prädikate•Weitere Verfeinerung der selektierten Knotenmenge•optional

Page 20: © 2001 Sven Dammann1 Aufbau Integrierter Informationssysteme XML Bearbeitung und relationale Abbildung Sven Dammann Martin-Luther-Universität Halle-Wittenberg

© 2001 Sven Dammann 20

Xpath: Baumbeziehungen

<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>

Child •Alle direkten Kinder eines Kontextknotens

Child •Alle direkten Kinder eines Kontextknotens

•Syntax : child::Elementname•Beispiel : alle Kinder eines Knotens, die „Blatt4“ heißen

child::Blatt4 verkürzt: Blatt4

•Syntax : child::Elementname•Beispiel : alle Kinder eines Knotens, die „Blatt4“ heißen

child::Blatt4 verkürzt: Blatt4

<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>

Parent•Das Elternelement des Kontextknoten

Parent•Das Elternelement des Kontextknoten

•Syntax : parent::Elementname•Beispiel : das Elternelement eines Kontextknoten, daß „Wurzel“ heißt

parent::Wurzel verkürzt: parent::node() = ..

•Syntax : parent::Elementname•Beispiel : das Elternelement eines Kontextknoten, daß „Wurzel“ heißt

parent::Wurzel verkürzt: parent::node() = ..

<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>

Ancestor•Alle Vorfahren des Kontextknoten

Ancestor•Alle Vorfahren des Kontextknoten

•Syntax : ancestor::Elementname•Beispiel : alle Vorfahren eines Kontextknotens

ancestor::*

•Syntax : ancestor::Elementname•Beispiel : alle Vorfahren eines Kontextknotens

ancestor::*

<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>

Descedant•Alle Abkömmlinge eines Kontextknoten

Descedant•Alle Abkömmlinge eines Kontextknoten

•Syntax : descendant::Elementname•Beispiel : alle Nachfahren eines Kontextknotens, die „Ebene3“ heißen

descendant::Ebene3

•Syntax : descendant::Elementname•Beispiel : alle Nachfahren eines Kontextknotens, die „Ebene3“ heißen

descendant::Ebene3

<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 Xpath XSLT Zusammenfassung

Preceding •Alle K. die im Doku-ment vor dem Kontext- knoten kommen

Preceding •Alle K. die im Doku-ment vor dem Kontext- knoten kommen

•Syntax : preceding::Elementname•Beispiel : alle einem Kontextknoten vorangegangenen Elemente „Blatt2“

preceding::Blatt2

•Syntax : preceding::Elementname•Beispiel : alle einem Kontextknoten vorangegangenen Elemente „Blatt2“

preceding::Blatt2

<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>

Following•Alle auf den Kontext-knoten folgenden Elem.

Following•Alle auf den Kontext-knoten folgenden Elem.

•Syntax : following::Elementname•Beispiel : alle folgenden Elemente „Blatt1“ eines Kontextknoten

following::Blatt1

•Syntax : following::Elementname•Beispiel : alle folgenden Elemente „Blatt1“ eines Kontextknoten

following::Blatt1

<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>

Preceding-Sibling

•Alle folgenden Brüder des Kontextknoten

Preceding-Sibling

•Alle folgenden Brüder des Kontextknoten

•Syntax : preceding-sibling::Elementname•Beispiel : alle vorherigen Brüder „Ebene3“ eines Kontextknotens

preceding-sibling::Ebene3

•Syntax : preceding-sibling::Elementname•Beispiel : alle vorherigen Brüder „Ebene3“ eines Kontextknotens

preceding-sibling::Ebene3

<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>

Following-Sibling

•Alle folgenden Brüder des Kontextknoten

Following-Sibling

•Alle folgenden Brüder des Kontextknoten

•Syntax : following-sibling::Elementname•Beispiel : alle folgenden Brüder die „Blatt3“ heißen

following-sibling::Blatt3

•Syntax : following-sibling::Elementname•Beispiel : alle folgenden Brüder die „Blatt3“ heißen

following-sibling::Blatt3

<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>

Self •Aktueller Knoten (Kontextknoten) selbst

Self •Aktueller Knoten (Kontextknoten) selbst

<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>

•Syntax : self::node()•Beispiel : Auswahl des Knotens „Ebene1“

child::Ebene1/self::node() verkürzt: Ebene1/.

•Syntax : self::node()•Beispiel : Auswahl des Knotens „Ebene1“

child::Ebene1/self::node() verkürzt: Ebene1/.

Ancestor-or-Self•Kontextknoten & alle seine Vorfahren

Ancestor-or-Self•Kontextknoten & alle seine Vorfahren

•Syntax : ancestor-or-self::Elementname•Beispiel : alle Vorfahren eines Kontext-Elementes inkl. dem Element selbst

ancestor-or-self::*

•Syntax : ancestor-or-self::Elementname•Beispiel : alle Vorfahren eines Kontext-Elementes inkl. dem Element selbst

ancestor-or-self::*

<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>

Descendant-or-Self

•Kontextknoten & alle Abkömmlinge

Descendant-or-Self

•Kontextknoten & alle Abkömmlinge

<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>

•Syntax : descendant-or-self::Elementname•Beispiel : alle Elemente „Blatt1“ des Dokuments

descendant-or-self::Blatt1 verkürzt: //Blatt1

•Syntax : descendant-or-self::Elementname•Beispiel : alle Elemente „Blatt1“ des Dokuments

descendant-or-self::Blatt1 verkürzt: //Blatt1

Page 21: © 2001 Sven Dammann1 Aufbau Integrierter Informationssysteme XML Bearbeitung und relationale Abbildung Sven Dammann Martin-Luther-Universität Halle-Wittenberg

© 2001 Sven Dammann 21

child::CCC

Ergebnis Node-Set: ( ; )

Xpath: Ablauf

AAA

DDDBBB CCC

BBBEEEBBB

DDD EEE EEE

GGGBBB

DDDBBB CCCCCC

/child::BBB

BBBBBB

/child::EEE

DDD EEE EEEEEE EEE

DDDBBB

AAA

<EEE/> <EEE/>

-Knoten des Baumes-Mögliche Knoten -Treffer

descendant-or-self::BBB

Node-Set: ( ; ; ; )

CCC

BBB

DDD EEE EEE

<BBB> <BBB/> <BBB/><BBB/>

CCC/BBB/EEE

DDDBBB

BBBEEE

CCC

BBB

DDD EEE EEE

GGGBBB

AAA

//BBB

Einleitung XML Schema Xpath XSLT Zusammenfassung

BBB

BBB

BBB

BBB

Page 22: © 2001 Sven Dammann1 Aufbau Integrierter Informationssysteme XML Bearbeitung und relationale Abbildung Sven Dammann Martin-Luther-Universität Halle-Wittenberg

© 2001 Sven Dammann 22

Xpath: Selektion & Projektion mit Prädikaten

descendant-or-self::emp[attribute::sal < 2850]/attribute::ename

Ergebnis Knoten-Set: (Martin ; James)

• 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“

Wie heißen die Mitarbeiter mit einem Gehalt kleiner 2850?

//emp[@sal &lt; 2850]/@ename

• Relationale Algebra:ename(sal < 2850 (emp))

Einleitung XML Schema Xpath XSLT Zusammenfassung

Page 23: © 2001 Sven Dammann1 Aufbau Integrierter Informationssysteme XML Bearbeitung und relationale Abbildung Sven Dammann Martin-Luther-Universität Halle-Wittenberg

© 2001 Sven Dammann 23

Xpath: Weitere Funktionen

• Xpath bietet umfangreiche Funktionsbibliothek

• Meist Verwendung in Prädikaten

Allgemeine Funktionen •number last(): entspricht Größe des Kontexts (das letzte Element)•number position(): gibt die Kontext-Position an•number count(node set): Anzahl der Knoten in der Argumentmenge

String-Funktionen •number string-length(string?): liefert Länge des Strings•boolean starts-with(string, string): true, wenn 1. Argument mit 2. Argument beginnt•boolean contains(string, string): true, wenn 1. Argument das 2.Argument

beinhaltet

Boolsche-Funktionen •boolean boolean(object): Konvertierung unterschiedlicher Objekttypen nach boolean•boolean not(boolean): Negierung des angegebenen Wertes•boolean true(): liefert true

Zahlen-Funktionen •number number(object?): Konvertierung des angegebenen Objekts nach number•number sum(node-set): Aufsummierung von Argument-Knoten des Typs number

Einleitung XML Schema Xpath XSLT Zusammenfassung

Page 24: © 2001 Sven Dammann1 Aufbau Integrierter Informationssysteme XML Bearbeitung und relationale Abbildung Sven Dammann Martin-Luther-Universität Halle-Wittenberg

© 2001 Sven Dammann 24

Transformation mit XSLT

Einleitung XML Schema Xpath XSLT Zusammenfassung

Page 25: © 2001 Sven Dammann1 Aufbau Integrierter Informationssysteme XML Bearbeitung und relationale Abbildung Sven Dammann Martin-Luther-Universität Halle-Wittenberg

© 2001 Sven Dammann 25

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 Xpath XSLT Zusammenfassung

Page 26: © 2001 Sven Dammann1 Aufbau Integrierter Informationssysteme XML Bearbeitung und relationale Abbildung Sven Dammann Martin-Luther-Universität Halle-Wittenberg

© 2001 Sven Dammann 26

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 Xpath XSLT Zusammenfassung

Page 27: © 2001 Sven Dammann1 Aufbau Integrierter Informationssysteme XML Bearbeitung und relationale Abbildung Sven Dammann Martin-Luther-Universität Halle-Wittenberg

© 2001 Sven Dammann 27

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 Xpath XSLT Zusammenfassung

Page 28: © 2001 Sven Dammann1 Aufbau Integrierter Informationssysteme XML Bearbeitung und relationale Abbildung Sven Dammann Martin-Luther-Universität Halle-Wittenberg

© 2001 Sven Dammann 28

Xpath und XSLT

XMLParserXMLParser

XMLParserXMLParser

Quell-Dokument

XML

Quell-Dokument

XML

XSLTStyle-sheet

(XML)

XSLTStyle-sheet

(XML)

AusgabeHTMLFile...

AusgabeHTMLFile...

Ablauf einer Transformation

XSLTProzessor

XSLTProzessor

XPathProzessorXPath

Prozessor

Quelldokument(DOM-

Repräsentation)

Stylesheet(DOM-

Repräsentation)

( ), , , ,

Node-Sets

Selektion

XSLT-Anweisungen

(Literal, Result Elements)

Erzeugenvon

Knoten

Ergebnis(DOM-

Repräsentation)

Einleitung XML Schema Xpath XSLT Zusammenfassung

Page 29: © 2001 Sven Dammann1 Aufbau Integrierter Informationssysteme XML Bearbeitung und relationale Abbildung Sven Dammann Martin-Luther-Universität Halle-Wittenberg

© 2001 Sven Dammann 29

<?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>

<?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>

Transformation am Beispiel

XML XSLT & XPath 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>

Einleitung XML Schema Xpath XSLT Zusammenfassung

Page 30: © 2001 Sven Dammann1 Aufbau Integrierter Informationssysteme XML Bearbeitung und relationale Abbildung Sven Dammann Martin-Luther-Universität Halle-Wittenberg

© 2001 Sven Dammann 30

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 Xpath XSLT Zusammenfassung

Page 31: © 2001 Sven Dammann1 Aufbau Integrierter Informationssysteme XML Bearbeitung und relationale Abbildung Sven Dammann Martin-Luther-Universität Halle-Wittenberg

© 2001 Sven Dammann 31

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 Xpath XSLT Zusammenfassung