Bonjour,

Afin de pouvoir comparer facilement deux versions d'un extract xml, j'ai besoin de trier le contenu de certaines balises.

Mon xml est de la forme :

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
19
20
21
22
23
 
<documents>
  <document>
    <field name="toto">valeur<field>
    <field name="properties">
       <prop name="b">
       <prop name="a">
     <field/>
    <field name="titi">autrevaleur<field>
  <document/>
 
 
  <document>
    <field name="toto">valeur<field>
    <field name="properties">
       <prop name="c">
       <prop name="a">
     <field/>
    <field name="tutu">autrevaleur<field>
  <document/>
 
...
<documents/>
Je souhaite donc trier pour chaque document les balises inclues entre les balises qui ont pour nom properties (par ordre alphabétique) pour obtenir :


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
19
20
21
22
23
<documents>
  <document>
    <field name="toto">valeur<field>
    <field name="properties">
       <prop name="a">
       <prop name="b">
     <field/>
    <field name="titi">autrevaleur<field>
  <document/>


  <document>
    <field name="toto">valeur<field>
    <field name="properties">
       <prop name="a">
       <prop name="c">
     <field/>
    <field name="tutu">autrevaleur<field>
  <document/>

...
<documents/>
J'ai essayé avec sed en utilisant des plages d'adresses mais je ne sais pas si il est possible de trier.

sed -n -e '/<field name="properties">/,/<field/>/p' doc.xml

Pouvez-vous me faire une suggestion ?

Merci d'avance.