2017-08-25 4 views
0

Je veux un programme XSLT qui transformera un fichier XMl d'une manière qui va lire/extraire tous les attributs de tous les nœuds enfants (jusqu'au niveau profond) du nœud racine et copier vers le nœud parent. Ensuite, supprimez tous les nœuds enfants. xml EntréeDans XSLT, comment copier tous les attributs de tous les nœuds enfants vers le nœud racine de xml?

enter code here 
<root> 
    <a key="1"/> 
    <b key1="2"> 
    <c key3="3"/> 
    </b> 
</root> 

et xml sortie serait comme ceci:

<root key="1" key1="2" key3="3" /> 
+0

Comment voulez-vous gérer les nœuds enfants qui ont le même attribut? (par exemple si a, b, et c avaient tous un attribut "id" par exemple quelle valeur utiliseriez-vous dans l'élément racine résultant? – Rob

+0

Merci Oui pour l'étape initiale Cela ne me pose pas de problème. même nom d'attribut. – user3656511

Répondre

1

Vous pouvez faire tout simplement:

XSLT 1,0

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> 

<xsl:template match="/root"> 
    <xsl:copy> 
     <xsl:copy-of select="//@*"/> 
    </xsl:copy> 
</xsl:template> 

</xsl:stylesheet> 

Cependant, un élément ne peut pas avoir deux attributs avec la même na moi. Si votre XML a plus d'une instance du même attribut, ils se remplaceront mutuellement et seul le dernier sera présent dans la sortie.