Ich versuche, dem Knoten ein Attribut hinzuzufügen, wenn der Wert des untergeordneten Knotens einer Zeichenfolge entspricht.
Ich habe eine main.xml-Datei
%Vor%Nehmen wir an, wenn die Länder-ID gleich 32 ist, dann sollte dem Mitarbeiterknoten das Attribut country = 32 hinzugefügt werden. Die Ausgabe sollte wie folgt aussehen:
output.xml
%Vor%Ich benutze das folgende Skript, bekomme aber den Fehler, dass ein Attributknoten nicht nach den Kindern des containing Elements erstellt werden kann.:
Transform.xsl
Jede Hilfe wird geschätzt. Auch können wir countid als Komma getrennte Werte übergeben, so dass ich 32,100 übergeben kann und dann sollte es Attribut zu allen übereinstimmenden Knoten hinzufügen.
Danke.
Zusätzlich zu Dimitres guter Antwort ein XSLT 2.0 Stylesheet:
%Vor%Ausgabe:
%Vor%Hinweis : Existenzieller Vergleich mit Sequenz, Parameter / Variablenreferenz in Mustern.
Andere Vorgehensweise unter der Annahme countryid
ist immer zuerst Kind:
Hinweis : Die Anweisung xsl:strip-space
ist wichtig (vermeidet den Ausgabetextknoten vor dem Attribut)
Teil 1 .
Sagen wir also, wenn die Länder-ID ist gleich 32 dann sollte es hinzufügen Attribut country = 32 zum Employee-Knoten.
Diese Umwandlung :
%Vor%bei Anwendung auf das bereitgestellte XML-Dokument :
%Vor%erzeugt das gewünschte, korrekte Ergebnis :
%Vor%Erläuterung :
Die Identitätsregel wird verwendet, um jeden Knoten so wie er ist
Es gibt nur eine Vorlage, die die Identitätsregel für bestimmte Knoten überschreibt. - Employee
-Elemente, die ein countryid
untergeordnetes Objekt mit Zeichenfolgenwert (in Zahl konvertiert) haben Vorlage fügt dem Element countryid
ein Employee
-Attribut hinzu und wendet Vorlagen an, um die Aktivität der Identitätsregel fortzusetzen und alles andere unverändert zu kopieren.
Teil 2.
Auch können wir countid als Komma übergeben getrennte Werte, damit ich bestehen kann 32,100 und dann sollte es hinzufügen Attribut für alle übereinstimmenden Knoten
Diese Umwandlung :
%Vor%erzeugt, wenn es auf dasselbe XML-Dokument (oben) angewendet wird, das gewünschte, korrekte Ergebnis :
%Vor%