Gegeben das folgende XML:
%Vor%Wie kann ich "John Doe" aus dem aktuellen / Login-Matcher herausholen?
Ich habe Folgendes versucht:
%Vor%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>
:
Und dann würde ich tun:
%Vor% 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.
Ich denke, was er eigentlich wollte, war der Ersatz im Spiel für den "aktuellen" Knoten, keine Übereinstimmung im Personenknoten:
%Vor%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.