Übereinstimmung mit dem aktuellen Knotenwert

8

Gegeben das folgende XML:

%Vor%

Wie kann ich "John Doe" aus dem aktuellen / Login-Matcher herausholen?

Ich habe Folgendes versucht:

%Vor%     
Pierre Spring 15.09.2008, 08:06
quelle

5 Antworten

10

Ich würde einen Schlüssel definieren, um die Leute zu indizieren:

%Vor%

Die Verwendung eines Schlüssels hier hält den Code einfach sauber, aber Sie können ihn auch für die Effizienz hilfreich finden, wenn Sie die Elemente <person> häufig auf Basis ihres <login_name> untergeordneten Elements abrufen müssen.

Ich hätte eine Vorlage, die den formatierten Namen eines gegebenen <person> :

zurückgibt %Vor%

Und dann würde ich tun:

%Vor%     
JeniT 15.09.2008, 12:42
quelle
4

Sie möchten current() Funktion

%Vor%

oder ein bisschen sauberer:

%Vor%     
jelovirt 15.09.2008 09:14
quelle
1

Wenn Sie auf mehrere Benutzer zugreifen müssen, JeniTs Ansatz <xsl:key /> ist ideal.

Hier ist meine Alternative:

%Vor%

Wir weisen den ausgewählten <person> -Knoten einer Variablen zu, dann verwenden wir die Funktion concat() , um den Vor- / Nachnamen auszugeben.

Es gibt auch einen Fehler in Ihrem Beispiel-XML. Der Knoten <person> endet fälschlicherweise mit </preson> (typo)

Eine bessere Lösung könnte gegeben werden, wenn wir die Gesamtstruktur des XML-Dokuments (mit Wurzelknoten usw.) kennen würden.

    
leekelleher 16.09.2008 22:18
quelle
0

Ich denke, was er eigentlich wollte, war der Ersatz im Spiel für den "aktuellen" Knoten, keine Übereinstimmung im Personenknoten:

%Vor%     
quelle
0

Nur um meine Gedanken dem Stapel hinzuzufügen

%Vor%

Ich bevorzuge es immer, die Achsen explizit in meinem XPath zu verwenden, mehr ausführlich aber klarer IMHO.

Abhängig davon, wie der Rest der XML-Dokumente aussieht (vorausgesetzt, es handelt sich hierbei nur um ein Fragment), müssen Sie möglicherweise die Referenz auf "ancestor :: people" beschränken, z. B. mithilfe von "ancestor :: people [1]" der Vorfahre der ersten Leute.

    
Matt Large 15.09.2008 10:09
quelle

Tags und Links