1 / 42

Xlink / Xpointer - Framework

Xlink / Xpointer - Framework. Seminar: Verteilte Systeme Markus Schulz. Gliederung 1/2. XLink Zielsetzung Syntax Simple Links Extended Links Zusammenfassung. Gliederung 2/2. XPath Zielsetzung Grundlagen Syntax Zusammenfassung XPointer Überblick

marc
Download Presentation

Xlink / Xpointer - Framework

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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 • Zielsetzung • Grundlagen • Syntax • Zusammenfassung • XPointer • Überblick • Bare-Names/Child Sequence/FullXPointer • Zusammenfassung • Anwendungen Verteilte Systeme

  4. XLink - Zielsetzung 1/2 • Bekanntes aus der HTML Welt: • <ahref=“http://www.heise.de”>Heise</a> • <imgsrc=“http://www.heise.de/icons/ho/heise.gif”/> 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 -> http://www.w3.org/1999/xlink • Jedes Element kann Xlink sein • <node xmlns:xlink=“http://www.w3.org/1999/xlink” xlink:type=„simple“ xlink:href=„http://www.heise.de“>Heise</node> • 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=„http://www.heise.de“>Heise</link> Steuerung der Anzeige <link xlink:type=„simple“ xlink:href=„http://www.heise.de“ 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=„http://www.heise.de/image.gif“ 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=“http://www.google.com“ xlink:role=“http://www.google.com/help.html”/> Verteilte Systeme

  11. Xlink – Extended 1/6 • Bisher mit Simple Links: Link • Gewünscht: Link Verteilte Systeme

  12. Lokale Ressource Entfernte Ressource 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=„http://www.xyz.de/dl1.zip“ xlink:label=„dst“/> <dst2 xlink:type=„locator“ xlink:href=„http://www.abc.de/dl2.zip“ xlink:label=„dst“/> </link> Verteilte Systeme

  13. Verknüpfung Xlink – Extended 3/6 <link xlink:type=„extended“> <src xlink:type=„resource“ xlink:label=„src“>Download</src> <dst1 xlink:type=„locator“ xlink:href=„http://www.xyz.de/dl1.zip“ xlink:label=„dst“/> <dst2 xlink:type=„locator“ xlink:href=„http://www.abc.de/dl2.zip“ xlink:label=„dst“/> <link xlink:type=„arc“ xlink:from=„src“ xlink:to=„dst“ xlink:actuate=„onRequest“/> </link> Verteilte Systeme

  14. Xlink – Extended 4/6 Download http://www.xyz.de/dl1.zip http://www.abc.de/dl2.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=“http://www.w3.org/1999/xlink/properties/linkbase”/> </link> Verteilte Systeme

  16. Xlink – Extended 6/6 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><aname=“kapitel1”>Kapitel 1</a></h2> • Verweis auf diese Stelle durch: • <ahref=“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> <zutatid=“mehl”>200g Mehl</zutat> <anleitung> Zuerst nehmen <b>Sie das Mehl</b> und mischen </anleitung> </rezept> Verteilte Systeme

  20. XPath – Grundlagen 2/2 / Rezept Zutat Anleit. Id b 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[@Id=“mehl”][…] 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 • //Element/@Name => 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=“http://www.heise.de#<XPointer Ausdruck>” • 3 verschiedene Adressierungsarten • Bar Names • Child Sequence • Full Xpointer Verteilte Systeme

  32. XPointer – Bare Names • Einfachste Form • Bsp. Xlink:href=„http://www.heise.de/#Title“ • Adressiert das erste Element welches ein Attribut id=“Title” enthält <start> <elementid=“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. Doc.xml#xpointer(/start/b/@type/point()[0]) <start> Hallo <btype=“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. Position Länge 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> 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=http://beispiel.de) • Ermöglicht Namespace basierte Adressierung • z.B. /name:element1/element2 <element1xmlns=“http://beispiel.de”> <element2>Beispiel</element2> </element1> <element1> <element2>Beispiel</element2> </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

More Related