67
23.10.2013 1 DOM und XPath 05 G. Görz, J. Schneeberger Department Informatik KI [email protected] [email protected] 1 Übersicht DOM Document Object Model XPath Schritte und Pfadbeschreibungen Achsen Weitere Konzepte Knotentypen, Abkürzungen und Datentypen Funktionen XLink und XPointer Zusammenfassung 2

DOM und XPath 05 -  · –Knoten im Baum, der einem Element entspricht. •Text-Knoten –entspricht dem Text in einem XML-Baum •Attribut-Knoten –repräsentiert ein Attribut 48

Embed Size (px)

Citation preview

23.10.2013

1

DOM und XPath

05

G. Görz, J. Schneeberger

Department Informatik – KI

[email protected]

[email protected]

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

37

Arithmetische Funktionen

73

Boolesche Funktionen

74

23.10.2013

38

String-Funktionen

75

Funktionen mit regulären

Ausdrücken

76

23.10.2013

39

Kardinalitäts-Funktionen

77

Funktionen auf Sequenzen

78

23.10.2013

40

Aggregat-Funktionen

79

Knoten-Funktionen

80

23.10.2013

41

Umwandlungs-Funktionen

81

For-Schleife

82

23.10.2013

42

Bedingungen

83

Quantifizierte Ausdrücke

84

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

54

Funktionsaufrufe

107

Arithmetische Funktionen

108

23.10.2013

55

Boolesche Funktionen

109

String-Funktionen

110

23.10.2013

56

Funktionen mit regulären

Ausdrücken

111

Kardinalitäts-Funktionen

112

23.10.2013

57

Funktionen auf Sequenzen

113

Aggregat-Funktionen

114

23.10.2013

58

Knoten-Funktionen

115

Umwandlungs-Funktionen

116

23.10.2013

59

For-Schleife

117

Bedingungen

118

23.10.2013

60

Quantifizierte Ausdrücke

119

Tools

120

23.10.2013

61

www.zvon.org

121

XLink und XPointer

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