XPointer: Sprachschatz
Der Sprachschatz von XPointer umfaßt alle nötigen Anweisungen um auf einen bestimmten Bestandteil eines XML-Datensatzes zeigen zu können. Der Sprachschatz umfaßt eine Reihe von Zeigerdefinitionen, die einen XML-Datensatz als Quelle durchsuchen und auf einen treffenden Bereich verweisen.Zeiger in Kurzschreibweise
Bei Zeigern in Kurzschreibweise wird lediglich auf ein einziges Element des zu durchsuchenden Datensatzes gezeigt. Dazu wird ein Name angegeben, nach dem der Datensatz durchsucht werden soll. Existiert mehrere treffende Elemente im Datensatz, so wird auf das erste gezeigt. Durch die folgenden Regeln wird ein Element als treffend ausgewählt:- hat ein Element ein
id
-Attribut dessen Wert mit dem gesuchten Namen übereinstimmt gilt es als treffend - hat ein Element ein Kindelement auf das 1. zutrifft, so gilt dieses Kindelement als treffend
id
-Attribut muss dabei dem Typ ID abstammen. Auch bei id
-Attributen, die durch das XML-Schema definiert werden, muss gelten, dass diese dem Typ ID abstammen und zum XML-Schema Namensraum gehören. Externe id
-Attribute können durch das jeweilige verarbeitende Programm auffindbar gemacht werden.Wird kein solches Element gefunden, ist das ausführende Programm angewiesen einen Fehler auszugeben.
Zeiger in ausführlicher Schreibweise
Ein Zeiger in ausführlicher Schreibweise besteht aus einem Zeigernamen/-bezeichner und einem Zeigerteil innerhalb von runden Klammern (also z.B.:zeigername(zeigerdefinition1 zeigerdefinition2 usw.)
). Der Zeigername gibt Auskunft darüber, wie der in Klammern stehende Inhalt verarbeitet werden soll. XPointer definiert dazu 2 verschiedene Zeigertypen sowie eine Verknüpfung: xpointer()
, element()
und xmlns()
.
Zeigertyp: xpointer()
Der Zeigertypxpointer()
entspricht einem normalen XPath-Ausdruck, mit dem Unterschied, dass hier auch Funktionen und Schreibweisen von XPointer verwendet werden können. Beispiel:
quelle.xml#xpointer(id("zielid"))
Durch die im Beispiel gezeigte Schreibweise wird auf das Element im Dokument quelle.xml gezeigt, dass die IDzielid
besitzt. Ebenso können auch mehrere Zeiger durch Whitespaces verknüpft werden. Beispiel:
quelle.xml#xpointer(id("zielid1")) xpointer(id("zielid2"))
... zeigt auf ein Element mit der IDzielid1
, das sich im Dokument quelle.xml befindet. Existiert dieses Element nicht, werden alle alternativen Ausdrücke von links nach rechts überprüft. D.h. hier, dass anschließend nach einem Element der ID zielid2
gesucht wird. Wurde ein entsprechendes Element gefunden, werden keine weiteren Alternativen gesucht.
Zeigertyp: element()
Der Zeigertypelement()
zeigt auf ein einzelnes Element innerhalb des Dokuments. Dazu kann entweder die Element-ID oder eine Indexsequenz notiert werden. Eine Indexsequenz besteht aus einer Reihe von Indexnummern der einzelnen Elemente die durch einen Schrägstrich voneinander getrennt werden. Sie beginnt selbst auch mit einem Schrägstrich. Durch jeden Strich wird verdeutlicht, dass die nächste Zahl der Index eines Kindelements ist der letzten ist. Existiert beispielsweise folgendes Dokument ...
<A id="erster">
<B></B>
<C>
<D />
</C>
</A>
D
über die Indexsequenz
#element(/1/2/1)
... ausgewählt werden.Ebenso läßt sich die Sequenz auch mit der ID verknüpfen:
#element(erster/2/1)
Verknüpfung: xmlns()
Die Verknüpfungxmlns()
wird verwendet um eine XML-Resource an einen Namespace zu binden (ähnlich xmlns:Name="http://..."
). Innerhalb der Klammern wird dazu der Name des Namespaces, ein Gleichheitszeichen sowie die zu verknüpfendeURLangegeben. Trifft ein Programm auf eine solche Verknüpfung, wird diese ausgeführt und danach dennoch der nächste Zeiger behandelt (obwohl es normalerweise nach dem ersten Erfolg keine weitere Verarbeitung geben würde). Der praktische Nutzen soll anhand des folgenden Beispiels demonstriert werden. Als Quelle verwenden wir:
<A xmlns="http://elementA">
<B xmlns="http://elementB">
</B>
</A>
xmlns(NameA=http://elementA) xmlns(NameB=http:// elementA)
xpointer(/NameA:A/NameB:B)
Du arbeitest in einer Agentur oder als Freelancer?
Dann wirf doch mal einen Blick auf unsere Software FeatValue.
Über uns

Wir entwickeln Webanwendungen mit viel Leidenschaft. Unser Wissen geben wir dabei gerne weiter. Mehr über a coding project