Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1058 connectés 

  FORUM HardWare.fr
  Programmation
  XML/XSL

  [XML/XSLT] transformation mineure

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[XML/XSLT] transformation mineure

n°1087736
dom01
Posté le 18-05-2005 à 13:12:34  profilanswer
 

Bonjour à tous,
 
 
 
J'ai une feuille de style qui fonctionne bien (elle me fait la transformation correctement).
 
Cependant, je ne saisi pas, meme apres mes diverses recherches, comment on fait pour renvoyer le flux original AVEC la transformation car pour l'instant je ne récupère que la transformation :(.
 
Mon fichier XSL :

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"> 
  4.         <xsl:value-of select="montant_ht div pu"/> 
  5.     </xsl:template
  6. </xsl:stylesheet>


 
Mon 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>


Message édité par dom01 le 18-05-2005 à 13:13:57
mood
Publicité
Posté le 18-05-2005 à 13:12:34  profilanswer
 

n°1090393
avander
Posté le 20-05-2005 à 10:51:28  profilanswer
 

Je suppose que tu voudrais avoir le résultat du calcul dans la balise qte...  
 


<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml"/>    
 
  <xsl:template match="@*|node()"><!-- recopier tous les elements et attribs -->
    <xsl:copy>
      <xsl:apply-templates/>
    </xsl:copy>
  </xsl:template>
 
  <xsl:template match="qte"><!-- traitement particulier pour qte -->
    <xsl:copy>
      <xsl:value-of select="../montant_ht div ../pu"/>    
    </xsl:copy>
  </xsl:template>    
     
</xsl:stylesheet>  


 

n°1101482
dom01
Posté le 30-05-2005 à 11:59:02  profilanswer
 

Merci bcp !!
 
C'est tout à fait ce que je souhaitais faire :)

n°1120925
dom01
Posté le 15-06-2005 à 15:35:35  profilanswer
 

Un petit probleme tout de meme.
 
Une de mes nodes contient un attribut et celui-ci n'est pas copié :(
 
Y'a t-il autre chose à faire ?
 
Merci

n°1121588
avander
Posté le 16-06-2005 à 10:09:00  profilanswer
 

plus précisément?  

n°1122077
dom01
Posté le 16-06-2005 à 15:23:17  profilanswer
 

Euh oubli cette histoire de copie d'attribut.
 
Par contre j'ai une autre question concernant les templates.
 
Imaginons j'ai un XML d'entrée avec un tag <qte>2</qte>
 
Dans mon XSL, j'ai un premier template qui me fait un premier calcul sur le tag <qte>.
Imaginons <qte>2</qte> devienne <qte>8</qte>.
 
maintenant j'ai un 2eme template qui a besoin du <qte> calculé précédement dans le premier template.
 
Le probleme c'est que dans mon 2eme template il prends toujours la valeur du XML et non celle calculée dans mon 1er template.
 
Une idée ?


Message édité par dom01 le 16-06-2005 à 15:25:14
n°1122109
FlorentG
Unité de Masse
Posté le 16-06-2005 à 15:34:13  profilanswer
 

Logique... Ca s'appelle une transformation en chaîne, impossible à faire juste en XSLT. Il faut un langage derrière style PHP ou machin bidule qui te permettent de faire les deux transformations de suite...

n°1122125
dom01
Posté le 16-06-2005 à 15:41:24  profilanswer
 

humm, je doute que ce soit l'unique facon de faire ce genre de manip.
 
D'apres ce que je sais on doit pouvoir appliquer une feuille de style sur une feuille de style. Ce qui dans mon cas devrait marcher. Mais je pense qu'il y a surement bcp plus simple.

n°1122134
FlorentG
Unité de Masse
Posté le 16-06-2005 à 15:46:23  profilanswer
 

Non, on ne peut pas appliquer deux feuilles différentes [:spamafote] Déjà cherché...

n°1122146
dom01
Posté le 16-06-2005 à 15:52:39  profilanswer
 

http://groups.google.fr/group/comp [...] 17807a1496
 

Citation :


the standard XSLT 1.0 way to do two transforms is just simply to use two  
xslt stylesheets and call one then the other. Even in a browser setting  
this is possible with a bit of javascript.  

mood
Publicité
Posté le 16-06-2005 à 15:52:39  profilanswer
 

n°1122149
FlorentG
Unité de Masse
Posté le 16-06-2005 à 15:53:51  profilanswer
 

Ben ouais, et ? Regarde la fin :

Citation :

Even in a browser setting this is possible with a bit of javascript.


C'est ce que j'ai dis avant :o Il faut un truc par derrière (JS, PHP, etc.), en XSLT seul c'est pas possible :o


Message édité par FlorentG le 16-06-2005 à 15:54:00
n°1122232
avander
Posté le 16-06-2005 à 16:47:17  profilanswer
 

FlorentG a écrit :


C'est ce que j'ai dis avant :o Il faut un truc par derrière (JS, PHP, etc.), en XSLT seul c'est pas possible :o


 
Je ne peut que confirmer... en XSLT 1.0 tu dois enfiler les transformations, donc xml + xslt1 = temp1, puis temp1 + xslt2 = result et ce qu'importe la 'colle' utilisée.
 
Note, je doute même que se soit prévu dans XSLT 2.0.


Message édité par avander le 16-06-2005 à 16:48:32
n°1122244
FlorentG
Unité de Masse
Posté le 16-06-2005 à 16:54:52  profilanswer
 

Si, en 2.0 on peut faire à la chaîne :)

n°1122381
dom01
Posté le 16-06-2005 à 18:25:25  profilanswer
 

euh faut pas s'enerver, je confirmais aussi tes propos :)

n°1122387
FlorentG
Unité de Masse
Posté le 16-06-2005 à 18:38:29  profilanswer
 

Hopla :jap: :)

n°1122788
avander
Posté le 17-06-2005 à 10:03:53  profilanswer
 

FlorentG a écrit :

Si, en 2.0 on peut faire à la chaîne :)


 
Intéressant ça ( j'ai pas encore eu le temps de creuser la 2.0 sérieusement), ce qui est bien aussi c'est qu'on peut aussi générer plusieurs fichiers en sortie!
 
[mode détournement de topic on]
Un moteur XSLT 2.0 dispo/recommandé?
[mode détournement de topic off]


Message édité par avander le 17-06-2005 à 10:04:31
n°1122958
FlorentG
Unité de Masse
Posté le 17-06-2005 à 11:34:50  profilanswer
 

Le 2.0 est encore à l'état de "Working Draft" (brouillon de travail), donc pas encore sorti :(

n°1123028
avander
Posté le 17-06-2005 à 12:29:22  profilanswer
 

Apparemment XmlSpy supporterait déjà XSLT 2.0 ( d'après leur site), j'avais testé bien avant et abandonné pour cause d'usine à gaz... préfère toujours mon éditeur de code et une transformation en ligne de commande...


Message édité par avander le 17-06-2005 à 12:30:02

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  XML/XSL

  [XML/XSLT] transformation mineure

 

Sujets relatifs
[XML/XSL] Template, besoin d'aide ...Java et le XML
Flash + XML[XML] la différence entre DSO et DOM
Interet du XMLManipulation de fichier XML complexe et DataGrid
transformation xml avec xsltJava et XML
Transformation de chaînes. 
Plus de sujets relatifs à : [XML/XSLT] transformation mineure


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR