En utilisant XSLT, j'essaie de comprendre comment fusionner/mettre à jour les données dans un ensemble de noeuds avec des données d'un autre ensemble de noeuds. Les nœuds ont le même schéma, mais des parents différents. Les données doivent être fusionnées en fonction d'un attribut parent partagé. Dans l'exemple ci-dessous, les données sont copiées du principal au pilote. Est-ce que quelqu'un pourrait m'aider?Fusionner des données d'un noeud XML vers un autre noeud en utilisant XSLT
Entrée fichier:
<Info>
<Principal id="Insured">
<PersonName>
<GivenName>Jane</GivenName>
<OtherGivenName>A</OtherGivenName>
<Surname>Doe</Surname>
</PersonName>
<PersonInfo>
<BirthDate>01-01-1980</BirthDate>
<MaritalStatus>M</MaritalStatus>
</PersonInfo>
<PrincipalInfo></PrincipalInfo>
</Principal>
<Policy>
<Driver id="Insured">
<PersonName>
<GivenName>Jane</GivenName>
<Surname>Smith</Surname>
</PersonName>
<PersonInfo>
<BirthDate>01-01-1980</BirthDate>
<MaritalStatus>S</MaritalStatus>
<Occupation>Manager</Occupation>
</PersonInfo>
</Driver>
<PolicyInfo></PolicyInfo>
</Policy>
</Info>
Résultat souhaité:
<Info>
<Principal id="Insured">
<PersonName>
<GivenName>Jane</GivenName>
<OtherGivenName>A</OtherGivenName>
<Surname>Doe</Surname>
</PersonName>
<PersonInfo>
<BirthDate>01-01-1980</BirthDate>
<MaritalStatus>M</MaritalStatus>
</PersonInfo>
<PrincipalInfo></PrincipalInfo>
</Principal>
<Policy>
<Driver id="Insured">
<PersonName>
<GivenName>Jane</GivenName>
<OtherGivenName>A</OtherGivenName>
<Surname>Doe</Surname>
</PersonName>
<PersonInfo>
<BirthDate>01-01-1980</BirthDate>
<MaritalStatus>M</MaritalStatus>
<Occupation>Manager</Occupation>
</PersonInfo>
</Driver>
<PolicyInfo></PolicyInfo>
</Policy>
</Info>
Est-ce une vraie affaire? Vous remplacez fondamentalement 'PersonName' par de nouvelles valeurs. Aucune fusion n'a lieu. – Flack
Il peut y avoir des nœuds supplémentaires dans les sous-nœuds du pilote, que je veux quitter, donc le simple remplacement du nœud entier ne fonctionne pas. Notez le dans mon exemple. –
En outre, le nœud de peut ne pas encore exister dans le , notez le . –