J'ai deux fichiers et je souhaite combiner/écraser des nœuds entiers en fonction d'une valeur correspondante particulière dans une arborescence de nœuds.Copie de nœuds entiers basés sur une sous-valeur unique dans XSLT
file1.xml
<record>
<key>key1</key>
<nodel>
<field1>source field1</field1>
<field2>source field2</field2>
<searchkey>myname</searchkey>
</nodel>
</record>
file2.xml
<record>
<key>key2</key>
<nodel>
<field1>match field1</field1>
<field2>match field2</field2>
<searchkey>myname</searchkey>
</nodel>
</record>
sortie souhaitée:
<record>
<key>key1</key>
<nodel>
<field1>source field1</field1>
<field2>source field2</field2>
<searchkey>myname</searchkey>
</nodel>
<nodel>
<field1>match field1</field1>
<field2>match field2</field2>
<searchkey>myname</searchkey>
</nodel>
</record>
Alors, je veux vérifier une correspondance dans la searchkey, entre les deux fichiers, et, s'il correspond, copiez le noeud entier de la correspondance dans le fichier de sortie, mais gardez la clé d'origine, pas la correspondance. Je vais ensuite vouloir supprimer le nodel d'origine, mais je suis heureux de le faire comme une transformation ultérieure.
J'ai posé une question similaire récente pour la correspondance sur les nœuds <key>
, mais je n'ai pas compris comment la modifier pour obtenir le résultat souhaité.
Merci.
Je suppose qu'en réalité vos fichiers file1.xml et file2.xml contiendront chacun plus d'un enregistrement? Et une structure de nœud au-dessus des enregistrements? Qu'est-ce que tu veux faire avec ça? – TToni
Bonne question, +1. Voir ma réponse pour une solution complète mais courte. :) –
@TToni: oui, il y a quelques centaines d'enregistrements dans chaque fichier, mais je l'ai raccourci par souci de concision. Le seul nœud ci-dessus dans cette instance est la racine, bien que je serais intéressé par une implémentation générique. – debs