transformation xml avec xslt

transformation xml avec xslt - XML/XSL - Programmation

Marsh Posté le 09-05-2005 à 12:37:53    

bonjour a tous j'ai quelques problemes au niveau de la transformation....
 
voila mon xml du départ :

Code :
  1. <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
  2. <?iview mediapro exportversion="1.0.0.a1" appversion="2.6" ?>
  3. <CatalogType>
  4. <Catalog>exemple</Catalog>
  5. <MediaItemList>
  6. <MediaItem>
  7. <AnnotationFields>
  8. <Filename>05035_002</Filename>
  9. <EventDate>2005:03:17</EventDate>
  10. <City>Noirmoutier en l&apos;Île 85330</City>
  11. <Copyright>©Pascal Xicluna/Min.Agri.Fr.</Copyright>
  12. <Caption>Proue de la maquette d&apos;un fileyeur de 12 mètres. CNB, groupe Bénéteau.</Caption>
  13. </AnnotationFields>
  14. </MediaItem>
  15. <MediaItem>
  16. <AnnotationFields>
  17. <Filename>05035_005</Filename>
  18. <EventDate>2005:03:17</EventDate>
  19. <City>Noirmoutier en l&apos;Île 85330</City>
  20. <Copyright>©Pascal Xicluna/Min.Agri.Fr.</Copyright>
  21. <Caption>Pose de membrures dans une coque en composite verre et résine polyester d&apos;un chalutier de 12 mètres.
  22. Atelier de moulage de Bénéteau Pêche, CNB.
  23. Chantier de construction de bateaux de pêche.</Caption>
  24. </AnnotationFields>
  25. </MediaItem>
  26. </MediaItemList>
  27. </CatalogType>


 
 
 
ainsi que mon xslt :
 

Code :
  1. <?xml version="1.0" encoding="ISO-8859-1"?>
  2. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  3. <xsl:output method='html' version='1.0' encoding='utf-8' indent='no'/>
  4. <xsl:template match="//AnnotationFields" >
  5. <structure>
  6. <image image="{./Filename}_img.png" thumb="{./Filename}_tmb.png" print="false" info1="{./Filename}" info2="{./City}" info3="{./EventDate}" info4="{./Copyright}" info5="{./Caption}" /></structure>
  7. </xsl:template >
  8. </xsl:stylesheet>


 
 
 
et le résultat est :
 
 
 

Code :
  1. exemple
  2. <structure><image image="05035_002_img.png" thumb="05035_002_tmb.png" print="false" info1="05035_002" info2="Noirmoutier en l'IÌ?le 85330" info3="2005:03:17" info4="©Pascal Xicluna/Min.Agri.Fr." info5="Proue de la maquette d'un fileyeur de 12 meÌ?tres. CNB, groupe BeÌ?neÌ?teau."></image></structure>
  3. <structure><image image="05035_005_img.png" thumb="05035_005_tmb.png" print="false" info1="05035_005" info2="Noirmoutier en l'IÌ?le 85330" info3="2005:03:17" info4="©Pascal Xicluna/Min.Agri.Fr." info5="Pose de membrures dans une coque en composite verre et reÌ?sine polyester d'un chalutier de 12 meÌ?tres.&#10;Atelier de moulage de BeÌ?neÌ?teau PeÌ?che, CNB.&#10;Chantier de construction de bateaux de peÌ?che."></image></structure>


 
 
 
 
 
 
mais j'ai quelques soucis
 
 
1) je souhaiterais que la balise <structure>ne se repete pas avant chaque image mais juste en début et fin de toutes les images, je n'ai sait pas ainsi où placer cette balise...
 
2)je desirerais enlever le mot "exemple" situé au départ
 
3)est ce que qq1 saurait d'ou viennent ces caractères invalides du type : CNB.&#10  
 
 
merci d'avance pour vos réponses

Reply

Marsh Posté le 09-05-2005 à 12:37:53   

Reply

Marsh Posté le 09-05-2005 à 15:37:53    

1) Pour l'élément <structure>, sort-le de <xsl:template
2) Marrant qu'il aparaisse celui-là :heink:
3) pour les & machin et les caractère bizarres, c'est un problème utf-8 et iso-8859-1 : regarde dans la PI <?xml des deux fichiers ;) Il faut que tout le monde ait le même encoding, ce sera plus simple. Donc met tout en utf-8

Reply

Marsh Posté le 09-05-2005 à 16:26:10    

merci ça fonctionne bien !!!  
mon xslt es donc le suivant :  
 
 
 

Code :
  1. <?xml version="1.0" encoding="ISO-8859-1"?>
  2. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  3. <xsl:output method='xml' encoding='ISO-8859-1' />
  4. <xsl:template match="/">
  5. <xsl:apply-templates select="CatalogType/MediaItemList"/>
  6. </xsl:template>
  7. <xsl:template match="CatalogType/MediaItemList">
  8. <structure>
  9. <xsl:for-each select="MediaItem/AnnotationFields">
  10. <image image="{./Filename}_img.png" thumb="{./Filename}_tmb.png" print="false" info1="{./Filename}" info2="{./City}" info3="{./EventDate}" info4="{./Copyright}" info5="{./Caption}" />
  11. </xsl:for-each>
  12. </structure>
  13. </xsl:template >
  14. </xsl:stylesheet>


 
 
et au final j'obtiens :  
 
 
 

Code :
  1. <?xml version="1.0" encoding="ISO-8859-1"?><structure><image image="05035_002_img.png" thumb="05035_002_tmb.png" print="false" info1="05035_002" info2="Noirmoutier en l'Île  85330" info3="2005:03:17" info4="©Pascal Xicluna/Min.Agri.Fr." info5="Proue de la maquette d'un fileyeur de 12 mètres. CNB, groupe Bénéteau."/><image image="05035_005_img.png" thumb="05035_005_tmb.png" print="false" info1="05035_005" info2="Noirmoutier en l'Île  85330" info3="2005:03:17" info4="©Pascal Xicluna/Min.Agri.Fr." info5="Pose de membrures dans une coque en composite verre et résine polyester d'un chalutier de 12 mètres. Atelier de moulage de Bénéteau Pêche, CNB. Chantier de construction de bateaux de pêche."/></structure>


 
 
les seuls défauts que je n'arrive pas à modifier sont la ligne de la version du xml qui apparait...est elle genante ou necessaire ?  
et surtout je n'arrive pas à effectuer un retour à la ligne ç chaque fin de balise <image>
si qq1 pourrait m'aider

Reply

Marsh Posté le 10-05-2005 à 08:59:27    

Pour la ligne de version, c'est obligatoire : c'est pour renseigner le parser de la version utilisée, et surtout de l'encodage. Sinon il va passer tout seul en utf-8, et tes caractères accentués vont tirer la tronche :)

Reply

Marsh Posté le 11-05-2005 à 14:58:05    

oui merci pour ta réponse mais j'ai toujours des problemes de polices ! comme je l'explique sur l'autre sujet !
merci pour vos reponses

Reply

Sujets relatifs:

Leave a Replay

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