Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
1
Xlink / Xpointer - Framework
Seminar: Verteilte Systeme Markus Schulz
2
Gliederung 1/2 XLink Zielsetzung Syntax Simple Links Extended Links
Zusammenfassung Verteilte Systeme
3
Gliederung 2/2 XPath XPointer Anwendungen Zielsetzung Grundlagen
Syntax Zusammenfassung XPointer Überblick Bare-Names/Child Sequence/FullXPointer Anwendungen Verteilte Systeme
4
XLink - Zielsetzung 1/2 Bekanntes aus der HTML Welt:
<a href=“ <img src=“ Link Page1.html Page2.html Verteilte Systeme
5
XLink - Zielsetzung 2/2 Nachteil:
Links gerichtet: lokale -> entfernte Ressource Gebunden an spezifische Elemente (Tagnamen) Ziel: Einheitliche Syntax Flexibel Implementierungsunabhängig Verteilte Systeme
6
XLink - Syntax globale Attribute im Namensraum -> Jedes Element kann Xlink sein <node xmlns:xlink=“ xlink:type=„simple“ xlink:href=„ Mindestens type Attribut + Parameter Beschreibende Elemente müssen direkte Kinder sein Keine Verschachtelung von XLink Verteilte Systeme
7
Xlink – Simple 1/4 Einfachste Form eines Xlink
<link xlink:type=„simple“ xlink:href=„ Steuerung der Anzeige <link xlink:type=„simple“ xlink:href=„ xlink:show=„new“>Heise</link> Verteilte Systeme
8
Xlink – Simple 2/4 Werte für show Attribute:
Replace: ersetze das aktuelle Dokument New: Öffne in neuem Fenster (target=“_blank”) Embed: Ersetze Element durch Inhalt der Ressource (<img src=“”>) Other: keine Vorgabe, suche im Kontext None: keine Vorgabe Verteilte Systeme
9
Xlink – Simple 3/4 Steuerung der Ausführung Attribute Actuate:
onRequest: Auf Anforderung des Nutzers onLoad: beim Laden des Dokumentes Other: keine Vorgabe, suche im Kontext None: keine Vorgabe Bsp. < link xlink:type=„simple“ xlink:href=„ xlink:show=„embed“ xlink:actuate=„onLoad“>Heise</link> Verteilte Systeme
10
Xlink – Simple 4/4 Beschreibung des Links Attribute title:
Enthält für Menschen gedachte Beschreibung des Links Attribute role: Enthält URI, dessen Ressource den Zweck oder weitere Informationen des Links enthält Bsp. <websuche xlink:type=“simple” xlink:href=“ xlink:role=“ Verteilte Systeme
11
Xlink – Extended 1/6 Bisher mit Simple Links: Gewünscht: Link Link
Verteilte Systeme
12
Xlink – Extended 2/6 Einsatz des Extended Links Bsp.
<link xlink:type=„extended“> <src xlink:type=„resource“ xlink:label=„src“>Download</src> <dst1 xlink:type=„locator“ xlink:href=„ xlink:label=„dst“/> <dst2 xlink:type=„locator“ xlink:href=„ </link> Lokale Ressource Entfernte Ressource Verteilte Systeme
13
Xlink – Extended 3/6 <link xlink:type=„extended“>
<src xlink:type=„resource“ xlink:label=„src“>Download</src> <dst1 xlink:type=„locator“ xlink:href=„ xlink:label=„dst“/> <dst2 xlink:type=„locator“ xlink:href=„ <link xlink:type=„arc“ xlink:from=„src“ xlink:to=„dst“ xlink:actuate=„onRequest“/> </link> Verknüpfung Verteilte Systeme
14
Xlink – Extended 4/6 Download http://www.xyz.de/dl1.zip
Verteilte Systeme
15
Xlink – Extended 5/6 Linkbase
Auslagerung von Linkzielen in separate Dokumente Angabe als spezielles Arcrole Attribute <link xlink:type=“extended”> <doc xlink:type=“locator” xlink:href=“doc.xml” xlink:label=“doc”/> <links xlink:type=“locator” xlink:href=“links.xml” xlink:label=“links”/> <arc xlink:type=“arc” xlink:from=“doc” xlink:to=“links” xlink:actuate=“onLoad” xlink:arcrole=“ </link> Verteilte Systeme
16
Xlink – Extended 6/6 Externe Dokumente Dokument Links.xml Linkbase
Doc.xml Externe Dokumente Verteilte Systeme
17
Xlink – Zusammenfassung
Beschreibung von Links zwischen Dokumenten Auslagerung von Links in separate Dokumente Frage: wie verlinke ich Teile von Dokumenten? Antwort: -> XPointer Verteilte Systeme
18
XPath – Zielsetzung Bekanntes aus der HTML Welt
<h2><a name=“kapitel1”>Kapitel 1</a></h2> Verweis auf diese Stelle durch: <a href=“seite.html#kapitel1”>Zum Kapitel 1</a> Nachteil: Abhängig von speziellen Elementen Schreibzugriff auf das zu verweisende Dokument Lösung: Adressierung über Elementbaum Verteilte Systeme
19
XPath – Grundlagen 1/2 Modelliert XML Dokument als Baum
Knotentypen: Elementknoten, Attributknoten, Textknoten Bsp. Dokument <rezept> <zutat id=“mehl”>200g Mehl</zutat> <anleitung> Zuerst nehmen <b>Sie das Mehl</b> und mischen </anleitung> </rezept> Verteilte Systeme
20
XPath – Grundlagen 2/2 / Id b Rezept Zutat Anleit. 200g Mehl
Zuerst nehmen und mischen Sie das Mehl Verteilte Systeme
21
XPath – Syntax Grundsätzlich besteht Ausdruck aus Lokalisierungspfad
Lokalisierungspfad = Relativer Pfad | Absoluter Pfad Absoluter Pfad = ‘/’ Relativer Pfad Relativer Pfad = Step | Relativer Pfad ‘/’ Step Einfaches Bsp. /child::Rezepte/child::* Verteilte Systeme
22
XPath – Syntax - Schritte
3 Bestandteile: Eine Achse, spezifiziert Beziehung zwischen ausgewählten Knoten und Kontextknoten Knotentest, gibt den Knotentyp an Prädikate die die ausgewählte Knotenmenge weiter verfeinern können Child:: Rezept Child:: Rezept [position()>1][…] Verteilte Systeme
23
XPath – Syntax - Achsen 1/3
Child, direkte Kinder des Kontextknotens Verteilte Systeme
24
XPath – Syntax - Achsen 2/3
Descendant, alle Nachkommen des Kontextknotens Verteilte Systeme
25
XPath – Syntax - Achsen 3/3
Achsen einteilbar in: ancestor preceding following self descendant Verteilte Systeme
26
XPath – Syntax - Knotentest
Achse::*, wählt alle Knoten auf der spezifizierten Achse aus Achse::xlink:* alle Knoten auf der Achse mit Namensraum xlink Achse::text() wählt alle Textknoten Achse::comment() wählt alle Kommentarknoten Achse::Bezeichner wählt Knoten mit dem Namen Bezeichner aus (node() für alle Knoten) Verteilte Systeme
27
XPath – Syntax - Prädikate 1/2
Wichtig: Richtung der Achse entscheidend (vorwärts oder rückwärts gerichtet) Achse::*[position()=1] Preceding-sibling::*[position()=1] Following-sibling::*[position()=1] Verteilte Systeme
28
XPath – Syntax - Prädikate 2/2
Count(Knotenset) liefert die Anzahl der Knoten Id(Name) liefert Elemente mit der ID = „Name“ String(object) konvertiert Objekt in Zeichenkette Elementknoten: Verkettung der Zeichenkette aller Element- und Text-Kindknoten Attributknoten: Attributwert Textknoten: enthaltene Zeichendaten Verteilte Systeme
29
XPath – Syntax - Kurzformen
Für einfachere Schreibweise //h2 => /descendant-or-self::node()/child::h2 => wählt alle h2 Knoten des Dokumentes aus => attribute::Name => wählt alle Knoten mit Namen Element und Attribut Name aus Para[1] => ./child::Para/child::*[position()=1] wählt ersten Kindknoten vom Kind Para des Kontextknotens Verteilte Systeme
30
XPath – Zusammenfassung
Flexible Navigation im Dokumentenbaum möglich Nachteil: Ergebnis immer vollständige Knotenmenge Wunsch: Selektiere ab dem 5. Zeichen des zweiten <p> Elements bis zum 10.Zeichen des dritten <p> Elements? Verteilte Systeme
31
XPointer – Überblick Adressierung wird an URI angehangen
Xlink:href=“ Ausdruck>” 3 verschiedene Adressierungsarten Bar Names Child Sequence Full Xpointer Verteilte Systeme
32
XPointer – Bare Names Einfachste Form
Bsp. Xlink:href=„ Adressiert das erste Element welches ein Attribut id=“Title” enthält <start> <element id=“Title”>Titel</element> </start> Verteilte Systeme
33
XPointer – Child Sequence
Adressiert Elemente über schrittweise Auflösung von Zahlen getrennt durch ‚/‘ /1/3/5 adressiert das gleiche Element wie XPath mit: /child::*[1]/child::*[3]/child::*[5] Kombination mit vorangestelltem Bare-Names möglich Title/1/3/5 Verteilte Systeme
34
XPointer – Full XPointer – Points
Syntax: xlink:href=„URI#xpointer(Ausdruck)“ Kann auf Knoten, Knotenmengen aber auch Punkte innerhalb von Knoten zeigen Bsp. Doc.xml#xpointer(/start/text()[1]/point()[3]) <start> Hallo <b>dies</b> ist ein Text </start> Zeigt auf die Stelle zwischen den beiden „l“ Verteilte Systeme
35
XPointer – Full XPointer – Points
Auch auf Attribute, Kommentare und Processing Instructions anwendbar Bsp. <start> Hallo <b type=“extra dick”>dies</b> ist ein Text </start> Zeigt vor das Zeichen „e“ des Attributes type Verteilte Systeme
36
XPointer – Full XPointer – Range
Festgelegt durch 2 Punkte Funktionen: Range(): gibt den Knoten mit Tags aus Xpointer(range(/h2)) Range-inside(): gibt den Inhalt des Knotens Range-to(): gibt den Bereich zwischen 2 Elementen Xpointer(/h1[1]/range-to(/h2[1])) Verteilte Systeme
37
XPointer – Full XPointer –Stringrange
String-range() Funktion ignoriert Markup-Elemente zwischendrin Bsp. Xpointer(string-range(/h2,“Überschrift“)) <h2>Über<b>s</b>chrift</h2> Bsp. Xpointer(string-range(/h2,”Überschrift”,4,7)) <h2>Über<b>s</b>chrift</h2> Position Länge Verteilte Systeme
38
XPointer – weitere Funktionen
Start-point(location-set) Xpointer(start-point(//Rezept)) End-point(location-set) Xpointer(end-point(//Rezept/Anleitung)) Here() Definiert die Stelle im Dokument an der der Xpointer notiert ist Origin() Verweist auf Quell Link (nur mit XLink) des XPointers Verteilte Systeme
39
XPointer – weitere Funktionen
Xmlns(name= Ermöglicht Namespace basierte Adressierung z.B. /name:element1/element2 <element1 xmlns=“ <element2>Beispiel</element2> </element1> <element1> Verteilte Systeme
40
XPointer – Zusammenfassung
Bytegenaue Adressierung in XML Dokumenten Beliebige Bereiche Selektierbar Adressierung robust Probleme: Implementierungen aufwendig Performance Probleme -> Stringoperationen Verteilte Systeme
41
Anwendungen Geringe Unterstützung von XLink bisher
Browser wie Mozilla/Netscape -> Simple Links Wenige relevanten XPointer Implementierungen Fujitsu Xlink Processor (Xlip) Java Package XLink/XPointer Beispiel Java App. Verteilte Systeme
42
Fragen? Verteilte Systeme
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.