[XML/XSL] Template, besoin d'aide ...

Template, besoin d'aide ... [XML/XSL] - XML/XSL - Programmation

Marsh Posté le 17-05-2005 à 16:14:55    

Bonjour à tous,
 
J'ai un soucis, je me met au XSL et je bloque sur un template, je m'explique :
 
j'ai ce fichier XML :

Code :
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <racine>
  3. <node1>
  4.  <node2>
  5.   <node3>
  6.    <qte></qte>
  7.    <pu>200</pu>
  8.    <montant_ht>500</montant_ht>
  9.   </node3>
  10.   <node3>
  11.    <qte></qte>
  12.    <pu>110</pu>
  13.    <montant_ht>440</montant_ht>
  14.   </node3>
  15.  </node2>
  16. </node1>
  17. </racine>


 
et le but d'avoir un fichier XML avec la balise <qte> calculée avec la formule suivante <montant_ht> div <pu>.
 
j'ai essayé, le code ci-dessous mais çà ne marche pas :sic:

Code :
  1. <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  2. <xsl:output method="xml"/>
  3. <xsl:template match="/racine/node1/node2/node3/@qte">
  4.  <xsl:value-of select="@montant_ht div @pu"/>
  5. </xsl:template>
  6. </xsl:stylesheet>


 
Merci à tous.


Message édité par dom01 le 17-05-2005 à 16:56:48
Reply

Marsh Posté le 17-05-2005 à 16:14:55   

Reply

Marsh Posté le 18-05-2005 à 09:12:41    

Salut,
qte et pu ne sont pas des attributs donc tu n'as pas besoin de @ devant eux.
Rappel: ..../@attribut
        ..../balise

Reply

Marsh Posté le 18-05-2005 à 10:15:18    

Arf merci bcp ! çà marche bcp mieux et pas tout à fait quand meme.
 
j'ai changé mon XSL en :
 

Code :
  1. <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  2.     <xsl:output method="xml"/>
  3.     <xsl:template match="/racine/node1/node2/node3/qte">
  4.         <xsl:value-of select="/racine/node1/node2/node3/montant_ht div /racine/node1/node2/node3/pu"/>
  5.     </xsl:template>
  6. </xsl:stylesheet>


 
Et en résultat j'ai :
 

Code :
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <racine>
  3.     <node1>
  4.         <node2>
  5.             <node3>
  6.                 <qte>2.5</qte>
  7.                 <pu>200</pu>
  8.                 <montant_ht>500</montant_ht>
  9.             </node3>
  10.             <node3>
  11.                 <qte>2.5</qte>
  12.                 <pu>110</pu>
  13.                 <montant_ht>440</montant_ht>
  14.             </node3>
  15.         </node2>
  16.     </node1>
  17. </racine>


 
En gros il me calcule bien pour la première node mais pas pour les suivantes (il reprend la valeur de la premiere).
 
Merci

Reply

Marsh Posté le 18-05-2005 à 11:03:20    

En xsl, il fut toujours réfléchir par rapport à où (à quel endroit) se trouve le parseur quand on l'utilise.
Ici, il vaut mieux faire un template sur /racine/node1/node2/node3
étant donnée que ton calcul concerne tous les node3. Dans ce template, le parseur se trouvera SUR <node3> donc tu accèdes à tes balises filles en faisant
 
./qte
 
Je te conseille d'aller sur www.laltruiste.com qui fournit des explications courtes et précises sur les différents éléments du XSL.


Message édité par Le Mage le 18-05-2005 à 11:04:05

---------------
Cpt Harris : "Plus vite ! Plus vite ! Plus vite !"
Reply

Marsh Posté le 18-05-2005 à 11:41:35    

Merci pour le lien !
 
Par contre j'aimerais récupérer mon flux XML d'entrée mais avec mon champ calculé par la template XSL mais maintenant je ne récupère que mon champ calculé.
 
Je continue a chercher mais si tu as une idée n'hésite pas.
 
Merci pour tout
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed