Je rame depuis un moment sur ce soucis :
Mon XML d'entrée :
En sortie je voudrai, dans chaque noeud section insérer le noeud CTO_ACTTYPES et ses enfants (en fonction de la correspondance CTO_SECTION_ID / ACTTYPE_ID) :
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
42
43
44
45
46
47 <ns0:CTO_STRUCTURE> <ns0:STRUCTURE_CODE>ST000</ns0:STRUCTURE_CODE> <ns0:STRUCTURE_DESCRIPTION>st desc</ns0:STRUCTURE_DESCRIPTION> <ns0:TMP_SECTIONS> <ns0:TMP_SECTION> <ns0:TMP_SECTION_ID>TR01</ns0:TMP_SECTION_ID> <ns0:TMP_SECTION_DESCRIPTION>TR01</ns0:TMP_SECTION_DESCRIPTION> <ns0:TMP_OILFIELD_REFERENCE></ns0:TMP_OILFIELD_REFERENCE> </ns0:TMP_SECTION> <ns0:TMP_SECTION> <ns0:TMP_SECTION_ID>TR03</ns0:TMP_SECTION_ID> <ns0:TMP_SECTION_DESCRIPTION>TR03</ns0:TMP_SECTION_DESCRIPTION> <ns0:TMP_OILFIELD_REFERENCE></ns0:TMP_OILFIELD_REFERENCE> </ns0:TMP_SECTION> <ns0:TMP_SECTION> <ns0:TMP_SECTION_ID>TR03</ns0:TMP_SECTION_ID> <ns0:TMP_SECTION_DESCRIPTION>TR03</ns0:TMP_SECTION_DESCRIPTION> <ns0:TMP_OILFIELD_REFERENCE></ns0:TMP_OILFIELD_REFERENCE> <ns0:TMP_OILWELL_REFERENCE></ns0:TMP_OILWELL_REFERENCE> <ns0:TMP_ORDERED_LENGTH>101</ns0:TMP_ORDERED_LENGTH> </ns0:TMP_SECTION> </ns0:TMP_SECTIONS> <ns0:CTO_SECTIONS> <ns0:CTO_SECTION> <ns0:CTO_ACTTYPES> <ns0:CTO_ACTTYPE> <ns0:ACTTYPE_ID>TR03-MANUF</ns0:ACTTYPE_ID> <ns0:ACTTYPE_DESCRIPTION>TR03-MANUF</ns0:ACTTYPE_DESCRIPTION> <ns0:CTO_ACTIVITIES> <ns0:CTO_ACTIVITY> <ns0:ACTIVITY_ID>02-GP-TR03</ns0:ACTIVITY_ID> <ns0:ACTIVITY_DESCRIPTION>02-GP-TR03</ns0:ACTIVITY_DESCRIPTION> <ns0:ACTIVITY_DURATION>0</ns0:ACTIVITY_DURATION> </ns0:CTO_ACTIVITY> </ns0:CTO_ACTIVITIES> </ns0:CTO_ACTTYPE> <ns0:CTO_ACTTYPE> <ns0:ACTTYPE_ID>TR03-MANUF</ns0:ACTTYPE_ID> <ns0:ACTTYPE_DESCRIPTION>TR03-MANUF</ns0:ACTTYPE_DESCRIPTION> <ns0:CTO_ACTIVITIES> <ns0:CTO_ACTIVITY> <ns0:ACTIVITY_ID>03-SF-TR03</ns0:ACTIVITY_ID> <ns0:ACTIVITY_DESCRIPTION>03-SF-TR03</ns0:ACTIVITY_DESCRIPTION> <ns0:ACTIVITY_DURATION>0</ns0:ACTIVITY_DURATION> </ns0:CTO_ACTIVITY> </ns0:CTO_ACTIVITIES> </ns0:CTO_ACTTYPE>
Si quelqu'un a une idée, mes tentatives en utilisant des apply-template ou des for-each ne donnent rien ;-( p.ex; :
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 <CTO_STRUCTURE> <STRUCTURE_CODE>ST000</STRUCTURE_CODE> <STRUCTURE_DESCRIPTION>st desc</STRUCTURE_DESCRIPTION> <CTO_SECTIONS> <CTO_SECTION> <CTO_SECTION_ID>TR03</CTO_SECTION_ID> <CTO_SECTION_DESCRIPTION>TR03</CTO_SECTION_DESCRIPTION> <CTO_OILFIELD_REFERENCE/> <ns0:CTO_ACTTYPES> <ns0:CTO_ACTTYPE> <ns0:ACTTYPE_ID>TR03-MANUF</ns0:ACTTYPE_ID> <ns0:ACTTYPE_DESCRIPTION>TR03-MANUF</ns0:ACTTYPE_DESCRIPTION> <ns0:CTO_ACTIVITIES> <ns0:CTO_ACTIVITY> <ns0:ACTIVITY_ID>02-GP-TR03</ns0:ACTIVITY_ID> <ns0:ACTIVITY_DESCRIPTION>02-GP-TR03</ns0:ACTIVITY_DESCRIPTION> <ns0:ACTIVITY_DURATION>0</ns0:ACTIVITY_DURATION> </ns0:CTO_ACTIVITY> </ns0:CTO_ACTIVITIES> </ns0:CTO_ACTTYPE> <ns0:/CTO_ACTTYPES> </CTO_SECTION> <CTO_SECTION> <CTO_SECTION_ID>TR02</CTO_SECTION_ID> <CTO_SECTION_DESCRIPTION>TR02</CTO_SECTION_DESCRIPTION> <CTO_OILFIELD_REFERENCE/> ...
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 <xsl:template name="structure1" priority="3" match="/s0:CTO_QUOTATION"> <xsl:for-each select="s0:CTO_PROJECTS/s0:CTO_PROJECT/s0:CTO_STRUCTURES/s0:CTO_STRUCTURE"> <CTO_STRUCTURE> <STRUCTURE_CODE> <xsl:value-of select="s0:STRUCTURE_CODE/text()"/> </STRUCTURE_CODE> <STRUCTURE_DESCRIPTION> <xsl:value-of select="s0:STRUCTURE_DESCRIPTION/text()"/> </STRUCTURE_DESCRIPTION> <xsl:for-each select="s0:TMP_SECTIONS"> <CTO_SECTIONS> <xsl:for-each select="s0:TMP_SECTION"> <CTO_SECTION> <CTO_SECTION_ID> <xsl:value-of select="s0:TMP_SECTION_ID/text()"/> </CTO_SECTION_ID> <CTO_SECTION_DESCRIPTION> <xsl:value-of select="s0:TMP_SECTION_DESCRIPTION/text()"/> </CTO_SECTION_DESCRIPTION> <CTO_OILFIELD_REFERENCE> <xsl:value-of select="s0:TMP_OILFIELD_REFERENCE/text()"/> </CTO_OILFIELD_REFERENCE> </CTO_SECTION> </xsl:for-each> </CTO_SECTIONS> </xsl:for-each> </CTO_STRUCTURE> </xsl:for-each> </xsl:template>
Merci !
Partager