E-Book Startseite Karteikarten-Programm
0

Informationen und Zeichen zur Pfadangabe

XPath bietet 2 Zeichen an, um Pfadangaben anzugeben. Das wohl wichtigste Zeichen ist der Schrägstrich. Ein Schrägstrich ist ein Trennzeichen zwischen den verschiedenen Pfaden. Um das Wurzelelement bzw. Rootelement aufrufen zu können oder eine Pfadangabe aus Sicht des Wurzelelement bzw. Rootelement zu machen benötigt man ein Schrägstrich am Anfang. Dies kennt man aber wahrscheinlich schon aus den anderen Programmiersprachen. Auch die Angaben mit einem oder 2 Punkten und einem Schrägstrich sind möglich. Dazu später mehr. Ein neues Zeichen, dass bei XML verwendet wird, sind zwei Doppelpunkte hintereinander. Dabei handelt es sich um das Trennzeichen von den Achsenbezeichnung und dem Knotenname.


Notationsarten mit absoluter und relativer Pfadangabe

Bei der Notation, also der Angabe von Pfaden, hat man die Möglichkeit eine ausführliche oder eine verkürzte Variante zu nutzen. Die ausführliche Notation enthält die Achsenangaben (also z. B. child oder attribute). Die Angabe der Achsen ist jedoch nicht zwingend notwendig, daher kann man diese einfach weglassen. In diesem Fall handelt es sich dann um die verkürzte Notation. Jedoch gibt es manche Achsen-Angaben, bei der man die ausführliche Notation verwenden muss. Ein Beispiel dazu wäre namespace (Namensraum) oder preceding-sibling (vorherige Geschwisterknoten). Hier eine kleine Liste welche Achsen-Angaben durch welche Zeichen ersetzt werden können (das Trennzeichen von Achsenangabe und Knotenname wird dabei natürlich weggelassen!):

Bei der Adressierung wird des Weiteren unter absoluten und relativen Pfadangaben unterschieden. Bei der absoluten Pfadangabe (Achtung: nicht mit HTML-Referenzierungs-Regeln in die Quere kommen!) geht man immer vom Wurzelelement aus, d. h. am Anfang steht immer ein / Bei der relativen Pfadangabe kommen eher die anderen Achsen zum Einsatz, wie z. B. parent. Beispiele zu diesem Thema finden Sie im Block 5.


Adressierung von allen untergeordneten Elementen

In der Liste des vorherigen Blocks wurde dieses Thema schon ein wenig vorgezogen, denn man hat mit XML die Möglichkeit alle untergeordneten Elemente aufzurufen. Diese Methode ist Ihnen vielleicht von den Achsen descendant bekannt. Jedoch erfolgt die Ausgabe aller untergeordneten Elemente nicht etwa so: descendant::elementname . Sondern es gibt hierbei spezielle Regeln. Hierbei muss die child-Achse verwendet und dahinter ein Sternezeichen (auch Wildcard genannt). Eine andere Möglichkeit wäre die Notation mit // Welche Form verwendet wird ist eigentlich egal.


Bedingungen und Positionsangabe

Es gibt in XML ein paar Positionsangaben und Bedingungen die bei der Adressierung helfen. Für manche dieser Adressierungszusätze werden jedoch XPath-Funktionen benötigt, worauf wir später genauer eingehen. Die Funktionen bzw. Syntaxe werden in eckigen Klammern geschrieben. Hier haben wir nun eine kleine Liste mit weiteren Positionsangaben (die bereits genannten werden nicht wiederholt!):

child::hauptelement[position() = 13]
Das 13. Kinderelement von dem Element "hauptelement" wird adressiert. Dazu ist eine XPath-Funktion notwendig! Eine verkürzte Variante wäre hauptelement[13]. Des Weiteren kann man auch mit position() < 14 die ersten 13 Elemente adressieren.
child::hauptelement[last()]
Das letzte Kinderelement von dem Element "hauptelement" wird adressiert. Dazu ist eine XPath-Funktion notwendig! Auch der Syntax position() = last() wäre eine denkbare und gültige Anweisung. Wenn beispielsweis das vorvorletzte Element adressiert werden soll kann man auch last() - 2 als Anweisung verwenden.

Hier nun noch eine kleine Liste mit Bedingungen:

child::person[attribute::geschlecht='m']
Adressiert alle Kinderelemente mit dem Namen "person" die das Attribut "geschlecht" mit dem Wert "m" besitzen. Das ganze kann man auch verkürzt schreiben: person[@geschlecht='m']
child::person[attribute::geschlecht and attribute::haarfabre]
Adressiert alle Kinderelemente mit dem Namen "person" die das Attribut "geschlecht" und "haarfabe" besitzen. Das ganze kann auch verkürtzt dargestellt werden.
child::person[attribute::geschlecht or attribute::haarfabre]
Adressiert alle Kinderelemente mit dem Namen "person" die das Attribut "geschlecht" oder "haarfabe" besitzen. Das ganze kann auch verkürtzt dargestellt werden.

Alle weiteren Funktionen und ausführliche Beispiele finden Sie unter XSLT: XPath-Funktionen


Beispiele zur Adressierung

Adressierung eines verschachtelten einfachen Personen-Datenbank-Beispiels, aus Sicht des Rootelements:
/child::person/child::J/child::Jung/child::Benjamin/attribute::geschlecht
/person/J/Jung/Benjamin/@geschlecht

Adressierung von allen untergeordneten Elementen mit dem Nachnamen Jung (Beispiel wie vorher):
/child::person/child::J//child::Jung
/child::person/child::J/child::Jung/child::*
/person/J//Jung

Adressierung wie im 1. Beispiel, jedoch aus Sicht des zurzeit bearbeiteten Elementes (in unserem Beispiel J):
parent::S//child::Shahzad
parent::S/child::Shahzad/child::*
../S//Shahzad


Beispiele für die Positionsangabe und Bedingungen siehe oben und im Themenbereich "XSLT: XPath-Funktionen".

Design:
 


Logo
Benjamin Jung
Krummstr. 9/3
73054 Eislingen

E-Mail: info@homepage-webhilfe.de
Webseite: www.homepage-webhilfe.de