Verwenden von XSL zum Ersetzen von XML-Knoten durch neue Knoten

8

Ich brauche eine XSL-Lösung, um XML-Knoten durch neue Knoten zu ersetzen.

Angenommen, ich habe die folgende XML-Struktur:

%Vor%

Und ich möchte den einen Kriteriumknoten durch ersetzen:

%Vor%

Damit ist das endgültige XML-Ergebnis:

%Vor%

Ich habe versucht, mit substring-before und substring-after nur die erste Hälfte der Struktur zu kopieren, dann kopieren Sie einfach die zweite Hälfte (um meine neuen Knoten zwischen den beiden Hälften einzufügen), aber es scheint, dass die Teilstring-Funktionen erkennen nur Text zwischen den Tags der Knoten und nicht die Tags selbst, so wie ich sie haben möchte. :(: (

Irgendwelche anderen Lösungen?

    
developer 01.06.2010, 19:16
quelle

3 Antworten

21

XSL kann nichts ersetzen. Das Beste, was Sie tun können, ist, die Teile zu kopieren, die Sie behalten möchten, und dann die Teile auszugeben, die Sie ändern möchten, anstatt die Teile, die Sie nicht behalten möchten.

Beispiel:

%Vor%

Die Vorlagenübereinstimmung @* | node() entspricht einem beliebigen Attribut oder einer anderen Art von Knoten. Der Trick besteht darin, dass Vorlagenübereinstimmungen Prioritäten haben. Sie können sich die Regel als "die spezifischere Übereinstimmung gewinnt" vorstellen. Alles wird spezifischer sein als "irgendein Attribut oder ein anderer Knoten". Dies macht die "Identität" mit einer sehr niedrigen Priorität übereinstimmen.

Wenn übereinstimmt, kopiert es einfach alle gefundenen Knoten in das übereinstimmende Attribut oder den Knoten.

Alle anderen Vorlagen haben eine höhere Priorität. Was auch immer sie zusammenbringen, es ist der Code innerhalb der spezifischeren Vorlage, der Wirkung hat. Wenn Sie zum Beispiel einfach alles innerhalb der Vorlage criterion[.='AAA'] entfernt haben, würden Sie feststellen, dass Sie Ihre Eingabe mit Ausnahme des Elements "AAA" genau kopiert haben.

    
John Saunders 01.06.2010, 19:18
quelle
6

Hier ist eine korrekte Lösung, die wahrscheinlich eine der kürzesten ist:

%Vor%

Wenn diese Umwandlung auf das bereitgestellte XML-Dokument angewendet wird, wird das gewünschte Ergebnis erzeugt:

%Vor%

Beachten Sie :

  1. Die Verwendung der Identitätsvorlage .

  2. Wie die Identitätsvorlage von einer bestimmten Vorlage überschrieben wird - nur für ein criterion -Element, dessen Zeichenfolgenwert 'AAA' ist.

Dimitre Novatchev 01.06.2010 21:57
quelle
0

Unter der allgemeinen Regel von mehr als einem Weg zur Haut einer Katze

%Vor%     
Dave G 01.06.2010 19:32
quelle

Tags und Links