KMB – XML und Information

Werbung
Knowledge Management im Bildungsbereich
KMB: Teil 6
KMB
Knowledge Management
im Bildungsbereich
Teil 6
Christian Cenker
CSLearn
Center for Computer Science Didactics and Learning Research
Fachdidaktik‐ und Lernforschungszentrum Informatik
http://cewebs.cs.univie.ac.at/mid‐kmb/_vo
KMB – XML und Information
• XML = Strukturierte Dokumente
• XML = "Interpretierbare" Dokumente
XML Dokumente
– Text‐zentriert
• von Menschen lesbarer Inhalt (XHTML, HTML5)
• wenig strukturiert
– Daten‐zentriert
• stark strukturiert
Ronald Bourret, XML and Databases, 1999‐2005
http://www.rpbourret.com/xml/XMLAndDatabases.htm#datavdocs
Last visited: 2010/05/01
http://cewebs.cs.univie.ac.at/mid‐kmb/_vo
1
Knowledge Management im Bildungsbereich
KMB: Teil 6
XML – Datenbanken Abfrage
Transformation
Darstellung
http://dmsblog.burtongroup.com/data_management_strategie/WindowsLiveWriter/XQuery2.jpg
XML – Datenbanken Übergang fließend
XML – Dokument  XML – Datenbank Dokumenten – Schema  Datenbank – Schema
Transformationsverluste Relationale Datenbank: Tabellenorientiert
XML – Datenbank: Objektorientiert, "wilde" Struktur
http://cewebs.cs.univie.ac.at/mid‐kmb/_vo
2
Knowledge Management im Bildungsbereich
KMB: Teil 6
XML – Datenbanken • "Keine" Datentypen, alles ist Text (Encoding) – Datenintegrität?
– Dokument Schema (DTD etc.) vorhanden?
– Applikation errät Datentyp
– BenutzerIn gibt Datentyp an
• Kein Index
• Keine binäre Daten – Base64 Mime Encoding
– Hexadezimal Encoding
– Externe, nicht geparste Entity (externe Datei)
• "Missing Values" oder "Null" Daten
– XML: Mehr Spezifikationsmöglichkeiten
• Processing Instructions, Comments
– diese können überall vorkommen
SQL basierte Abfrage
Relationale Datenbank
XML
Beispiel von http://www.rpbourret.com/xml/XMLAndDatabases.htm
http://cewebs.cs.univie.ac.at/mid‐kmb/_vo
3
Knowledge Management im Bildungsbereich
KMB: Teil 6
SQL Abfrage in XML
<?xml version="1.0"?>
<FlightInfo>
<Introduction>The following flights are available:</Introduction>
<SelectStmt>SELECT Airline, FltNumber,Depart, Arrive FROM Flights</SelectStmt>
<Flight>
<Airline>$Airline</Airline>
<FltNumber>$FltNumber</FltNumber>
<Depart>$Depart</Depart>
<Arrive>$Arrive</Arrive>
</Flight>
<Conclusion>We hope one of these meets your needs</Conclusion>
<Flights>
</FlightInfo>
<Flight>
<Airline>ACME</Airline>
<FltNumber>123</FltNumber>
<Depart>Dec 12, 1998 13:43</Depart>
<Arrive>Dec 13, 1998 01:21</Arrive>
</Flight>
...
</Flights>
Beispiel von http://www.rpbourret.com/xml/XMLAndDatabases.htm
Umwandlung: XML  Relational
Komplexes Element  (Haupt‐)Tabelle mit primärem Schlüssel
• Element mit gemischtem Inhalt  Tabelle mit Link über primären Schlüssel der Haupttabelle
• Attribute und einzeln vorkommende Elemente  Datenspalte + Datentyp (vordefiniert, erraten,…)
• Optionale Elemente  Datenspalte mit NULL/Missing Value erlaubt
• Attribute mit Aufzählungen oder mehrfache Elemente  Eigene Tabelle mit Link über Schlüssel des Elters
• Komplexe Kind‐Elemente  Verkettung über primären Key des Elters
Beispiel von http://www.rpbourret.com/xml/XMLAndDatabases.htm
http://cewebs.cs.univie.ac.at/mid‐kmb/_vo
4
Knowledge Management im Bildungsbereich
KMB: Teil 6
Umwandlung: Relational  XML
Tabelle  ELEMENT
• Primäre Schlüssel  Attribute oder PCDATA Elemente
• Datenspalten  Attribute oder PCDATA Elemente
• Fremdschlüssel  rekursiv: Elemente
Probleme
• Namenskollisionen
• Datentypen, Längen
• XML  Relational  XML erzeugt Verschiedenes
<Customer>
<Name>ABC Industries</Name>
<Address>
<Street>123 Main St.</Street>
<City>Fooville</City>
<State>CA</State>
<Country>USA</Country>
<PostCode>95041</PostCode>
</Address>
</Customer>
Beispiel von http://www.rpbourret.com/xml/XMLAndDatabases.htm
SQL – Relationale Abfragesprache • Flache Datenstruktur Tabelle
• Reguläre und homogene Daten
– Jede Zeile hat gleich viele Spalten
– Jede Spalte hat einen Eintrag (NULL erlaubt)
• Ergebnisse von SQL sind wieder "einfach"
• Zeilen sind nicht geordnet
– Ordnung durch Inhalt
 In XML ist alles ganz anders!
