16 Stimmen

Xsl:variable als xpath-Wert für anderes xsl-Tag

Ich habe Probleme mit xsl:variable. Ich möchte eine Variable mit einem Wert erstellen, der vom Wert eines anderen XML-Knotenattributs abhängt. Dies funktioniert gut. Aber wenn ich versuche, eine Variable mit einem Zeichenfolgenwert zu erstellen, der XPath darstellt, funktioniert es einfach nicht, wenn ich versuche, sie später als XPath in einem anderen XSL-Tag zu verwenden.

    string/represent/xpath/1
    string/represent/xpath/2

  [...]

Ich habe versucht: Wie man xsl-variable in xsl-if verwendet und Problem mit der Auswahl von xsl:for-each unter Verwendung von xsl:variable. Aber ohne Ergebnisse.

14voto

Dimitre Novatchev Punkte 234995

Die dynamische Auswertung eines XPath-Ausdrucks wird im Allgemeinen nicht in XSLT (sowohl 1.0 als auch 2.0) unterstützt, jedoch:

Wir können einen recht allgemeinen dynamischen XPath-Auswerter implementieren, wenn wir jeden Ortsausdruck nur auf einen Elementnamen beschränken:

  : 

wenn diese Transformation auf dieses XML-Dokument angewendet wird:

          5

          8

wird das gewünschte, korrekte Ergebnis erzeugt:

root/meta/url_params/param/yyy/value: 8

13voto

Wenn diese Pfade im Voraus bekannt sind wie in diesem Fall, dann können Sie folgendes verwenden:

1 Stimmen

Danke. Das ist nicht genau das, was ich gefragt habe, aber es ist genau das, was ich brauchte)

2voto

Zkoh Punkte 2852

Dies ist nicht nativ möglich in XSLT 1.0, aber Sie können eine Erweiterungsbibliothek wie dyn verwenden:

http://www.exslt.org/dyn/functions/evaluate/dyn.evaluate.html

Die dyn:evaluate Funktion wertet einen String als XPath-Ausdruck aus.

0 Stimmen

Ich habe versucht, das dyn:evaluate in NP++ zu verwenden, nachdem ich den Anweisungen gefolgt bin, aber es hat nicht funktioniert. Bitte helfen Sie, wie man diese Funktion verwendet. Ich habe versucht, hier ein Beispiel auszuführen, aber kein Glück: freeformatter.com/xsl-transformer.html

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X