Ich habe viele Beiträge gesehen, die so etwas tun und das gibt mir das Gefühl, dass das möglich ist und ich mache nur etwas falsch. Ich habe es so weit wie möglich vereinfacht, um herauszufinden, warum dies geschieht:
Heres mein xml (nichts sehr aufregendes):
%Vor%Hier ist mein xsl:
%Vor%Hier ist mein Ergebnis:
%Vor%Hier ist meine Frage: Wie funktionieren TEST2 und TEST3 nicht? Die Variable $ tryThisTemplate scheint leer zu sein. Verstehe ich hier etwas falsch. Sollte ich das anders machen?
Hier ist die richtige Vorgehensweise (beachten Sie, dass DOE nicht notwendig ist und vermieden werden sollte):
%Vor%, wenn diese Umwandlung auf das bereitgestellte XML-Dokument angewendet wird :
%Vor%das gewünschte Ergebnis wird erzeugt :
%Vor% Erläuterung: <xsl:copy-of>
kopiert (wie der Name sagt) Knoten. <xsl:value-of>
gibt den Zeichenfolgenwert des Attributs select
aus. Der Zeichenfolgenwert eines Elements ist die Verkettung (in Dokumentreihenfolge) aller seiner Textknotenabkömmlinge. In Ihrem Fall hat das Element keine Text-Knoten-Nachkommen und somit gibt <xsl:value-of>
nichts aus.
Ja, hier gibt es ein Missverständnis. Wenn Sie versuchen, die Struktur von $tryThisTemplate
in die Ausgabe zu kopieren, müssen Sie <xsl:copy-of>
anstelle von <xsl:value-of>
verwenden. <xsl:value-of>
gibt den Zeichenfolgenwert seines Auswahlarguments aus, dh seinen Textinhalt, der in diesem Fall eine leere Zeichenfolge ist.
Die Variable $ tryThisTemplate scheint leer zu sein
Die Variable ist nicht leer, aber mit xsl:value-of
werden Sie nach den darin enthaltenen Textknoten gefragt. Das ist "leer".
Versuchen Sie zum Beispiel mit:
%Vor% Und Sie werden sehen magisch erscheinen MY_NODE
zwischen TEST3
:))
schau dir meine Lösung an
Hier ist meine Vorlage (war verifizierbarer Inhalt)
%Vor%und wenn ich es in einer anderen Vorlage verwende, nenne ich es einfach so
%Vor%hoffe das hilft dir