Bonjour à tous,

Je m'en remet à vous après plusieurs heures d'arrachage de cheveux.
Je possède un fichier XML avec plusieurs noeuds "identiques" (seule la valeur change) de ce genre:

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
<BOM_ONE_LEVEL>
<FIELD name="Name" value="121327-08" />
<FIELD name="CONFIG" value="" />
<FIELD name="NOME_ARTI_CODE_COMPOSE" value="121327-08" />
<FIELD name="ARTI_DESIGNATION" value="BUTEES DECOUPES" />
<FIELD name="ARTI_ARFA_CODE" value="26" />
<FIELD name="USER" value="BE1" />
</BOM_ONE_LEVEL>
........
<BOM_ONE_LEVEL>
<FIELD name="Name" value="121327-08S00" />
<FIELD name="CONFIG" value="Défaut" />
<FIELD name="NOME_ARTI_CODE_COMPOSANT" value="121327-08S00" />
<FIELD name="ARTI_DESIGNATION" value="BUTEESVERSION N" />
<FIELD name="ARTI_USER_CAR1" value="" />
<FIELD name="NOME_COEFFICIENT" value="1" />
<FIELD name="ARTI_ARFA_CODE" value="26" />
</BOM_ONE_LEVEL>
.........
.. Ce qui m'intéresse et qui se trouve 1 noeud sur 2 c'est le champ <FIELD name="USER" value="BE1" />. Je récupère donc ce champ grâce à <xsl:variable name="USER" select="*[6]/@value" /> mais je ne sais pas comment garder la variable USER = "BE1" fixe pour que je puisse ensuite construire un code du genre:

..
N|113547-10|121327-10S00|ENROBEUR|||1|26|BE1|
N|154327-10S00|104-9000-002|POULIE L2051|1|
N|484544-10540|101-0500-001|VIS A BILLES PLAQUEUR LAT.|51|BE1|
..
avec BE1 au dernier Pipe (ex ci-dessus)

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
48
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:output method="text"></xsl:output>
  <xsl:template match="/">
 <!-- on génère l'entête du fichier TXT -->
 <!--<xsl:text>TYPE|COMPOSE|N_PLAN|DESCRIPTION|REF CONST|SE     BE|QUANTITE|FAMILLE|USER|</xsl:text>-->
<!-- on traite le premier niveau des articles de nomenclature d'assemblage -->
<xsl:for-each select="EPDM_GATEWAY/TOTAL_BOM/BOM_ONE_LEVEL">
 
   <xsl:variable name="USER_NAME" select="*[6]/@name" />
   <xsl:variable name="USER" select="*[6]/@value" />
 
     <xsl:if test="BOM_ITEMS_LIST">
 
     <xsl:variable name="COMPOSE_NAME" select="*[3]/@value" />
     <xsl:variable name="SOUS_ENSEMBLE" select="substring-after($COMPOSE_NAME,'-')" />
 
      <xsl:for-each select="BOM_ITEMS_LIST/BOM_ITEM">
      <!-- on traite le niveau des liens de nomenclature -->
      <!-- on traite en détail chaque champs de la nomenclature --> 
      <xsl:text>N|</xsl:text>
        <xsl:value-of select="$COMPOSE_NAME" />
      <xsl:text>|</xsl:text>
        <xsl:value-of select="*[3]/@value"></xsl:value-of>
      <xsl:text>|</xsl:text>
        <xsl:value-of select="*[4]/@value" />
      <xsl:text>|</xsl:text>
        <xsl:value-of select="*[5]/@value" />
      <xsl:text>|</xsl:text>
 
     <xsl:if test="string-length($SOUS_ENSEMBLE) = 5">
      <xsl:value-of select="$SOUS_ENSEMBLE"/>
     </xsl:if>
 
      <xsl:text>|</xsl:text>
        <xsl:value-of select="*[6]/@value" />
      <xsl:text>|</xsl:text>
        <xsl:value-of select="*[7]/@value" />
      <xsl:text>|</xsl:text> 
        <xsl:value-of select="$USER" /> 
      <xsl:text>|</xsl:text>
          <xsl:text>
</xsl:text>
        </xsl:for-each>
   </xsl:if>
    </xsl:for-each>
  </xsl:template>
</xsl:stylesheet>
Vous l'aurez compris, la valeur de la variable USER change 1 fois sur 2. Je souhaite garder ma variable User fixe avec BE1 à l'intérieur par exemple ( le nom de l'user est amené a changer, pas moyen de le fixer en dur ) et vu qu'il n'y a pas moyen de changer la valeur d'une variable en cours de route, je suis perdu..

J'espère avoir été assez clair.
Merci d'avance,

L'homme sans plus de cheveux