http://cewebs.cs.univie.ac.at/mid‐kmb/_vo
5
Knowledge Management im Bildungsbereich
KMB: Teil 6
Xquery – XML Abfragesprache
 http://www.w3.org/TR/xquery/
•
Zusammensetzbarkeit (Compositionality)
–
–
Funktionale Sprache
Alles ist eine Expression (Pfad, Vergleiche, Konsturktoren, Ergebnisse etc.)
•
Abgeschlossenheit (Closure ) bez. des Query‐Datenmodells
•
XML Schema konform
•
Xpath kompatibel
•
•
Einfachheit (Simplicity)
Vollständigkeit (Completeness)
•
Generell anwendbar (Generality)
•
Conciseness
•
Statische Analyse
–
–
–
–
–
–
–
Jede Abfrage erzeugt einen Ausdruck innerhalb des Modells
Typen, Vererbung, Validierung ( Xquery als Schema Sprache)
Typen, Kompromisse wegen XML Schema
Jedes XML Dokument soll aus anderen erzeugt werden können
Anwendbar auf jedes XML Dokument
Anwendung von Operatoren (+,=,…) auf alle Elemente/Elementtypen
Analyse der Abfrage vor Auswertung der Abfrage, um Fehler abzufangen Don Chamberlin : The need for an XML Query Language, http://www.ibm.com/developerworks/xml/library/x‐xqbook.html
In: XQuery from the Experts, Howard Katz (ed). Pearson Education. 2004. ISBN 0321180607.
XML – Xquery und XPath
XQuery is to XML what SQL is to database tables.
XQuery was designed to query XML data.
Xquery
Abfragesprache für XML Daten
XLink
Hyperlinks aus XML Dokumenten heraus
XPointer Hyperlinks in XML Dokumente hinein
XSLT Transformationen von XSL
XPath
Einfache Navigation in XML Dokumenten  http://w3schools.com: Einfache, freie Online‐Kurse
http://cewebs.cs.univie.ac.at/mid‐kmb/_vo
6
Knowledge Management im Bildungsbereich
KMB: Teil 6
Kurse auf http://w3schools.com
XQuery – Beispiel Document node
Element node
Attribute node
Atomic value
<?xml version="1.0" encoding="ISO‐8859‐1"?>
<bookstore>
<book category="COOKING">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="CHILDREN">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="WEB">
<title lang="en">XQuery Kick Start</title>
<author>James McGovern</author>
<author>Per Bothner</author>
<author>Kurt Cagle</author>
<author>James Linn</author>
<author>Vaidyanathan Nagarajan</author>
<year>2003</year>
<price>49.99</price>
</book>
<book category="WEB">
<title lang="en">Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>
http://cewebs.cs.univie.ac.at/mid‐kmb/_vo
 http://w3schools.com
for $x in doc("books.xml")/bookstore/book
where $x/price>30
order by $x/title
return $x/title
doc("books.xml")
doc("books.xml")/bookstore/book
doc("books.xml")/bookstore/book
where $x/price>30
order by $x/title
return $x/title
Function
Path
FLOWR
Expressions
<title lang="en">Learning XML</title>
<title lang="en">XQuery Kick Start</title>
doc("books.xml")/bookstore/book[price>30]
Predicate
doc("books.xml")/bookstore/book[price>30]/title
<title lang="en">XQuery Kick Start</title> <title lang="en">Learning XML</title>
7
Knowledge Management im Bildungsbereich
KMB: Teil 6
XQuery – HTML Ausgabe
 http://w3schools.com
