XPointer Die Xpointer beschreiben einen Ort oder Bereich
XPointer • Die Xpointer beschreiben einen Ort oder Bereich innerhalb einer XML-Instanz. • Die XPointer bauen auf der XML Path Language auf. • Die XPointer ist eine kleine Mini-Sprache, die Sie am Ende eines URI nach haften können #, im Fall, wohin das URI auf ein XML-Dokument zeigt. (Z. B http: //www. wrox. com/Catalog/catalog. xml#xpointer(book 1))
einige Begriffe Bezeichnung Erklärung axis(Achse) Folge von Daten, die XPointer nutzt location(Ort) kann hier ein Punkt oder Bereich sein location-set(Ortmenge) predicate(Prädikat) Geordnete Liste aus dem, was ein XPointer-Ausdruck ergibt Boolscher Ausdruck; von XPointer dazu genutzt Teil-Ressourcen im Verhältnis zu anderen auszuwählen point(Punkt) Ort im Dokument range(Bereich) Auswahl aus dem gesamten Inhalt zwischen zwei Punkten
Es gibt drei Arten, wie sich die XPointer ausdrücken lassen: Bare Name (ein Name), Child Sequence (kindfolge) und Full XPointer (ein Fragment).
Bare Name • Falls das Element die Attribute vom Typ ID (in DTD oder Schema definiert wird) hat, kann man direkt diesen Attributwert vom Typ ID nutzen, um dieses Element zu finden. • Beispiele: • http: //www. xlinksample. com/xpointer. xml#xpointer(id(" _loc")) • Abkürzung: http: //www. xlinksample. com/xpointer. xml#_l oc • Auf diese Weise gibt es ein Vorteil: Falls man die Elemente mit Attributen vom Typ ID nutzt, entsteht auf keinen Fall diese Verbindung während der Änderung der Struktur von Dateien den Fehler.
Full XPointer • Ein vollstädiger XPointer-Ausdruck kann ein XPointerteil oder mehre XPointerteile enthalten. • Jeder XPointerteil muss mit "xpointer" beginnen. Aufgrund dieses Ausdruck kann man die Verweisoperation tun. • Beispiele: xpointer(/child: : spec/child: : body) xpointer(descendant: : language[position()=2])
Child Sequence: • Außerdem ermöglicht XPointer es, auf Elemente durch Aufschreiben ihres Ortes zuzugreifen: Dafür steht die Kindfolge(Child. Seq). • Auf diese Weise lassen sich Elemente – nicht Attribute oder andere Knoten – über Schrägstriche (/) und Ziffern (n) ansprechen. • Natürlich kann man auch in einem XPointer-Ausdruck vor “Child Sequence“ die “ Bare Name“ benutzen. Dann ist das Wurzelelement das Element mit Attribute vom Typ ID. Sonst muss dieser Ausdruck mit /1 anfangen.
1. Beispiel: #/1/4/2 Mit “Full XPointer“ kann man dieses Beispiel so schreiben: #xpointer(/child: : *[position()=1]/child: : *[position()=4]/ child: : *[position()=2]) 2. Beispiel: #book 1/4/3 Mit “Full XPointer” kann man auch dieses Beispiel so schreiben: #xpointer(id(“book 1")/child: : *[position()=4]/child: : *[position()= 3])
• <Catalog> • < Book color =“red“ ID=“book 1“> • <Title>IE 5 – Eine Referenz für XML-Programmierer</Title> • <Pages> 480</Pages> • <ISBN> 1 -861001 -57 -6</ISBN> • <Rec. Subj. Categories> • <Category>Internet</Category> • <Category>Web Publishing</Category> • <Category>XML</Category> • </Rec. Subj. Categories> • <Price> 49. 99</Price> • </Book> • </Catalog>
XPath-Erweiterungen in XPointer • Die Verweismöglichkeiten von XPath basieren auf Knoten in XML-Dokumenten. • Aber vielmehr geht es in XPointer um die Suche nach Orten im Dokument. Dabei kann es auch um Bereiche gehen, die sich über Elementgrenzen oder Teilbäume erstrecken.
Zwei notwendige Begriffe • Point: Ein Punkt (point) besteht aus einem Behälterknoten (container node) und Index (größer oder gleich Null). • Range: Ein Bereich (range) ist durch zwei Punkte definiert. (Allerdings müssen sich die beiden Punkte im selben Dokument befinden. ) • Range. Expr : : = Expr ‘to‘ Expr (Beispiel: Xpointer (id(“abschnitt 2. 1“) / descendant: : P[ last()]to id(“abschnitt 2. 2“) / descendant: : P[last()])
Funktionen 1. string-range(location-set string number? ): Sucht in jedem Ort der Ortmenge (1. Parameter) nach der Zeichenkette (2. Parameter); die beiden Zahlen benennen den Anfang (Default: 1) und die Länge des gesuchten Bereichs (Default: bis zum Ende) Beispiel: string-range(//P. “Am Anfang war“)[ 3] 2. range(location-set): Ort im Argument 3. range-inside(location-set): Inhalt von Orten im Argument 4. start-point(location-set): Rückgabe eines oder mehrerer Punkte; ein Start-Punkt für jeden Ort im Argument
5. end-point(location-set): Rückgabe eines oder mehrerer Punkte; ein Start-Punkt für Jeden Ort im Argument Beispiel: end-point(//Kapitel[ 3]) 6. here(): Rückgabe eines Elements als Ortmenge 7. origin(): Rückgabe eines Elements, von dem eine Verzweigung ausging 8. boolean unique(): Rückgabe des Wert “wahr“ für den Fall, dass die kontextgröße=1 ist (sonst “unwahr“)
Fehler für die XPointer • • • Ein Syntaxfehler liegt vor, wenn eine Zeichenkette nicht der in XPointer definierten Syntax vorliegt (Software sollte solche XPointer nicht verfolgen). Ein Ressourcen-Fehler liegt vor, wenn die XPointer. Software keine Ressource findet, von der sie Ausgehen kann (etwa ein falscher URI). Ein Teil-Ressourcen-Fehler liegt vor, wenn die Anwendung keine Teil-Ressource findet, die der Beschreibung entspricht.
- Slides: 13