Problème lecture des noeuds dans xslt - XML/XSL - Programmation
Marsh Posté le 26-11-2008 à 19:51:14
Bonsoir avander,
Et merci de t'interresser à mon problème ... j'avais quelques difficultées pour les boucles de lecture des noeuds mais j'y suis parvenu.
Par contre je ne parviens pas à cumuler les lignes sur certains critères ... voici le fichier :
<?xml version="1.0" encoding="utf-8" ?>
- <Factures xmlns="urn:edeveloper.Factures">
- <Record>
<CODE_FOUR>52035</CODE_FOUR>
<FACT_FOU>800756839</FACT_FOU>
<DATE_FAFO>01102008</DATE_FAFO>
<DEVISE>EUR</DEVISE>
<TOTAL_HT>726.39</TOTAL_HT>
<TOTAL_TTC>863.22</TOTAL_TTC>
<DTAE_ECH>05102008</DTAE_ECH>
<MODE_REG />
<CODE_STE>10</CODE_STE>
<TYPE>FAC</TYPE>
- <Liste_Cdes>
- <Commande>
<NUM_CDE>524</NUM_CDE>
<REFIMPCDE />
- <Lignes_Facture>
- <Ligne>
<REF_ART>LLOY</REF_ART>
<MONTANT>488.98</MONTANT>
<TAUX_TVA>19.60</TAUX_TVA>
<PU_REMISE>488.98</PU_REMISE>
<QUANTITE>1</QUANTITE>
<DESIGNAT>Loyer financier</DESIGNAT>
<NUM_LIG>1</NUM_LIG>
</Ligne>
- <Ligne>
<REF_ART>LMAIASS</REF_ART>
<MONTANT>103.26</MONTANT>
<TAUX_TVA>19.60</TAUX_TVA>
<PU_REMISE>103.26</PU_REMISE>
<QUANTITE>1</QUANTITE>
<DESIGNAT>Maintenance - Assistance</DESIGNAT>
<NUM_LIG>2</NUM_LIG>
</Ligne>
- <Ligne>
<REF_ART>LPNE</REF_ART>
<MONTANT>62.08</MONTANT>
<TAUX_TVA>19.60</TAUX_TVA>
<PU_REMISE>62.08</PU_REMISE>
<QUANTITE>1</QUANTITE>
<DESIGNAT>Pneumatiques</DESIGNAT>
<NUM_LIG>3</NUM_LIG>
</Ligne>
- <Ligne>
<REF_ART>LVER</REF_ART>
<MONTANT>6.44</MONTANT>
<TAUX_TVA>19.60</TAUX_TVA>
<PU_REMISE>6.44</PU_REMISE>
<QUANTITE>1</QUANTITE>
<DESIGNAT>Vehicule de remplacement</DESIGNAT>
<NUM_LIG>4</NUM_LIG>
</Ligne>
- <Ligne>
<REF_ART>LCAR</REF_ART>
<MONTANT>1.52</MONTANT>
<TAUX_TVA>19.60</TAUX_TVA>
<PU_REMISE>1.52</PU_REMISE>
<QUANTITE>1</QUANTITE>
<DESIGNAT>Gestion carburant</DESIGNAT>
<NUM_LIG>5</NUM_LIG>
</Ligne>
- <Ligne>
<REF_ART>LARSK</REF_ART>
<MONTANT>28.30</MONTANT>
<TAUX_TVA>0.00</TAUX_TVA>
<PU_REMISE>28.30</PU_REMISE>
<QUANTITE>1</QUANTITE>
<DESIGNAT>Assurance Autorisk</DESIGNAT>
<NUM_LIG>6</NUM_LIG>
</Ligne>
- <Ligne>
<REF_ART>LSRSK</REF_ART>
<MONTANT>35.81</MONTANT>
<TAUX_TVA>19.60</TAUX_TVA>
<PU_REMISE>35.81</PU_REMISE>
<QUANTITE>1</QUANTITE>
<DESIGNAT>Service Autorisk</DESIGNAT>
<NUM_LIG>7</NUM_LIG>
</Ligne>
</Lignes_Facture>
</Commande>
</Liste_Cdes>
</Record>
</Factures>
Comment puis je faire pour cumuler les zones MONTANT et PU_REMISE des lignes qui aurait la zone REF_ART égale à 'LLOY' ou 'LSRSK' et la zone TAUX_TVA identique.
Merci d'avance
Marsh Posté le 27-11-2008 à 12:37:19
As-tu regarde la fonction xpath sum()?
<xsl:template match="/"> |
Exemple simpliste qui additionne le contenu de tous les éléments 'a' d'un arbre xml.
Reste plus qu'à pondre un xpath de la mort qui tue...
Marsh Posté le 02-12-2008 à 17:20:10
Bonsoir avander,
J'ai été capable de cumuler les lignes grace à la fonction sum() mais sans expression conditionnelle.
Voici le fichier xslt :
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" extension-element-prefixes="XQMessageElem" exclude-result-prefixes="str xs saxon XQHeaderFunc tns0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns0="http://127.0.0.1:880/" xmlns:XQHeaderFunc="java:com.sonicsw.xq.service.xform.HeaderExtension" xmlns:saxon="http://saxon.sf.net/" xmlns:XQMessageElem="http://www.sonicsw.com/sonicxq/com.sonicsw.xq.service.xform.TransformationElementFactory" xmlns:str="http://BI.EU.FR.REI.nullcompensation">
<xsl:output method="xml" encoding="iso-8859-1" indent="yes"/>
<xsl:template match="/">
<xsl:for-each select="/Factures">
<Factures>
<xsl:for-each select="Record">
<Record>
<CODE_FOUR><xsl:value-of select="CODE_FOUR"/></CODE_FOUR>
<FACT_FOU><xsl:value-of select="FACT_FOU"/></FACT_FOU>
<DATE_FAFO><xsl:value-of select="DATE_FAFO"/></DATE_FAFO>
<DEVISE><xsl:value-of select="DEVISE"/></DEVISE>
<TOTAL_HT><xsl:value-of select="TOTAL_HT"/></TOTAL_HT>
<TOTAL_TTC><xsl:value-of select="TOTAL_TTC"/></TOTAL_TTC>
<DTAE_ECH><xsl:value-of select="DTAE_ECH"/></DTAE_ECH>
<MODE_REG><xsl:value-of select="MODE_REG"/></MODE_REG>
<CODE_STE><xsl:value-of select="CODE_STE"/></CODE_STE>
<TYPE><xsl:value-of select="TYPE"/></TYPE>
<xsl:for-each select="Liste_Cdes">
<Liste_Cdes>
<xsl:for-each select="Commande">
<Commande>
<NUM_CDE><xsl:value-of select="NUM_CDE"/></NUM_CDE>
<REFIMPCDE><xsl:value-of select="REFIMPCDE"/></REFIMPCDE>
<xsl:for-each select="Lignes_Facture">
<Lignes_Facture>
<Ligne>
<REF_ART>
<xsl:value-of select="''"/>
</REF_ART>
<MONTANT>
<xsl:value-of select="format-number(number((sum(../Lignes_Facture/Ligne/MONTANT)*100) div 100),'0000000.00')"/>
</MONTANT>
<TAUX_TVA>
<xsl:value-of select="'0'"/>
</TAUX_TVA>
<PU_REMISE>
<xsl:value-of select="format-number(number((sum(../Lignes_Facture/Ligne/PU_REMISE)*100) div 100),'0000000.00')"/>
</PU_REMISE>
<QUANTITE>
<xsl:value-of select="'1'"/>
</QUANTITE>
<DESIGNAT>
<xsl:value-of select="'Loyer Financier'"/>
</DESIGNAT>
<NUM_LIG><xsl:value-of select="position()"/></NUM_LIG>
</Ligne>
</Lignes_Facture>
</xsl:for-each>
</Commande>
</xsl:for-each>
</Liste_Cdes>
</xsl:for-each>
</Record>
</xsl:for-each>
</Factures>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Sais tu si il est possible de cumuler une seule des rubrique d'un même noeud et de conditionner en plus ce cumul ? Si oui Comment ???
Marsh Posté le 03-12-2008 à 12:46:31
J'ai pas trouvé le moyen de cumuler les deux éléments d'une ligne d'un coup... dans ces cas là il faut diviser pour règner et donc le faire en deux fois... mais je déséspère pas de trouver.
|
Ce qui me donne en sortie:
|
Voila de quoi t'inspirer...
Marsh Posté le 04-12-2008 à 12:48:35
Bonjour Avander,
Ok je vasi essayer d'appliquer ta solution mais je ne maitrise pas très bine l'utilisation des template ...
Parce que j'ai d'ailleurs une autre difficulté pour laquelle la solution doit être l'utilsation d'un template ...
Je t'explique, j'ai ajouter au fichier de Factures xml un nouveau noeud ou j'ai une 30aine de fils dessous et je dois récupérer parmi les fils la valeur de l'attribut correspondant à ma balise REF_ART voici ci-dessous un morceau di fichier et ce que j'ai essayer d'implementer dans le xslt :
le fichier xml en entrée
<?xml version="1.0" encoding="UTF-8"?>
<Factures>
<Record>
<CODE_FOUR>52035</CODE_FOUR>
<FACT_FOU>800756860</FACT_FOU>
<DATE_FAFO>01102008</DATE_FAFO>
<DEVISE>EUR</DEVISE>
<TOTAL_HT>-18788.45</TOTAL_HT>
<TOTAL_TTC>-18788.45</TOTAL_TTC>
<DTAE_ECH>05102008</DTAE_ECH>
<MODE_REG/>
<CODE_STE>10</CODE_STE>
<TYPE>AV</TYPE>
<Liste_Cdes>
<Commande>
<NUM_CDE>566</NUM_CDE>
<REFIMPCDE>0</REFIMPCDE>
<Lignes_Facture>
<Ligne>
<REF_ART>LOYER</REF_ART>
<MONTANT>-0001630.10</MONTANT>
<TAUX_TVA>0</TAUX_TVA>
<PU_REMISE>-0001630.10</PU_REMISE>
<QUANTITE>0</QUANTITE>
<DESIGNAT>Loyer Financier</DESIGNAT>
<NUM_LIG>1</NUM_LIG>
</Ligne>
</Lignes_Facture>
</Commande>
<Commande>
<NUM_CDE>529</NUM_CDE>
<REFIMPCDE>0</REFIMPCDE>
<Lignes_Facture>
<Ligne>
<REF_ART>LOYER</REF_ART>
<MONTANT>-0007192.25</MONTANT>
<TAUX_TVA>0</TAUX_TVA>
<PU_REMISE>-0007192.25</PU_REMISE>
<QUANTITE>0</QUANTITE>
<DESIGNAT>Loyer Financier</DESIGNAT>
<NUM_LIG>1</NUM_LIG>
</Ligne>
</Lignes_Facture>
</Commande>
</Liste_Cdes>
</Record>
<db:result xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:db="http://www.sonicsw.com/esb/service/dbservice" xsi:schemaLocation="http://www.sonicsw.com/esb/service/dbservice sonicfs:///System/Schemas/esb/service/DBService.xsd">
<db:resultSet version="1.1">
<db:row>
<YARG>LOYER</YARG>
<YLAL1>Loyer Financier </YLAL1>
<YNUM1>4501.00000</YNUM1>
</db:row>
<db:row>
<YARG>PE001</YARG>
<YLAL1>Conso.Diesel (Etranger) </YLAL1>
<YNUM1>1303000.00000</YNUM1>
</db:row>
<db:row>
<YARG>PE002</YARG>
<YLAL1>Conso.Essence (Etranger) </YLAL1>
<YNUM1>1304000.00000</YNUM1>
</db:row>
</db:resultSet>
</db:result>
</Factures>
Et voilà mon xslt
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" extension-element-prefixes="XQMessageElem" exclude-result-prefixes="str xs saxon XQHeaderFunc tns0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:db="http://www.sonicsw.com/esb/service/dbservice" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns0="http://127.0.0.1:880/" xmlns:XQHeaderFunc="java:com.sonicsw.xq.service.xform.HeaderExtension" xmlns:saxon="http://saxon.sf.net/" xmlns:XQMessageElem="http://www.sonicsw.com/sonicxq/com.sonicsw.xq.service.xform.TransformationElementFactory" xmlns:str="http://BI.EU.FR.REI.nullcompensation">
<xsl:output method="xml" encoding="iso-8859-1" indent="yes"/>
<xsl:template match="/">
<xsl:for-each select="/Factures">
<Factures>
<xsl:for-each select="Record">
<Record>
<CODE_FOUR>
<xsl:value-of select="CODE_FOUR"/>
</CODE_FOUR>
<FACT_FOU>
<xsl:value-of select="FACT_FOU"/>
</FACT_FOU>
<DATE_FAFO>
<xsl:value-of select="DATE_FAFO"/>
</DATE_FAFO>
<DEVISE>
<xsl:value-of select="DEVISE"/>
</DEVISE>
<TOTAL_HT>
<xsl:value-of select="TOTAL_HT"/>
</TOTAL_HT>
<TOTAL_TTC>
<xsl:value-of select="TOTAL_TTC"/>
</TOTAL_TTC>
<DTAE_ECH>
<xsl:value-of select="DTAE_ECH"/>
</DTAE_ECH>
<MODE_REG>
<xsl:value-of select="MODE_REG"/>
</MODE_REG>
<CODE_STE>
<xsl:value-of select="CODE_STE"/>
</CODE_STE>
<TYPE>
<xsl:value-of select="TYPE"/>
</TYPE>
<xsl:for-each select="Liste_Cdes">
<Liste_Cdes>
<xsl:for-each select="Commande">
<Commande>
<NUM_CDE>
<xsl:value-of select="NUM_CDE"/>
</NUM_CDE>
<REFIMPCDE>
<xsl:value-of select="REFIMPCDE"/>
</REFIMPCDE>
<xsl:for-each select="Lignes_Facture">
<Lignes_Facture>
<xsl:for-each select="Ligne">
<Ligne>
<REF_ART>
<xsl:call-template name="RecupPCK">
<xsl:with-param name="REF_ARTvalue" select="REF_ART"></xsl:with-param>
<xsl:with-param name="PCKvalue" select="0"></xsl:with-param>
</xsl:call-template>
<xsl:choose>
<xsl:when test="PCKvalue != 0">
<xsl:value-of select="PCKvalue"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="REF_ART"/>
</xsl:otherwise>
</xsl:choose>
</REF_ART>
<MONTANT>
<xsl:value-of select="MONTANT"/>
</MONTANT>
<TAUX_TVA>
<xsl:value-of select="TAUX_TVA"/>
</TAUX_TVA>
<PU_REMISE>
<xsl:value-of select="PU_REMISE"/>
</PU_REMISE>
<QUANTITE>
<xsl:value-of select="QUANTITE"/>
</QUANTITE>
<DESIGNAT>
<xsl:value-of select="DESIGNAT"/>
</DESIGNAT>
<NUM_LIG>
<xsl:value-of select="NUM_LIG"/>
</NUM_LIG>
</Ligne>
</xsl:for-each>
</Lignes_Facture>
</xsl:for-each>
</Commande>
</xsl:for-each>
</Liste_Cdes>
</xsl:for-each>
</Record>
</xsl:for-each>
</Factures>
</xsl:for-each>
</xsl:template>
<xsl:template name="RecupPCK">
<xsl:param name="REF_ARTvalue"></xsl:param>
<xsl:param name="PCKvalue"></xsl:param>
<xsl:for-each select="./ancestor::Factures/db:result/db:resultSet/db:row">
<xsl:if test="YARG = $REF_ARTvalue">
<xsl:param name="PCKvalue">
<xsl:value-of select="round(YNUM1)"/>
</xsl:param>
</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Donc comment récupérer la valeur de YNUM1 par lme parametre du template ???
Merci de ton aide
Marsh Posté le 04-12-2008 à 15:41:07
Oui va falloir étudier un peu le méchanisme d'une transformation parce jusqu'à présent tu ne t'en sert pas du tout...
Mon exemple utilise ce méchanisme, c'est le principe de toute transformation. C'est pas compliqué il suffit de repérer les textes qui figurent dans le résultat et de regarder d'où il viennent.
Autre problème, tu ne pourra pas récupérer la valeur du paramètre en sortie comme tu l'espère... les variables sont immuables en XSLT, tu ne peux que leur attribuer une valeur et ce à la création.
Marsh Posté le 04-12-2008 à 16:46:36
Avec templates ça donne :
<?xml version="1.0" encoding="ISO-8859-1"?> |
et le résultat
<?xml version="1.0" encoding="ISO-8859-1"?>Start XSLT |
Note qu'en utilisant le méchanisme de transfo y reste plus grand chose à faire dans le stylesheet...
Marsh Posté le 20-11-2008 à 15:18:58
Bonjour,
Voici le fichier que je lis :
<?xml version="1.0" encoding="ISO-8859-1"?>
<factures>
<entete>
<nbrEntete>101</nbrEntete>
<numclientEnt>115207</numclientEnt>
<numDocumentEnt>800756839</numDocumentEnt>
<typeDocEnt>F</typeDocEnt>
<dateFactureEnt>01102008</dateFactureEnt>
<echeanceFactureEnt>05102008</echeanceFactureEnt>
<resteABlancEnt/>
</entete>
<ligne>
<nbrDetail>201</nbrDetail>
<numClient>115207</numClient>
<numAvenant>481463</numAvenant>
<numimmatric>108AVG</numimmatric>
<nomConduct/>
<structure/>
<codeGenre>VP</codeGenre>
<refExtClient>524</refExtClient>
<codeProduit>LLOY</codeProduit>
<libelleProduit>Loyer financier</libelleProduit>
<montantHT>488,98</montantHT>
<montantTVA>95,84</montantTVA>
<montantTTC>584,82</montantTTC>
<codeDevise>EUR</codeDevise>
<tauxTVA>19,60</tauxTVA>
<dateDebPresta>01102008</dateDebPresta>
<dateFinPresta>31102008</dateFinPresta>
<resteABlanc/>
</ligne>
<ligne>
<nbrDetail>201</nbrDetail>
<numClient>115207</numClient>
<numAvenant>481463</numAvenant>
<numimmatric>108AVG</numimmatric>
<nomConduct/>
<structure/>
<codeGenre>VP</codeGenre>
<refExtClient>524</refExtClient>
<codeProduit>LMAIASS</codeProduit>
<libelleProduit>Maintenance & Assistance</libelleProduit>
<montantHT>103,26</montantHT>
<montantTVA>20,24</montantTVA>
<montantTTC>123,50</montantTTC>
<codeDevise>EUR</codeDevise>
<tauxTVA>19,60</tauxTVA>
<dateDebPresta>01102008</dateDebPresta>
<dateFinPresta>31102008</dateFinPresta>
<resteABlanc/>
</ligne>
<pied>
<nbrPied>301</nbrPied>
<numclientPied>115207</numclientPied>
<numDocumentPied>800756839</numDocumentPied>
<typeDocPied>F</typeDocPied>
<dateFacturePied>01102008</dateFacturePied>
<montantHTPied>726,39</montantHTPied>
<montantTVAPied>136,83</montantTVAPied>
<montantTTCPied>863,22</montantTTCPied>
<codeDevisePied>EUR</codeDevisePied>
<resteABlancPied/>
</pied>
<entete>
<nbrEntete>101</nbrEntete>
<numclientEnt>334229</numclientEnt>
<numDocumentEnt>800757637</numDocumentEnt>
<typeDocEnt>F</typeDocEnt>
<dateFactureEnt>01102008</dateFactureEnt>
<echeanceFactureEnt>01112008</echeanceFactureEnt>
<resteABlancEnt/>
</entete>
<ligne>
<nbrDetail>201</nbrDetail>
<numClient>334229</numClient>
<numAvenant>517270</numAvenant>
<numimmatric>401AXK</numimmatric>
<nomConduct>ANNE SOPHIE</nomConduct>
<structure/>
<codeGenre>VP</codeGenre>
<refExtClient>149</refExtClient>
<codeProduit>LLOY</codeProduit>
<libelleProduit>Loyer financier</libelleProduit>
<montantHT>438,59</montantHT>
<montantTVA>85,96</montantTVA>
<montantTTC>524,55</montantTTC>
<codeDevise>EUR</codeDevise>
<tauxTVA>19,60</tauxTVA>
<dateDebPresta>01102008</dateDebPresta>
<dateFinPresta>31102008</dateFinPresta>
<resteABlanc/>
</ligne>
<ligne>
<nbrDetail>201</nbrDetail>
<numClient>334229</numClient>
<numAvenant>517270</numAvenant>
<numimmatric>401AXK</numimmatric>
<nomConduct>ANNE SOPHIE</nomConduct>
<structure/>
<codeGenre>VP</codeGenre>
<refExtClient>149</refExtClient>
<codeProduit>LMAIASS</codeProduit>
<libelleProduit>Maintenance & Assistance</libelleProduit>
<montantHT>67,41</montantHT>
<montantTVA>13,21</montantTVA>
<montantTTC>80,62</montantTTC>
<codeDevise>EUR</codeDevise>
<tauxTVA>19,60</tauxTVA>
<dateDebPresta>01102008</dateDebPresta>
<dateFinPresta>31102008</dateFinPresta>
<resteABlanc/>
</ligne>
<pied>
<nbrPied>301</nbrPied>
<numclientPied>334229</numclientPied>
<numDocumentPied>800757637</numDocumentPied>
<typeDocPied>F</typeDocPied>
<dateFacturePied>01102008</dateFacturePied>
<montantHTPied>638,17</montantHTPied>
<montantTVAPied>119,53</montantTVAPied>
<montantTTCPied>757,70</montantTTCPied>
<codeDevisePied>EUR</codeDevisePied>
<resteABlancPied/>
</pied>
</factures>
voici mon xslt :
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns0="http://127.0.0.1:880/" xmlns:XQHeaderFunc="java:com.sonicsw.xq.service.xform.HeaderExtension" xmlns:saxon="http://saxon.sf.net/" xmlns:XQMessageElem="http://www.sonicsw.com/sonicxq/com.sonicsw.xq.service.xform.TransformationElementFactory" extension-element-prefixes="XQMessageElem" xmlns:str="http://BI.EU.FR.REI.nullcompensation" exclude-result-prefixes="str xs saxon XQHeaderFunc xs tns0">
<xsl:output method="xml" encoding="iso-8859-1" indent="yes"/>
<xsl:template match="/">
<xsl:for-each select="/factures">
<Factures>
<xsl:for-each select="entete">
<Record>
<CODE_FOUR>52035</CODE_FOUR>
<FACT_FOU>
<xsl:value-of select="numDocumentEnt"/>
</FACT_FOU>
<DATE_FAFO>
<xsl:value-of select="dateFactureEnt"/>
</DATE_FAFO>
<xsl:for-each select="../pied">
<DEVISE>
<xsl:value-of select="codeDevisePied"/>
</DEVISE>
<TOTAL_HT>
<xsl:value-of select="montantHTPied"/>
</TOTAL_HT>
<TOTAL_TTC>
<xsl:value-of select="montantTTCPied"/>
</TOTAL_TTC>
</xsl:for-each>
<DTAE_ECH>
<xsl:value-of select="echeanceFactureEnt"/>
</DTAE_ECH>
<MODE_REG>
</MODE_REG>
<CODE_STE>10</CODE_STE>
<TYPE>
<xsl:choose>
<xsl:when test="typeDocEnt = 'F'">FAC</xsl:when>
<xsl:otherwise>AV</xsl:otherwise>
</xsl:choose>
</TYPE>
<Liste_Cdes>
<Commande>
<NUM_CDE>
</NUM_CDE>
<REFIMPCDE>
</REFIMPCDE>
<Lignes_Facture>
<xsl:for-each select="../ligne">
<Ligne>
<REF_ART>
<xsl:value-of select="codeProduit"/>
</REF_ART>
<MONTANT>
<xsl:value-of select="montantHT"/>
</MONTANT>
<TAUX_TVA>
<xsl:value-of select="tauxTVA"/>
</TAUX_TVA>
<PU_REMISE>
<xsl:value-of select="montantHT"/>
</PU_REMISE>
<QUANTITE>1</QUANTITE>
<DESIGNAT>
<xsl:value-of select="libelleProduit"/>
</DESIGNAT>
<NUM_LIG>
<xsl:value-of select="position()"/>
</NUM_LIG>
</Ligne>
</xsl:for-each>
</Lignes_Facture>
</Commande>
</Liste_Cdes>
</Record>
</xsl:for-each>
</Factures>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Et voici ce que je souhaiterais obtenir
<?xml version="1.0" encoding="iso-8859-1"?>
<Factures>
<Record>
<CODE_FOUR>52035</CODE_FOUR>
<FACT_FOU>800756839</FACT_FOU>
<DATE_FAFO>01102008</DATE_FAFO>
<DEVISE>EUR</DEVISE>
<TOTAL_HT>726,39</TOTAL_HT>
<TOTAL_TTC>863,22</TOTAL_TTC>
<DTAE_ECH>05102008</DTAE_ECH>
<MODE_REG/>
<CODE_STE>10</CODE_STE>
<TYPE>FAC</TYPE>
<Liste_Cdes>
<Commande>
<NUM_CDE/>
<REFIMPCDE/>
<Lignes_Facture>
<Ligne>
<REF_ART>LLOY</REF_ART>
<MONTANT>488,98</MONTANT>
<TAUX_TVA>19,60</TAUX_TVA>
<PU_REMISE>488,98</PU_REMISE>
<QUANTITE>1</QUANTITE>
<DESIGNAT>Loyer financier</DESIGNAT>
<NUM_LIG>1</NUM_LIG>
</Ligne>
<Ligne>
<REF_ART>LMAIASS</REF_ART>
<MONTANT>103,26</MONTANT>
<TAUX_TVA>19,60</TAUX_TVA>
<PU_REMISE>103,26</PU_REMISE>
<QUANTITE>1</QUANTITE>
<DESIGNAT>Maintenance & Assistance</DESIGNAT>
<NUM_LIG>2</NUM_LIG>
</Ligne>
</Lignes_Facture>
</Commande>
</Liste_Cdes>
</Record>
<Record>
<CODE_FOUR>52035</CODE_FOUR>
<FACT_FOU>800757637</FACT_FOU>
<DATE_FAFO>01102008</DATE_FAFO>
<DEVISE>EUR</DEVISE>
<TOTAL_HT>638,17</TOTAL_HT>
<TOTAL_TTC>757,70</TOTAL_TTC>
<DTAE_ECH>01112008</DTAE_ECH>
<MODE_REG/>
<CODE_STE>10</CODE_STE>
<TYPE>FAC</TYPE>
<Liste_Cdes>
<Commande>
<NUM_CDE/>
<REFIMPCDE/>
<Lignes_Facture>
<Ligne>
<REF_ART>LLOY</REF_ART>
<MONTANT>438,59</MONTANT>
<TAUX_TVA>19,60</TAUX_TVA>
<PU_REMISE>438,59</PU_REMISE>
<QUANTITE>1</QUANTITE>
<DESIGNAT>Loyer financier</DESIGNAT>
<NUM_LIG>8</NUM_LIG>
</Ligne>
<Ligne>
<REF_ART>LMAIASS</REF_ART>
<MONTANT>67,41</MONTANT>
<TAUX_TVA>19,60</TAUX_TVA>
<PU_REMISE>67,41</PU_REMISE>
<QUANTITE>1</QUANTITE>
<DESIGNAT>Maintenance & Assistance</DESIGNAT>
<NUM_LIG>9</NUM_LIG>
</Ligne>
</Lignes_Facture>
</Commande>
</Liste_Cdes>
</Record>
</Factures>
Merci de votre aide ...