Bonjour,
J'ai cherché dans tous les sens mais j'ai pas réussi à résoudre mon probléme qui est le suivant :
J'ai un fichier XML un peu tordu :
En résumé, je cherche à récuperer la valeur des attributs ows_Variable1,ows_Variable2,ows_Variable3 ... ainsi que le nom de ces variables là. Ce nom est dans le noeud AttributeType qui contient :
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
31
32
33
34
35
36
37
38
39
40
41 <!-- Created with Liquid XML Studio Developer Edition (Trial) 8.1.7.2743 (http://www.liquid-technologies.com) --> <xml xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema"> <s:Schema id="RowsetSchema"> <s:ElementType name="row" content="eltOnly" rs:CommandTimeout="30"> <s:AttributeType name="ows_Attachments" rs:name="Pièces jointes" rs:number="1"> <s:datatype dt:type="boolean" dt:maxLength="1" /> </s:AttributeType> <s:AttributeType name="ows_LinkTitle" rs:name="Titre" rs:number="2"> <s:datatype dt:type="string" dt:maxLength="512" /> </s:AttributeType> <s:AttributeType name="ows_Variable1" rs:name="Variable1" rs:number="3"> <s:datatype dt:type="float" dt:maxLength="8" /> </s:AttributeType> <s:AttributeType name="ows_variable2" rs:name="variable2" rs:number="4"> <s:datatype dt:type="float" dt:maxLength="8" /> </s:AttributeType> <s:AttributeType name="ows_variable3" rs:name="aaaa" rs:number="5"> <s:datatype dt:type="float" dt:maxLength="8" /> </s:AttributeType> <s:AttributeType name="ows_variable4" rs:name="variable4" rs:number="6"> <s:datatype dt:type="float" dt:maxLength="8" /> </s:AttributeType> <s:AttributeType name="ows_variable5" rs:name="variable5" rs:number="7"> <s:datatype dt:type="float" dt:maxLength="8" /> </s:AttributeType> <s:AttributeType name="ows_variable6" rs:name="variable6" rs:number="8"> <s:datatype dt:type="float" dt:maxLength="8" /> </s:AttributeType> <s:AttributeType name="ows_variable7" rs:name="zzzz" rs:number="9"> <s:datatype dt:type="float" dt:maxLength="8" /> </s:AttributeType> <s:AttributeType name="ows_ID" rs:name="ID" rs:number="10"> <s:datatype dt:type="i4" dt:maxLength="4" /> </s:AttributeType> </s:ElementType> </s:Schema> <rs:data> <z:row ows_Attachments="0" ows_LinkTitle="clientFS" ows_Variable1="25.0000000000000" ows_variable2="52.0000000000000" ows_variable3="26.0000000000000" ows_variable4="62.0000000000000" ows_variable6="26.0000000000000" ows_ID="4" /> <z:row ows_Attachments="0" ows_LinkTitle="client2bis" ows_Variable1="213.000000000000" ows_variable2="6.00000000000000" ows_variable3="54.0000000000000" ows_variable4="654.000000000000" ows_variable5="13864.0000000000" ows_variable6="564.000000000000" ows_variable7="4.00000000000000" ows_ID="5" /> </rs:data> </xml>
un attribut name qui contient le nom de l'attribut tel qu'il est dans le noeud row, et un attribut rs:name qui lui contient le VRAI nom d ela variable que je souhaite récuperer.
J'ai essayé de faire ça avec une boucle imbriquée, la premiere boucle sur tous les attributs du noeud row et qui récupere leur noms.
La deuxieme boucle sur tous les neodu AttributeType et récupere le contenu des attributs name et rs:name. enfin, je compare le contenu de l'attribut name avec avec le nom des attributs du noeud z:row si c'est les même je recupere le rs:name ainsi que la valeur de l'attribut ...
Ma premiere boucle ressemble à ça :
Il me récupere que le nom du premier attribut du noeud z:row : ows_Attachments, en plus j'arrive pas à récuperer sa valeur ... (@nomColonneInterneRow)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <xsl:for-each select="//rs:data/z:row"> <xsl:variable name="ID" select="position()"/> <xsl:variable name="nomColonneInterneRow" select="name(@*)" /> <xsl:variable name="lavaleur" select="@nomColonneInterneRow" />
J'espere que quelqu'un va réussir à comprendre quelque chose ...
Partager