Wie verwendet man eine Variable in XSL, wenn man versucht, einen Knoten auszuwählen?

StackOverflow https://stackoverflow.com/questions/5374

  •  08-06-2019
  •  | 
  •  

Frage

Ich hätte gedacht, dass dies für Google einfach wäre, aber ich hatte keinen Erfolg.

Ich möchte einer Variablen den Wert eines Attributs zuweisen (bisher einfach) und dann diese Variable verwenden, um einen anderen Knoten basierend auf dem Wert dieses Attributs auszuwählen.

Beispiel:

<xsl:variable name="myId" select="@id" />
<xsl value-of select="//Root/Some/Other/Path/Where[@id='{@myId}']/@Name />

Das funktioniert nicht.Wenn ich {@myId} durch den Wert ersetze, der in der Variablen steht, wird zwar der richtige Knoten gefunden, aber wenn ich es auf diese Weise tue, wird nichts erzeugt.Ich bin mir sicher, dass ich etwas übersehe, oder vielleicht gibt es einen anderen Weg, es zu machen.

Der Kontext besteht darin, dass es verwandte Daten unter verschiedenen Knoten der obersten Ebene gibt, die denselben ID-Wert haben, sodass ich die zugehörigen Knoten in meiner Vorlage abrufen muss.

War es hilfreich?

Lösung

Ok, ich habe es endlich herausgefunden.Eigentlich ein dummes Problem, ich musste einfach die Anführungszeichen und die geschweiften Klammern weglassen.Eine dieser Zeiten, als ich Gedanke dass ich das schon versucht habe.:D Oh, und ich habe mich im ersten Beispiel mit @myId vertippt, der Code war eigentlich $myId.

<xsl:variable name="myId" select="@id" />
<xsl value-of select="//Root/Some/Other/Path/Where[@id=$myId]/@Name" />

Andere Tipps

Sie scheinen mit der Verwendung einer Variablen (die nur $variable ist) und Attributwertvorlagen verwechselt zu haben, die es Ihnen ermöglichen, einen beliebigen XPath-Ausdruck in einige Attribute einzufügen, z. B.

<newElement Id="{@Id}"/>

Sie können natürlich kombiniert werden, sodass Sie eine Variable in eine Attributwertvorlage einfügen können, wie zum Beispiel:

<newElement Id="{$myId}"/>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top