XPointer

Werbung
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(book1
))
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(ChildSeq).
• 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:#book1/4/3
Mit “Full XPointer” kann man auch dieses Beispiel so schreiben:
#xpointer(id(“book1")/child::*[position()=4]/child::*[position()=
3])
• <Catalog>
•
< Book color =“red“ ID=“book1“>
•
<Title>IE5 – Eine Referenz für XML-Programmierer</Title>
•
<Pages>480</Pages>
•
<ISBN>1-861001-57-6</ISBN>
•
<RecSubjCategories>
•
<Category>Internet</Category>
•
<Category>Web Publishing</Category>
•
<Category>XML</Category>
•
</RecSubjCategories>
•
<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.)
• RangeExpr ::= Expr ‘to‘ Expr
(Beispiel: Xpointer (id(“abschnitt2.1“) / descendant::P
[last()]to id(“abschnitt2.2“) / descendant::P[last()])
Funktionen
1.string-range(location-set string number? 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 XPointerSoftware 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.
Herunterladen