Bonjour à tous,

J'avoue être un peu perdu entre XSLT XML libxml etc...

Voici mon problème:

J'ai un fichier XML

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<PRODUCT TITLE="ARBO FM TEST" LANG="FR">
  <CHAPTER TITLE="AGATE" LEVEL="1">
    <SECTION TITLE="TIROIR" LEVEL="2">
      <DMODULEREF TITLE="PRES" DMREF="EEVB000000464" DMTYPE="D34" FILE="No File"/>
      <DMODULEREF TITLE="TAB" DMREF="EEVB000000457" DMTYPE="D34" FILE="No File"/>
      <SECTION TITLE="PILE" LEVEL="3"/>
    </SECTION>
    <SECTION TITLE="SUPPORT" LEVEL="2">
        <SECTION TITLE="PIED1" LEVEL="3"/>
        <SECTION TITLE="PIED2" LEVEL="3"/>
        <SECTION TITLE="PIED3" LEVEL="3">
            <SECTION TITLE="CALE" LEVEL="4">
                <DMODULEREF TITLE="TAB" DMREF="EEVB000000455" DMTYPE="D34" FILE="No File"/>
            </SECTION>
        </SECTION>
    </SECTION>
  </CHAPTER>
</PRODUCT>

Je voudrai à partir de ce fichier régénérer un nouveau fichier xml qui devra être comme celui-ci



Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<PRODUCT TITLE="ARBO FM TEST" LANG="FR">
  <CHAPTER TITLE="AGATE" LEVEL="1">
    <SECTION TITLE="TIROIR" LEVEL="2">
      <DMODULEREF TITLE="PRES" DMREF="EEVB000000464" DMTYPE="D34" FILE="No File"/>
      <DMODULEREF TITLE="TAB" DMREF="EEVB000000457" DMTYPE="D34" FILE="No File"/>
    </SECTION>
    <SECTION TITLE="SUPPORT" LEVEL="2">
        <SECTION TITLE="PIED3" LEVEL="3">
            <SECTION TITLE="CALE" LEVEL="4">
                <DMODULEREF TITLE="TAB" DMREF="EEVB000000455" DMTYPE="D34" FILE="No File"/>
            </SECTION>
        </SECTION>
    </SECTION>
  </CHAPTER>
</PRODUCT>
Le but est de supprimer toutes les balises SECTION qui n'ont pas de balises DMODULEREF

Par contre, si une balise SECTION contient une "sous balise" SECTION avec une balise MODULEREF, il faut la garder

J'espère avoir été assez claire

Mon fichier est générer par du C avec la libxml
Je suis obligé de faire ce traitement à la fin pour des raisons de rapidité de mon code
mais je ne vois comment l'effectuer

puis-je le faire en XSLT ?
ou
en développement C ?

quelles seraient les APIs ?