DOM und XPath 05 - AG Digital Humanities€“FilterExpression •PrimaryExpression...
Transcript of DOM und XPath 05 - AG Digital Humanities€“FilterExpression •PrimaryExpression...
23.10.2013
1
DOM und XPath
05
G. Görz, J. Schneeberger
Department Informatik – KI
1
Übersicht
• DOM – Document Object Model
• XPath – Schritte und Pfadbeschreibungen
– Achsen
– Weitere Konzepte
– Knotentypen, Abkürzungen und Datentypen
– Funktionen
• XLink und XPointer
• Zusammenfassung
2
23.10.2013
2
DOM / XPath / XQuery
• Idee: Einheitliche Formulierung von Suchanfragen nach Teilen eines XML-Baumes
• DOM – Erste Implementierung in Netscape 2
– Unterschiede in Browsern
– Standardisiert durch das W3C
– 1997 – heute
– plattformunabhängig
• XPath – Version 1: 1999
– Version 2 Entwurf: 2004
– Version 2 Standard: 2007
– Vers. 2 wird immer noch von nur wenigen Tools unterstützt
3
DOM
Document Object Model
23.10.2013
3
Das „Document Object Model“
(DOM)
• W3C Spezifikation
• Benutzt die Baumstruktur des (XML/HTML)
Dokuments
• Programmierschnittstelle (API) für HTML- und
XML-Dokumente (in JavaScript)
– Core DOM – Objekt-Modell für HTML- und XML-
Dokumente
– XML DOM – Objekt-Modell für XML-Dokumente
– HTML DOM – Objekt-Modell für HTML-Dokumente
DOM Knoten
• Das gesamte Dokument ist ein Knoten
• Jedes XML-Element ist ein Knoten
• Der Text in einem XML-Element ist ein
Textknoten
• Jedes Attribut ist ein Attributknoten
• Kommentare sind Kommentarknoten
6
23.10.2013
4
JavaScript DOM (Netscape)
7
In JavaScript / im Browser
• Laden einer XML-Datei
• Laden einer XML-Zeichenkette
8
var xmlDoc;
xmlDoc=new window.XMLHttpRequest();
xmlDoc.open("GET","books.xml",false);
xmlDoc.send("");
try { //Internet Explorer
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.loadXML(txt);
return xmlDoc;
} catch(e) {
parser=new DOMParser();
xmlDoc=parser.parseFromString(txt,"text/xml");
return xmlDoc;
}
23.10.2013
5
DOM: Eigenschaften und
Methoden
• Beispiele für Eigenschaften (wenn x ein Knoten ist): – x.nodeName – der Name von x
– x.nodeValue – der Wert von x
– x.parentNode – der Elternknoten von x
– x.childNodes – die Kindknoten von x
– x.attributes – die Attributknoten von x
• Beispiele für Methoden (wenn x ein Knoten ist): – x.getElementsByTagName(name) – liefert alle Elemente
mit Namen name
– x.appendChild(node) – fügt einen Kindknoten unter x ein
– x.removeChild(node) – entfernt einen Kindknoten von x
9
Weiteres JavaScript-Beispiel
• xmlDoc das DOM Objekt, das der Parser erzeugt hat
• getElementsByTagName("title")[0] das erste Element im Array aller <title>- Elemente
• childNodes[0] das erste Element im Array der Kinder
• nodeValue der Wert des Knotens (der Text)
10
txt =
xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue
23.10.2013
6
Zugriff auf DOM-Knoten
• Mit der Methode getElementsByTagName()
• Durch Traversierung des Baumes
• Durch Navigation im Baum mit Verwendung
der Knoten-Relationen
11
Eventhandler
• Viele HTML Elemente können mit JavaScript- Eventhandlern ausgestattet werden, z.B.: onAbort, onClick, onFocus, onLoad, onMouseover, onSelect, onSubmit, etc.
• Es können JavaScript-Ausdrücke angegeben werden, die beim jeweiligen Ereignis ausgeführt werden.
• Die Reihenfolge der Ausführung der Eventhandler muss genau bedacht werden. Beispiel: Ein Knopf hat gleichzeitig die Eventhandler onClick, onFocus, onMouseover und onSubmit definiert. Was passiert in so einem Fall?
12
23.10.2013
7
DOM-Knoten
• Namen des Knotens: nodeName – kann nicht verändert werden
– entspricht der Bezeichnung des Tags,
– bei Attributen dem Attributnamen,
– bei Textknoten dem enthaltenen Text
• Wert eines Knotens: nodeValue – Elementknoten haben keinen Wert
– Textknoten haben als Wert den Text
– Attributknoten haben als Wert den Attributwert
• Typ eines Knotens: nodeType – Element, Attribute, Text, Comment, Document
13
G. Görz, FAU, Informatik 8
Firefox
DOM
Inspector
23.10.2013
8
G. Görz, FAU, Informatik 8
DOM Spezifikationen
• Level 1: Core – HTML und XML Dokument-Struktur (Modell)
– Navigation im Baum, Manipulation
• Level 2: Formatvorlagen / Style Sheet – Veränderung der Formatinformationen an den Knoten des
Baumes
– Eventhandler – Funktionen für die Interaktion
– XML-Namensräume
• Level 3: – Laden und Speichern von Dokumenten
– DTD- und Schema-Unterstützung
– Definition von Sichten und Formatierung
• Weitere Ebenen: Verwendung von Fenstern, Interaktion
16 [http://xml.coverpages.org/dom.html]
23.10.2013
9
XPath
Übersicht
• DOM – Document Object Model
• XPath – Schritte und Pfadbeschreibungen
– Achsen
– Weitere Konzepte
– Knotentypen, Abkürzungen und Datentypen
– Funktionen
• XLink und XPointer
• Zusammenfassung
18
23.10.2013
10
Quelle
• Weitgehend entnommen aus:
Anders Møller, Michael I. Schwartzbach
“An Introduction to XML and Web
Technologies”
Addison-Wesley, January 2006
• http://www.brics.dk/ixwt/
19
Was ist XPath?
• Eine Notation, um (Teile von) Bäume(n) zu beschreiben und
• um in Bäumen zu navigieren.
• Wird verwendet in: – XSLT (Transformation von XML in andere Formate)
– XML Schema (zur Definition von Eindeutigkeit und Gültigkeit von Elementen)
– XLink und XPointer (Relationen)
20
23.10.2013
11
XPath
• Syntax zur Beschreibung von Teilen eines XML-Dokumentes
• Mischung aus Pfadausdrücken (wie in einer Kommandozeile/Shell) und einfachen Programmiersprachenausdrücken – *.xml – Alle Dateien mit der Endung „.xml“
– z.B.: /body/table[@border="1"]
• Ein XSLT-Stylesheet verwendet XPath-Ausdrücke in den Attributen match und select der verschiedenen Elemente <xsl:template match="/">
<xsl:value-of select=".">
<xsl:apply-templates select="/rezept/zutaten/item/">
21
Unser Beispiel ...
22
<rezept>
<titel>Spaghetti Carbonara</titel>
<zutaten>
<item gewicht="250g">Spaghetti</item>
<item gewicht ="10g">Butter</item>
<item menge="3">Eier</item>
<item>Knoblauch</item>
</zutaten>
<zubereitung>
Spaghetti Carbonara ist die klassische ..
<zubereitung/>
<infos>
<schwierigkeit>2</schwierigkeit>
<dauer min="20" arbeit="zubereitung"/>
<dauer min="20" arbeit="gesamt"/>
</infos>
</rezept>
23.10.2013
12
... als XML-Baum
23
rezept
titel
Spaghetti Carbonara
zutaten
item
gewicht
250g
Spaghetti
item
gewicht
10g
Butter
item
menge
3
Eier
item
Knoblauch
zubereitung
Spaghetti Carbonara ist die
klassische ..
infos
schwierigkeit
2
dauer
min
20
arbeit
zubereitung
dauer
min
20
arbeit
gesamt
Location Path / Step
Pfadbeschreibung / Schritt
24
23.10.2013
13
Location Path (1)
• Zwei Arten von „Location Paths“ (Pfadbeschreibungen)
• Relativer Pfad – Ein oder mehrere Schritte (von links nach rechts), verbunden
durch „/“
– Jeder Schritt wählt eine Menge von Knoten aus – relativ zum Kontext (d.h. Startknoten)
– Jeder Knoten dieser Menge dient als Kontext für den nächsten Schritt.
– Die Ergebnismengen jedes Schrittes werden vereinigt (Vereinigungsmenge).
• Absoluter Pfad – Ein absoluter Pfad besteht aus „/“, gefolgt von einem relativen
Pfad.
– „/“ wählt den Wurzelknoten des Dokuments aus.
25 [http://www.w3.org/TR/xpath#location-paths]
Location Path (2)
• Eine Pfadbeschreibung ist ...
– eine Folge (Sequenz) von Knoten
– und enthält keine Duplikate der Knoten.
• Allgemeine Form:
schritt1 / schritt2 / ... / schrittN
26
23.10.2013
14
Die Auswertung einer
Pfadbeschreibung
• Ein Schritt bildet einen Kontext (Knoten) in eine
Folge (Sequenz) von Knoten ab.
• Mit einem Schritt werden also Folgen von Knoten
in Sequenzen abgebildet:
– Jeder Knoten (des vorherigen Schritts) wird als Kontext
verwendet
– und wird durch das Ergebnis der Abbildung ersetzt.
• Das Ergebnis eines Schritts dient als
Ausgangspunkt (Kontext) des nächsten Schritts.
27
Beispiel
28
A
B
C
E E E
C
F
B
D
C
E E
F
E
F
descendant::C Kontext
23.10.2013
15
Beispiel
29
A
B
C
E E E
C
F
B
D
C
E E
F
E
F
descendant::C/child::E
Beispiel
30
A
B
C
E E E
C
F
B
D
C
E E
F
E
F
descendant::C/child::E/child::F
Kontext
Schritt 1
Schritt 2
Schritt 3 / Ergebnis
23.10.2013
16
Kontext
• Ein Kontext besteht aus:
– einem Knoten (ein Knoten im XML Baum)
– eine Position (position) und Größe (size)
... und zusätzlich aus ...
– einer Menge von Variablenbindungen (variable bindings)
– einer Menge von Funktionen (function library)
– einer Menge von Namensraum-Deklarationen (namespace declarations)
• Der initiale Kontext wird durch die Anwendung bestimmt
• Beginnt der Pfadausdruck mit „/“, dann
– ist der initiale Kontext der Wurzelknoten und
– die initiale Position und Größe sind jeweils 1. 31
XPath Datenmodell
• Ausgangspunkt ist das „XML Information Set“ (Infoset), das die zulässigen Informationen in einem geparsten (und wohlgeformten) XML Dokument definiert.
• Für XPath gilt zusätzlich: – Es werden die Datentypen von XML Schema unterstützt.
D.h. complex und simple Datatypes (siehe XML Schema).
– Die Repräsentation von Sammlungen (collection) von Dokumenten und komplexen Werten.
– Unterstützung typisierte atomarer Werte
– Unterstützung geordneter, heterogener Sequenzen
• http://www.w3.org/TR/xpath-datamodel/
32
23.10.2013
17
Location Step (Schritt)
• Ein Schritt (Location Step) besteht aus:
– einer Achse (axis),
– einem Knotentest (node test) und
– Ausdrücken (expression), die als Prädikate
dienen.
• Allgemeine Form
achse :: knotentest [expr1] [expr2]
33
Achsen
34
23.10.2013
18
Achsen
• Eine Achse ist eine Sequenz von Knoten
• Die Achse wird relativ zum Kontextknoten bestimmt (ausgewertet)
• XPath unterscheidet 12 Achsen:
35
child parent
self attribute
ancestor descendant
ancestor-or-self descendant-or-self
preceding-sibling following-sibling
preceding following
Richtung einer Achse
• Jede Achse hat eine Richtung
• Vorwärts (forward) – in Dokument-Richtung – child, descendant, following-sibling, following, self, descendant-or-self
• Rückwärts (backward) – gegen die Dokument-Richtung – parent, ancestor, preceding-sibling, preceding
• Ohne Richtung – aber abhängig von der Implementierung – attribute
36
23.10.2013
19
parent Achse
37
A
B
C
E E E
C
F
B
D
C
E E
F
E
F
child Achse
38
A
B
C
E E E
C
F
B
D
C
E E
F
E
F
23.10.2013
20
descendant Achse
39
A
B
C
E E E
C
F
B
D
C
E E
F
E
F
ancestor Achse
40
A
B
C
E E E
C
F
B
D
C
E E
F
E
F
23.10.2013
21
following-sibling Achse
41
A
B
C
E E E
C
F
B
D
C
E E
F
E
F
preceding-sibling Achse
42
A
B
C
E E E
C
F
B
D
C
E E
F
E
F
23.10.2013
22
following Achse
43
A
B
C
E E E
C
F
B
D
C
E E
F
E
F
preceding Achse
44
A
B
C
E E E
C
F
B
D
C
E E
F
E
F
23.10.2013
23
Achsen
45
preceding
ancestor
descendant
following
self
Achsen
46
preceding
ancestor
descendant
following
self
preceding-sibling
following-sibling
23.10.2013
24
Knotentypen, Abkürzungen
und Datentypen
47
Knotentypen
• Element-Knoten
– Knoten im Baum, der einem Element
entspricht.
• Text-Knoten
– entspricht dem Text in einem XML-Baum
• Attribut-Knoten
– repräsentiert ein Attribut
48
23.10.2013
25
Knotentest (node test)
Knotentest Auswahl
text() ein Text-Knoten (nur der Text zwischen den Tags)
comment() ein Kommentar-Knoten <!-- -->
processing-
instruction()
<? ... >
node() Liefert Elemente, die durch Tags eingeschlossen sind
und zusätzlich alle Text-Knoten, die sich vor, zwischen
und nach den Elementen befinden.
* Elemente umschlossen durch Tags, die einen
beliebigen Namen haben.
QName Elemente umschlossen durch Tags, die einen
bestimmten Namen haben.
*:NCName beliebiger Namespace, bestimmtes Tag
NCName:* bestimmter Namespace, beliebiges Tag 49
Abkürzungen für XPath
Ausdrücke
• Attribute: @
• Der Kontext: .
• Der Eltern-Kontext: ..
• Die Descendant-Achse (ab Wurzel): //
• Die Kind-Achse: (... Durch Weglassen)
50
23.10.2013
26
Abkürzungen
51 [http://www.brics.dk/ixwt/]
Weitere Beispiele für Abkürzungen
Abkürzung Langform
* child::element()
text() child::text()
@maker attribute::maker
@* attribute::*
x//y child::x/descendant::y
. self::node()
.. parent::node()
../@maker parent::node()/attribute::maker
car[5] child::car[position()=5]
car[@maker="US"] child::car/self::node()[maker="US"]
car[milage] child::car/self::node()[child::milage]
52
23.10.2013
27
Atomisierung (Atomization)
• Eine Sequenz kann atomisiert werden.
• Aus einer Sequenz von Knoten wird eine
Sequenz von atomaren Werten.
• Für einen Element-Knoten:
die Konkatenation aller „descendant“ Text-
Knoten
• Für alle anderen Knoten: „der naheliegende
Inhaltsstring“
53
Datentypen
XPath 1.1
• Knotenmenge
• Boolesche Werte
• Zahl (Fließkommazahl)
• String
XPath 2.0 – XML-Schema • xs:string
• xs:boolean
• xs:decimal
• xs:float
• xs:double
• xs:duration
• xs:dateTime
• xs:time
• xs:date
• xs:gYearMonth
• xs:gYear
• xs:gMonthDay
• xs:gDay
• xs:gMonth
• xs:hexBinary
• xs:base64Binary
• xs:anyURI
• xs:QName
• xs:NOTATION
54
23.10.2013
28
Expressions
Ausdrücke
55
Location Step (Wiederholung)
• Ein Schritt (Location Step) besteht aus:
– einer Achse (axis),
– einem Knotentest (node test) und
– Ausdrücken (expressions), die als Prädikate
dienen.
• Allgemeine Form
achse :: knotentest [expr1] [expr2]
56
23.10.2013
29
Xpath-Ausdrücke
• Expression
– OrExpression
• AndExpression
– EqualityExpression
» RelationalExpr
...
• XPathExpression – LocationPath
– FilterExpression • PrimaryExpression
– VariableReference
– Literal
– Number
– FunctionCall
• Predicate
– RelativeLocationPath • Step
– AxisSpecifier
– ...
57
Allgemeine Ausdrücke
• Jeder Ausdruck evaluiert zu
– einem atomaren Wert oder
– einer Sequenz von Knoten
• Atomare Werte sind (in XPath 2):
– Zahlen
– Boolesche Werte
– Unicode-Strings
– Datentypen – definiert durch ein XML Schema
58
23.10.2013
30
Prädikate
Ein Prädikat ist ein:
• allgemeiner Xpath-Ausdruck, der in Bezug auf den Kontext ausgewertet wird.
• Das Ergebnis wird in einen Wahrheitswert umgewandelt: – Wenn das Ergebnis des Xpath-Ausdrucks eine Zahl ist
und der aktuellen Position im Kontext entspricht.
– Wenn das Ergebnis des Xpath-Ausdrucks ein nicht leerer String (Zeichenkette) ist.
– Wenn das Ergebnis ist eine nicht leere Sequenz (von Knoten) ist.
59
Literale Ausdrücke
60
23.10.2013
31
Arithmetische Ausdrücke
• +, -, *, div, idiv, mod
• Die Operatoren werden auf Mengen
verallgemeinert:
– Wenn ein Argument leer ist, dann ist das Ergebnis
leer.
– Wenn alle Argumente Sequenzen einzelner
Zahlen sind, dann wird die Operation ausgeführt.
– Andernfalls tritt ein Fehler auf.
61
Variablen-Referenzen
• $foo
• $bar:foo – Variablennamen können „:“
enthalten.
• $foo-17 – Variablennamen können „-“
enthalten.
– Vorsicht mit arithmetischen Ausdrücken:
– ($foo)-17, $foo -17, $foo+-17
62
23.10.2013
32
Sequenz-Ausdrücke
(XPath 2.0)
• Das Komma „ , “ konkateniert Sequenzen
• Ganzzahlige Sequenzen werden mit „to“ erzeugt.
• Operatoren: „union“, „intersect“, „except“
• Sequenzen werden immer flach geklopft
(flattened)
• Die folgenden Beispiele liefern dasselbe
Ergebnis:
63
Filter-Ausdrücke
• Filter-Ausdrücke erweitern Prädikate zu
beliebigen Sequenzen
• Der Ausdruck „ . “ ist der Kontext
• Der Ausdruck
hat das Ergebnis
64
23.10.2013
33
Wert-Vergleiche
• Operatoren: eq, ne, lt, le, gt, ge
• werden für atomare Werte verwendet
• Wenn ein Wert-Vergleich auf beliebige Argumente angewandt wird, dann ... – atomisieren
– wenn ein Argument leer ist, dann ist das Ergebnis leer
– wenn ein Argument eine Sequenz mit length > 1 ist, dann false
– wenn unvergleichbar, dann Laufzeitfehler;
– ansonsten werden die beiden atomaren Werte verglichen
65
Allgemeine Vergleiche
• Operatoren: =, !=, <, <=, >, >=
• Wenn allgemeine Vergleich auf beliebigen
Argumenten verwendet werden, dann
– atomisieren
– wenn die beiden Argumente jeweils einen Wert
enthalten, deren Vergleich erfolgreich ist, dann ist
der allgemeine Vergleich erfolgreich (wahr)
– andernfalls, falsch.
66
23.10.2013
34
Knoten-Vergleiche
• Operatoren: is, <<, >>
• Vergleicht Knoten in Bezug auf Identität und Reihenfolge
• Beim Vergleich beliebiger Argumente: – wenn eines der Argumente leer ist, dann ist auch das
Ergebnis leer
– Wenn beides einzelne Knoten sind, dann werden diese verglichen
– andernfalls: Laufzeitfehler
67
Boolesche Ausdrücke
• Operatoren: and, or
• Argumente werden in Boolesche Werte umgewandelt. Das Ergebnis ist falsch, wenn das Argument – Der Boolesche Wert falsch,
– die leere Sequenz,
– die leere Zeichenkette,
– die Zahl 0 ist.
• Konstante Werte werden mit den Funktionen fn:true() und fn:false() angegeben,
• Negation mit fn:not(...)
68
23.10.2013
35
Funktionen
69
Benutzung von Funktionen
• Als Ausdrücke innerhalb von eckigen Klammern
• Mit leeren Argumenten
– dann bezieht sich die Funktion auf das Ergebnis des
vorangegangenen Xpath-Ausdrucks.
• Mit Argument
– dann wird die Funktion auf das Argument angewendet.
70
zeile[fn:last()] (letztes zeile-Element)
zeile[fn:position() mod 2 =0]
(alle geradzahligen zeile-Elemente)
fn:count(/body/table[@border="1"])
23.10.2013
36
XPath 1 vs. 2
• Funktionen in
Kategorien
– Kontext
– Knoten-Info
– Konvertierung von
Datentypen
– Manipulation von
Zeichenketten
– Arithmetische
Funktionen
• Deutlich erweitert
• Eigener Namespace
„fn:...“
• Benutzer-
definierbare
Funktionen
71
Funktionsaufrufe
• Manche Funktionen können mit Sequenzen oder
mit mehreren Argumenten aufgerufen werden
(siehe Aggregat/Sequenz-Funktionen):
72
23.10.2013
43
Tools und Links
85
XPath 3.0
• What‘s new in XPath 3.0 by M. Kay
• Whats_new_3.0_XPath_XSLT_XSD_1_1.pdf
86
23.10.2013
44
Links
• W3C Xpath 2.0 Spezifikation http://www.w3.org/TR/2010/REC-xpath20-20101214/ http://www.w3.org/TR/xpath20/
• Quick Reference Cards XML, XSLT etc. http://www.mulberrytech.com/quickref/
• Mike Kay's Saxon documentation http://www.saxonica.com/documentation/ http://www.saxonica.com/documentation/functions/intro.xml
• Priscilla Walmsley's XQuery functions http://www.xqueryfunctions.com/
• zvon.org
• http://qutoric.com/xslt/analyser/xpathtool.html
• Dave Pawson – http://www.dpawson.co.uk/xsl/rev2/xslt2.pdf
– http://www.dpawson.co.uk/xsl/
87
www.zvon.org
88
23.10.2013
45
XLink und XPointer
XPath, XLink, XPointer und
XSLT
90
XQuery
XPointer
XLink
XPath
XSLT
23.10.2013
46
XPointer
• Dient zur Identifikation eines Teils eines XML
Dokuments. xlink:href="index.xml#r102"
Varianten:
– Einfache Verweise
• element(...)
• xpointer(...)
91
# Symbol XPointer
Xpointer: Varianten (1)
• Einfache Verweise auf ein Element mit einem ID Attribut
..#r102
– element(...) durch Abzählen der Elemente,
beginnend bei der Wurzel des Dokuments.
..#element(/1/5)
92
23.10.2013
47
Xpointer: Varianten (2)
• xpointer(...) ..#xpointer(//recipe[4])
..#xpointer(//rcp:recipe[./rcp:title ='Zuppa
Inglese'])
Der xpointer(...) Ausdruck kann enthalten: – Einen Xpath-Ausdruck
– und zusätzliche (XPath) Funktionen
• Punkte vor oder nach XML-Elementen start-point(), end-point(), ...
• Bereiche zwischen XML-Elementen range(), range-to(), ...
• Ausgewählte Bereiche in Freitext string-range(), ...
93
XLink
• XLink verallgemeinert Hyperlinks von HTML auf XML – erlaubt viele-zu-viele (many-to-many) Relationen
– erlaubt „third party“ Links
– lässt beliebige Elementnamen zu
• Die Spezifikation eines XLinks erfolgt durch spezielle XLink (Tag) Attribute
• Wird wenig benutzt
94
23.10.2013
48
Ein Xlink-Beispiel (1)
95
<mylink xmlns:xlink="http://www.w3.org/1999/xlink"
xlink:type="extended">
<myresource xlink:type="locator"
xlink:href="students.xml#Carl"
xlink:label="student"/>
<myresource xlink:type="locator"
xlink:href="students.xml#Fred"
xlink:label="student"/>
<myresource xlink:type="locator"
xlink:href="teachers.xml#Joe"
xlink:label="teacher"/>
<myarc xlink:type="arc"
xlink:from="student" xlink:to="teacher"/>
</mylink>
Ein Xlink-Beispiel (2)
96 „Carl und Fred sind Studenten von Joe“
student
student
teacher
23.10.2013
49
Xlink-Varianten
• Einfache Links
• HTML Links (in XLink)
• HLinks
97
Abkürzung für einfache Links
98
<mylink xlink:type="simple"
xlink:href="..." xlink:show="..." .../>
<mylink xlink:type="extended">
<myresource xlink:type="resource"
xlink:label="local"/>
<myresource xlink:type="locator"
xlink:label="remote" xlink:href="..."/>
<myarc xlink:type="arc"
xlink:from="local"
xlink:to="remote" xlink:show="..."
.../>
</mylink>
23.10.2013
50
HTML-Links in XLink
99
<a xlink:type="simple"
xlink:href="..."
xlink:show="replace"
xlink:actuate="onRequest"/>
HLink Tag
100
<hlink namespace="http://www.w3.org/1999/xhtml"
element="a"
locator="@href"
effect="replace"
actuate="onRequest"
replacement="@target"/>
23.10.2013
51
Online-Quellen
• http://www.w3.org/TR/xpath/
• http://www.w3.org/TR/xpath20/
• http://www.w3.org/TR/xlink/
• http://www.w3.org/TR/xptr-framework/
101
Aus dem anderen Foliensatz
102
23.10.2013
52
Boolesche Ausdrücke
• Operatoren: and, or
• Argumente werden in Boolesche Werte umgewandelt. Das Ergebnis ist falsch, wenn das Argument – Der Boolesche Wert falsch,
– die leere Sequenz,
– die leere Zeichenkette,
– die Zahl 0 ist.
• Konstante Werte werden mit den Funktionen true() und false() angegeben,
• Negation mit not(...)
103
Funktionen
104
23.10.2013
53
Benutzung von Funktionen
• Als Ausdrücke innerhalb von eckigen Klammern
• Mit leeren Argumenten
– dann bezieht sich die Funktion auf das Ergebnis des
vorangegangenen Xpath-Ausdrucks.
• Mit Argument
– dann wird die Funktion auf das Argument angewendet.
105
zeile[last()] (letztes zeile-Element)
zeile[position() mod 2 =0]
(alle geradzahligen zeile-Elemente)
count(/body/table[@border=“1“])
XPath 1 vs. 2
• Funktionen in
Kategorien
– Kontext
– Knoten-Info
– Konvertierung von
Datentypen
– Manipulation von
Zeichenketten
– Arithmetische
Funktionen
• Deutlich erweitert
• Eigener Namespace
„fn:...“
• Benutzer-
definierbare
Funktionen
106
23.10.2013
62
XPath, XLink, XPointer und
XSLT
123
XQuery
XPointer
XLink
XPath
XSLT
XPointer
• Dient zur Identifikation eines Teils eines XML
Dokuments. xlink:href="index.xml#r102"
Varianten:
– Einfache Verweise
• element(...)
• xpointer(...)
124
# Symbol XPointer
23.10.2013
63
Xpointer: Varianten (1)
• Einfache Verweise auf ein Element mit einem ID Attribut
..#r102
– element(...) durch Abzählen der Elemente,
beginnend bei der Wurzel des Dokuments.
..#element(/1/5)
125
Xpointer: Varianten (2)
• xpointer(...) ..#xpointer(//recipe[4])
..#xpointer(//rcp:recipe[./rcp:title ='Zuppa
Inglese'])
Der xpointer(...) Ausdruck kann enthalten: – Einen Xpath-Ausdruck
– und zusätzliche (XPath) Funktionen
• Punkte vor oder nach XML-Elementen start-point(), end-point(), ...
• Bereiche zwischen XML-Elementen range(), range-to(), ...
• Ausgewählte Bereiche in Freitext string-range(), ...
126
23.10.2013
64
XLink
• XLink verallgemeinert Hyperlinks von HTML auf XML – erlaubt viele-zu-viele (many-to-many) Relationen
– erlaubt „third party“ Links
– lässt beliebige Elementnamen zu
• Die Spezifikation eines XLinks erfolgt durch spezielle XLink (Tag) Attribute
• Wird wenig benutzt
127
Ein Xlink-Beispiel (1)
128
<mylink xmlns:xlink="http://www.w3.org/1999/xlink"
xlink:type="extended">
<myresource xlink:type="locator"
xlink:href="students.xml#Carl"
xlink:label="student"/>
<myresource xlink:type="locator"
xlink:href="students.xml#Fred"
xlink:label="student"/>
<myresource xlink:type="locator"
xlink:href="teachers.xml#Joe"
xlink:label="teacher"/>
<myarc xlink:type="arc"
xlink:from="student" xlink:to="teacher"/>
</mylink>
23.10.2013
65
Ein Xlink-Beispiel (2)
129 „Carl und Fred sind Studenten von Joe“
student
student
teacher
Xlink-Varianten
• Einfache Links
• HTML Links (in XLink)
• HLinks
130
23.10.2013
66
Abkürzung für einfache Links
131
<mylink xlink:type="simple"
xlink:href="..." xlink:show="..." .../>
<mylink xlink:type="extended">
<myresource xlink:type="resource"
xlink:label="local"/>
<myresource xlink:type="locator"
xlink:label="remote" xlink:href="..."/>
<myarc xlink:type="arc"
xlink:from="local"
xlink:to="remote" xlink:show="..."
.../>
</mylink>
HTML-Links in XLink
132
<a xlink:type="simple"
xlink:href="..."
xlink:show="replace"
xlink:actuate="onRequest"/>
23.10.2013
67
HLink Tag
133
<hlink namespace="http://www.w3.org/1999/xhtml"
element="a"
locator="@href"
effect="replace"
actuate="onRequest"
replacement="@target"/>
Online-Quellen
• http://www.w3.org/TR/xpath/
• http://www.w3.org/TR/xpath20/
• http://www.w3.org/TR/xlink/
• http://www.w3.org/TR/xptr-framework/
134