<ul>
{
for $x in doc("books.xml")/bookstore/book/title
order by $x
<ul>
return <li>{$x}</li>
<li><title lang="en">Everyday Italian</title></li>
}
<li><title lang="en">Harry Potter</title></li>
</ul>
<li><title lang="en">Learning XML</title></li>
<li><title lang="en">XQuery Kick Start</title></li>
</ul>
<ul>
{
for $x in doc("books.xml")/bookstore/book/title
order by $x
<ul>
return <li>{data($x)}</li>
<li>Everyday Italian</li>
}
<li>Harry Potter</li>
</ul>
<li>Learning XML</li>
<li>XQuery Kick Start</li>
</ul>
XQuery – QuickRef
XML Knoten‐Konstruktoren
document { expr }
element name { expr } element { expr } expr
attribute name { expr }
attribute { expr } expr
text { expr }
comment { expr } processing‐instruction { expr } expr
namespace name { expr } Xquery Expressions (FLOWR)
for $var at $pos in expr
let $var := expr
order by expr
ascending, descending, empty,
least, empty, greatest
where expr
return expr
Namespaces (eingebaut)
fn http://www.w3.org/2003/11/xpath‐functions xdt http://www.w3.org/2003/11/xpath‐datatypes xml http://www.w3.org/XML/1998/namespace xs http://www.w3.org/2001/XMLSchema xsi http://www.w3.org/2001/XMLSchema‐instance
von http://xq.aromatic.org/quickref.xqy
http://cewebs.cs.univie.ac.at/mid‐kmb/_vo
8
Knowledge Management im Bildungsbereich
KMB: Teil 6
XQuery – QuickRef (Prolog)
xquery version "1.0";
declare xmlspace strip|preserve; declare default collation "uri"; declare base‐uri "uri"; declare namespace prefix = "uri"; declare default element namespace "uri"; declare default function namespace "uri"; declare variable $name { expr }; declare variable $name as type { expr }; declare variable $name external; declare variable $name as type external; module prefix = "uri"; import module "uri"; import module "uri" at "hint"; import module namespace prefix = "uri"; import module namespace prefix = "uri" at "hint"; import schema "uri"; import schema "uri" at "hint";
import schema namespace prefix "uri";
import schema namespace prefix "uri" at "hint"; import schema default element namespace "uri";
import schema default element namespace "uri" at "hint";
declare validation lax|skip|strict;
von http://xq.aromatic.org/quickref.xqy
XQuery und XPath Ahnengalerie
WURZEL
Großelter
Großelter
Elter
Elter
Kind
Kind
Enkel
Elter
Elter
Elter
Kind
Kind
Kind
Kind
Enkel
Enkel
Enkel
Enkel
Ancestor
vorher
Parent
jetzt
Self
nachher
Sibling
Child
Descendant
http://cewebs.cs.univie.ac.at/mid‐kmb/_vo
Children
9
Knowledge Management im Bildungsbereich
KMB: Teil 6
XPath – Quick and dirty
http://www.w3.org/TR/xpath
• Adressiert Teile eines XML Dokuments
• Operiert auf der logischen Struktur des XML Dokuments
• Kompakte, Nicht‐XML Syntax
– Kann auch in URIs und XML Attributen verwendet werden • Pfadähnliche Notation – hierarchische Struktur eines XML Dokuments
• Modelliert ein XML Dokument als einen Baum aus Knoten
– Elementknoten, Attributknoten, Textknoten, Kommentarknoten etc.
XPath – Quick and dirty
http://www.w3.org/TR/xpath
Achsen
In XPath definierte Achsen
self
ancestor
ancestor‐or‐self
child
descendant
descendant‐or‐self
following
following‐sibling
parent
preceding
preceding‐sibling
attribute
namespace
http://cewebs.cs.univie.ac.at/mid‐kmb/_vo
aktueller Knoten = Kontextknoten
Vorfahren
Vorfahren oder aktueller Knoten
Kinder
Nachfahren
Nachfahren oder aktueller Knoten folgende Knoten mit Kindern
folgende Geschwister
Elter
vorangehende Knoten
vorangehende Geschwister
Attribute des Kontextknotens
Namensraum des Kontextknotens
10
Knowledge Management im Bildungsbereich
KMB: Teil 6
XPath – Quick and dirty
http://www.w3.org/TR/xpath
Referenzknoten
Achsen: Auswahl der Knoten
self::node() parent::node() child::* following::* following‐sibling::*
ancestor::* ancestor‐or‐self::* descendant::* descendant‐or‐self::* preceding::* preceding‐sibling::*
Michael Derntl, Webtechnologien, Foliensatz 2009
XPath – Quick and dirty
Auswahl der Knoten (Kurzformen)
Expression nodename
/
// . .. @ Beschreibung
alle Kinder des Knoten
alle Knoten ab der Wurzel alle Knoten ab dem Kontextknoten (inklusive)
aktueller Knoten (=Kontextknoten)
Elter des aktuellen Knoten
Attribute
Beispiele
bookstore /bookstore bookstore/book
//book bookstore//book //@lang
http://cewebs.cs.univie.ac.at/mid‐kmb/_vo
alle Kinder des Elements 2 bookstore
die Wurzel bookstore
/ am Anfang heißt absoluter Pfad
alle Elemente book, die Kinder von bookstore sind
alle Elemente book
alle Elemente book, die Nachkommen von bookstore sind
alle Attribute mit Namen lang
11
Knowledge Management im Bildungsbereich
KMB: Teil 6
XPath – Quick and dirty
Achsen Auswahl der Knoten
Expression //B/ancestor::C Beschreibung
alle Vorfahren C von allen B
//C/descendant::*/D
alle Kinder D von Nachfahren von allen C
/A//*/.
/child::A/descendant‐or‐self::node()/child::*/self::node()
//A[@x='4']/..
/descendant‐or‐self::node()/child::A[attribute::x='4']/parent::node()
//D/B/following‐sibling::C/attribute::x
alle Attribute x von einem C, das ein folgendes Geschwister von einem B ist, dieses B ist Kind irgendeines D ist
/A/*[4]/preceding‐sibling::*[1]
das erste vorangehende Geschwister des vierten Kindes des Wurzelelements
Kurzformen
/A
//A
.
..
@a
/child::A
/descendant‐or‐self::node()/child::A
self::node()
parent::node()
attribute::a
Michael Derntl, Webtechnologien, Foliensatz 2009
XPath – Quick and dirty
Auswahl der Knoten – Wildcards Expression * @* node() Beschreibung
jeder Element‐Knoten
jeder Attribute‐Koten
jeder Knoten
Beispiele
/bookstore/* //* //title[@*] alle Kind‐Knoten des Elements bookstore alle Elements des Dokuments
alle Elemente title, die ein Attribut haben
Auswahl mehrerer Pfade
//book/title | //book/price alle Elemente title UND price von allen E. book //title | //price alle Ellemente title UND price im Dokument
/bookstore/book/title | //price alle Elemente title des Elementes /bookstore/book
UND alle Elemente price im Dokument
http://cewebs.cs.univie.ac.at/mid‐kmb/_vo
12
Knowledge Management im Bildungsbereich
KMB: Teil 6
XPath – Quick and dirty
Prädikate /bookstore/book[1] das erste Element book, das Kind von bookstore ist
Vorsicht: [0] ↔ [1] Problematik (W3C‐Standard: [1])
/bookstore/book[last()] das letzte Element book, das Kind von bookstore ist
/bookstore/book[last()‐1] das letzte Element book, das Kind von bookstore ist
/bookstore/book[position()<3] die ersten beiden Elemente book, Kinder von bookstore
//title[@lang] alle Elemente title, die ein Attribut namens lang besitzen
//title[@lang='eng'] alle Elemente title mit Attrribut namens lang und Wert 'eng' /bookstore/book[price>35.00] alle Elemente book von bookstore mit Element price mit Wert größer als 35.00 /bookstore/book[price>35.00]/title alle Elemente title von Elementen book von bookstore, die ein Element price mit einem Wert größer als 35.00 haben
XPath – Quick and dirty
Operatoren | entweder oder
//book | //cd
alle book und cd Elemente
+ ‐
* div mod Addition
Subtraktion
Multiplication Division Modulo 6 + 4 6 ‐ 4 6 * 4
8 div 4 17 mod 3 10 2 24 2 2
= != < <= > >= ist gleich
ungleich
kleiner als
kleiner gleich
größer als
größer gleich
price=9.80 price!=9.80 price<9.80 price<=9.80 price>9.80 price>=9.80 true wenn price=9.80
true wenn price nicht 9.80 ist
true wenn price kleiner als 9.80 ist
true wenn price ≤ 9.80
true wenn price größer als 9.80
true wenn price ≥ 9.80
or and not
logisches Oder logisches Und logisches Nicht
price=9.8 or price=9.7 true wenn …
price>9.0 and price<9.9 true wenn …
not(price>9.0)
true wenn … http://cewebs.cs.univie.ac.at/mid‐kmb/_vo
13
Knowledge Management im Bildungsbereich
KMB: Teil 6
XPath – Quick and dirty
Funktionen für XPath, XQuery und XSLT last() : number
position() : number
count(node‐set) : number
index‐of((item,item,...),searchitem) : number
id(object) : node‐set
name(node‐set) : string oder name() : string
boolean(expression) : boolean
not(boolean) : boolean
string(node‐set?) : string
concat(string, string+) : string
starts‐with(string, string) : boolean
contains(string, string) : boolean
substring(string, number, number) : string
http://www.w3schools.com/xpath/xpath_functions.asp
Quellen – Xquery und XPath
Allgemeines
•
Ronald Bourret: XML and Databases, http://www.rpbourret.com/xml/XMLAndDatabases.htm, Copyright 1999‐2005, Data versus Documents, http://www.rpbourret.com/xml/XMLAndDatabases.htm#datavdocs
•
Ronald Bourret: Mapping DTDs to Databases, http://www.rpbourret.com/xml/DTDToDatabase.htm, 2000‐2005
•
Ronald Bourret: XML Database Products, http://www.rpbourret.com/xml/XMLDatabaseProds.htm, 2000‐2010
•
Don Chamberlin :The need for an XML Query Language, http://www.ibm.com/developerworks/xml/library/x‐xqbook.html
In: XQuery from the Experts, Howard Katz (ed) Don Chamberlin, Denise Draper, Mary Fernandez, Michael Kay, Jonathan Robie, Michael Rys, Jerome Simeon, Jim Tivy, and Philip Wadler. ISBN 0321180607, 2004, Pearson Education.
•
Dave Pawson: XQuery 1.0: An XML Query Language, http://www.dpawson.co.uk/xquery/xquery.html, 2009
http://www.dpawson.co.uk/xquery/: Xquery Wikibook: http://en.wikibooks.org/wiki/XQuery
Xquery in the browser: http://www.xqib.org/
Xquery development Tools: http://www.xqdt.org/
•
Michael Kay: Using XSLT and XQuery for life‐size applications, http://xtech06.usefulinc.com/schedule/paper/13
Conference: XTech 2006: “Building Web 2.0” — 16‐19 May 2006, Amsterdam, The Netherlands
•
Michael Kay: Schema‐Aware Queries and Stylesheets, http://www.stylusstudio.com/schema_aware.html, 2006
•
Joris Graaumans: Usability of XML Query Languages, Ph.D Thesis, University of Utrecht, 2005. ISBN 90‐393‐4065‐X
•
XML Version 1.1 Grundlagen, Uni Hannover (Hrsg), http://www.rrzn.uni‐hannover.de/buch.html?&no_cache=1&titel=xml, 2005
•
RRZN Skripten: http://www.rrzn.uni‐hannover.de/buecher.html
W3C
•
XQuery 1.0 and XPath 2.0 Functions and Operators, http://www.w3.org/TR/xpath‐functions/, W3C Recommendation 23 January 2007
•
XQuery 1.0 and XPath 2.0 Data Model (XDM), http://www.w3.org/TR/xpath‐datamodel/, W3C Recommendation 23 January 2007
•
XML Path Language (XPath) 2.0, http://www.w3.org/TR/xpath20/, W3C Recommendation 23 January 2007
•
Amaya Browser: http://www.w3.org/Amaya/, 11.3.1 is now released (9 December 2009). It supports HTML 4.01, XHTML 1.0, XHTML Basic, XHTML 1.1, HTTP 1.1, MathML 2.0, many CSS 2 features, and SVG.
W3‐Schools
•
Gratis Online‐Schulungen, http://w3schools.com/
http://cewebs.cs.univie.ac.at/mid‐kmb/_vo
14
Knowledge Management im Bildungsbereich
KMB: Teil 6
XLink und XPointer
Links in einer XML‐Datei, die aus dieser heraus zeigen:
<?xml version="1.0"?>
<homepages xmlns:xlink="http://www.w3.org/1999/xlink">
<homepage xlink:type="simple" xlink:href=http://www.w3schools.com> W3Schools</homepage>
<homepage xlink:type="simple" xlink:href=http://www.w3.org>W3C</homepage>
</homepages>
Pointer in die Datei cdlist.xml, auf das 5. Element mit der ID="rock":
href=http://www.example.com/cdlist.xml#id('rock').child(5,item)
 http://www.w3.org/TR/xlink/ XML Linking Language (XLink) Version 1.0
W3C Recommendation 27 June 2001
http://cewebs.cs.univie.ac.at/mid‐kmb/_vo
15
Herunterladen