2010-04-14 5 views
3

je le fichier XML suivant:supprimer les balises XML avec XSLT

<xfa:data> 
    <form1> 
    <Page1> 
    <Page2> 
    <contractInfo> ... </contractInfo> 
    <paymentInfo> ... </paymentInfo> 
    </form1> 
    <commercialType> .... </commercialType> 
    <userList> ... </userList> 
    <officesList> ... </officesList> 
    <commercialType> .... </commercialType> 
    <userList> ... </userList> 
    <officesList> ... </officesList> 
    <commercialType> .... </commercialType> 
    <userList> ... </userList> 
    <officesList> ... </officesList> 
</xfa:data> 

Je veux supprimer tous les ocurrence des nœuds commercialType, UserList et officesList, donc ma sortie serait:

<xfa:data> 
    <form1> 
    <Page1> 
    <Page2> 
    <contractInfo> ... </contractInfo> 
    <paymentInfo> ... </paymentInfo> 
    </form1> 
</xfa:data> 

Comment pourrais-je faire cela en utilisant XSLT?

Merci

+0

Bonne question (+1). Voir ma réponse pour une solution complète en utilisant et en remplaçant la «règle d'identité». :) –

Répondre

14

Cette transformation produit les résultats souhaités:

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

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

<xsl:template match="commercialType|userList|officesList"/> 
</xsl:stylesheet> 
+0

Merci, votre réponse rapide sauve la journée ici – azathoth

+0

Ça ne marche pas pour moi. Une idée? – Rohit

+0

@Rohit, Qu'est-ce que "it" et qu'est-ce qui "ne fonctionne pas"? Êtes-vous sûr d'avoir le même document XML source que dans cette question? Êtes-vous sûr d'avoir exécuté la même transformation que celle de cette réponse? Êtes-vous sûr d'utiliser un processeur XSLT conforme et non bogué? –

0

transformation identité plus <xsl:template match="commercialType" priority="10"/>.

Questions connexes