Comment gérer des champs photos exportés de BDD avec XSLT ?

Comment gérer des champs photos exportés de BDD avec XSLT ? - XML/XSL - Programmation

Marsh Posté le 11-04-2005 à 13:53:11    

:hello: Merci d'avance si quelqu'un peut m'aider :
 
Quand je récupère en format xml les champs d'un fichier articles d'un logiciel de gestion j'obtiens par exemple :
 
<ARTICLE>
 <Record_0>
  <Code>BLABLA1</Code>
  <Designation>BLABLA</Designation>
  <Photo>/images/photo1.jpg</Photo>
 </Record_0>
 <Record_1>
  <Code>BLABLA2</Code>
  <Designation>BLABLAXXX</Designation>
  <Photo>/images/photo2.jpg</Photo>
 </Record_1>
        ....
</ARTICLE>
 
pour éditer mon champ </photo> par XSLT j'aurais besoin qu'il soit au format : <IMAGE source="images/photo1.jpg"/> ou utiliser une formule qui lise le contenu du champ <Photo> pour l'interpréter comme image.
 
comment donc obtenir cette transformation si possible sans devoir programmer autrement qu'avec XSLT ou au pire avec JavaScript.
 
D'avance merci de l'aide que vous apporterez à un pauvre néophite qui se fait sa formation au jour le jour, "sur le tas" ...
 
Bien cordialement à vous

Reply

Marsh Posté le 11-04-2005 à 13:53:11   

Reply

Marsh Posté le 11-04-2005 à 14:00:05    

J'viens de faire ça ce matin [:dawa] :

<img src="{Photo}">

Reply

Marsh Posté le 11-04-2005 à 14:00:14    

Dans une boucle for-each, bien-sûr ;)

Reply

Marsh Posté le 11-04-2005 à 15:19:47    

merci pour la réponse rapide.
je viens de me triturer un peu les méninges pour essayer de voir comment intégrer <img src="{Photo}"> par rapport <IMAGE source="images/photo1.jpg"/> (ce qu' attend mon .xsl actuel pour qu'il marche).
ou est ce que tu as voulu m'expliquer que c'est une formule à utiliser en javaScript ? auquel cas,  je connais pas !
peux tu me donner de plus amples explications ?  
sympa!...merci.

Reply

Marsh Posté le 11-04-2005 à 15:38:46    

C'est de l'XSLT, hein ;) En devinant ta structure, je ferais :

<xsl:for-each select="ARTICLE/Record">
  <IMAGE source="{Photo}" />
</xsl:for-each>


Et il te génèrera :

<IMAGE source="images/photo1.jpg" />

Reply

Marsh Posté le 11-04-2005 à 21:41:19    

J'ai pu essayer ce soir mais je n'ai pas réussi :
En fait mon .xsl ne bloque plus mais je n'affiche pas les images. Pourtant le chemin est bon. et j'ai testé en réduisant au maxi la mise en page tables, bordures etc...
Je joins ci-après mon schéma de XSL correspondant à l'exemple XML donné précédemment :
où est donc l'erreur ? :
"
<?xml version="1.0"?>  
<xsl:stylesheet version="1.0"  
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >  
<xsl:template match="/">
<html>
<head>
</head>
<body>
<xsl:for-each select="ARTICLE/Record_0">
<IMAGE source="{Photo}" />  
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
 
"
de plus si je vise seulement :
<xsl:for-each select="ARTICLE/Record"> alors j'ai plus d'affichage du tout ???
 
merci pour toute idée ...

Reply

Marsh Posté le 12-04-2005 à 10:11:16    

.......................... Le mec....
[:enzan]
[:delarue]
 
Il écrit :

<IMAGE source="{Photo}" />


 
Alors moi je pensais qu'il convertissait vers un autre format XML propriétaire bien à lui, avec une balise IMAGE (notez les majuscules :heink:), avec un bel attribut source.  
 
Mais nan.
 
Il veut bien afficher de l'XHTML.
 
Et il invente une balise IMAGE (notez les majuscules toujours), avec un attribut source.
 
Apparemment, il a jamais fait d'HTML de sa vie.
 
Alors il s'invente un élément IMAGE (en majuscules), avec un attribut source, en pensant que ça fonctionnera...
 
 
Bon aller je suis sympa, je met le code comme je l'avais mis au tout début, avec corrections, et tout et tout :
 

<?xml version="1.0" encoding="utf-8" ?>  
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml"
    doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
    doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"/>
  <xsl:template match="/">
    <html xmlns="http://www.w3.org/1999/xhtml">
      <head>
        <title>Test images</title>
        <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
      </head>
      <body>
        <xsl:for-each select="ARTICLE/Record_0">
          <img src="{Photo}" alt="" />  
        </xsl:for-each>
      </body>
    </html>
  </xsl:template>
</xsl:transform >

Reply

Marsh Posté le 12-04-2005 à 14:34:29    

Bien vu !  merci  
Bon Ok, je reconnais, j'ai jusqu'ici utilisé la balise <IMAGE source="xxxx/xxxx.jpg"/> comme conseillé dans mon livre de leçon mais j'apprends avec bonheur le {}...  
Bon OK ! "pourquoi faire simple quand on peut faire compliqué !!!" mais on ne va pas aller devant Delarue pour çà ! ou alors, avec des lunettes ou mieux, avec ... un masque !
 
NB. quand tu dis :"Alors moi je pensais qu'il convertissait vers un autre format XML propriétaire bien à lui " çà m'intéresse parceque ce qui m'embête quand j'exporte mon fichier articles c'est que j'obtiens (voir là haut) chaque fiche séparée par un parasite <Record_0>, <Record_1> ...etc.
alors que mes articles sont déjà numérotés par leur code !
(on ne peut pas intervenir sur mode d'exportation du logiciel de gestion)
vois-tu un moyen pour restructurer facilement mon fichier en un autre fichier XML mieux formé ?  
En tout cas :
encore merci!
 
 
 
 
 
 
 
 

Reply

Marsh Posté le 14-04-2005 à 10:04:16    

Le {photo} comme tu dis est simplement la notation raccourcie d'un <xsl:value-of select="photo" />

Reply

Marsh Posté le 14-04-2005 à 10:37:16    

Et sachant que le value-of peut pas être inclus dans le truc comme ça, sinon ça pose des problèmes de validation etc etc

Reply

Marsh Posté le 14-04-2005 à 10:37:16   

Reply

Marsh Posté le 17-04-2005 à 14:15:22    

On peut utiliser le xsl:value-of à condition de générer la balise image à l'aide de xsl:element et xsl:attribut, mais je te l'accorde dans ce cas ça n'apporte pas grand chose et c'est plus long à écrire, faut juste savoir que ça existe...

Reply

Sujets relatifs:

Leave a Replay

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