Attribut zum Knoten hinzufügen

8

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


%Vor%

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.

    
atif 28.01.2011, 04:29
quelle

2 Antworten

5

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:

%Vor%

Hinweis : Die Anweisung xsl:strip-space ist wichtig (vermeidet den Ausgabetextknoten vor dem Attribut)

    
user357812 28.01.2011, 13:29
quelle
10

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 :

  1. Die Identitätsregel wird verwendet, um jeden Knoten so wie er ist . Das Verwenden und Überschreiben der Identitätsregel (Vorlage) ist das grundlegendste und leistungsstärkste XSLT-Entwurfsmuster.

  2. 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%     
Dimitre Novatchev 28.01.2011 05:03
quelle

Tags und Links