2009-11-28 3 views
0

J'ai besoin d'extraire des nœuds xml d'un document xml. La source estSupprimer XmlNodes avec la transformation xslt

<root> 
    <customElement> 
     <child1></child1> 
     <child2></child2> 
    </customElement> 
    <child3></child3> 
    <child4></child4> 
</root> 

le résultat devrait être

<root> 
    <child1></child1> 
    <child2></child2> 
    <child3></child3> 
    <child4></child4> 
</root> 

Comme vous pouvez voir que l'élément « customElement » est supprimé, mais les éléments enfants font encore partie du document de résultat. Comment faire cela en utilisant la transformation xslt.

+0

pouvez-vous nous montrer votre tentative? –

+0

La même question a déjà été posée: http://stackoverflow.com/questions/1524786/removing-certain-xml-elements-via-xslt –

Répondre

2

Voici une solution simple:

<?xml version="1.0" encoding="UTF-8"?> 
<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" omit-xml-declaration="no"/> 

<!-- identity template --> 
<xsl:template match="@*|node()"> 
    <xsl:copy> 
     <xsl:apply-templates select="@*|node()"/> 
    </xsl:copy> 
</xsl:template> 

<!-- here we specify behavior for the node to be removed --> 
<xsl:template match="customElement"> 
    <xsl:apply-templates select="@*|node()"/> 
</xsl:template> 

</xsl:stylesheet> 
+1

+1. Cependant, le '@ *' est étranger dans le dernier 'apply-templates'. (Avec l'entrée d'exemple, essayez de supprimer les espaces entre ' 'et' 'et d'ajouter un attribut à' customElement' pour voir ce qui se passe: l'attribut se retrouve dans le noeud 'root' de la sortie.) –

Questions connexes