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:
.. 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:
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> .........
avec BE1 au dernier Pipe (ex ci-dessus).. 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| ..
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..
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>
J'espère avoir été assez clair.
Merci d'avance,
L'homme sans plus de cheveux![]()
Partager