Bonjour,
je voudrai lister les valeurs des attributs d'un fichiers XML
<root>
<s id="s1">
<z code="A01" libelle="ESPACE A01">
<p debut="10/03/2014 00:15" fin="10/03/2014 00:15" in="0" out="0" flag="1" traite="0"/>
....
J'ai fais le code suivant pour aficher le id de la balise s, le code des balises z, et le debut

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
24
25
26
27
28
29
30
FOR r1 IN (SELECT EXTRACTVALUE (VALUE (p), 's/@id') AS ID
                FROM TABLE (XMLSEQUENCE (EXTRACT (x, '/root/s'))) p)
   LOOP
      DBMS_OUTPUT.put_line ('id_structure = ' || r1.ID);
 
      FOR r IN (SELECT EXTRACTVALUE (VALUE (p), 'z/@code') AS cod
                  FROM TABLE (XMLSEQUENCE (EXTRACT (x,
                                                       '/root/s[@id="'
                                                    || r1.ID
                                                    || '"]/z'
                                                   )
                                          )
                             ) p)
      LOOP
         DBMS_OUTPUT.put_line ('code zone = ' || r.cod);
 
         FOR r2 IN
            (SELECT EXTRACTVALUE (VALUE (p), 'p/@debut') AS debut
               FROM TABLE (XMLSEQUENCE (EXTRACT (x,
                                                    '/root/s/z[@code="'
                                                 || r.cod
                                                 || '"]/p'
                                                )
                                       )
                          ) p)
         LOOP
            DBMS_OUTPUT.put_line ('debut = ' || r2.debut);
         END LOOP;
      END LOOP;
   END LOOP;
est ce qu'il y a une optimisation à faire?