salut à tous,

J'ai un fichier XML qui sert de base de données et des images à côté du fichier XML, je reçois cela sur un serveur via FTP.

Je sèche grave sur un truc, c comment afficher les images avec XSLT en sachant qu'elles sont à la racine du projet et qu'elle sont nommé de cette façon :

codesociete-codesite-numeroasp-a.jpg
codesociete-codesite-numeroasp-b.jpg

Un coup de pouce pourrait m'éviter bien des heures de travail donc si quelqu'un à une idée cela serait super ... !

Ensuite faudrait que je réussisse à faire miniature + format normal en cliquant sur la miniature... ou a greffer un systeme de galerie.

Rebecca
Modifié par rebecca (14 Apr 2009 - 06:12)
Bonjour!

Comme XML ne peut pas stocker de données binaires, mais simplement leur faire référence, ta feuille de style doit transformer ton fichier XML+les images en quelque chose d'affichable. Si tu veux que ce soit affiché dans un navigateur, produis un fichier HTML qui mixe tes données stockées dans le fichier XML, et les images. Sinon, tu peux t'essayer à XSL-FO pour créer ensuite un document PDF...
Salut,

Tout d'abord, merci de ta réponse. Je vais essayer de mieux m'expliquer...
Là où je sèche, et je sèche grave...

J'ai un fichier xml et des images à côté...(c'est la base de données)
J'ai un fichier xsl pour mettre en forme et faire des requêtes et un fichier php permettant la transformation en un résultat html...jusqu'ici tout va bien...

Ce que je n'arrive pas du tout à faire c'est afficher les images d'un ID en sachant qu'elles
sont nommés comme ceci...

codesociete-codesite-numeroasp-a.jpg
codesociete-codesite-numeroasp-b.jpg

C'est un petit bout de code en xsl mais il me fait cruellement défaut

Si tu as une idée... elle est là bienvenue Smiley biggrin

++

rebecca
Coucou,

Juste une petite précision j'appelle les autres champs dans XSL à l'aide de :

<value-of-select...

++

Rebecca (coffee & coffee)
Salut,

Encore moi, toujours dans le brouillard... J'ai trouvé en parcourant ce site les cours de Gilles et je les ai dévoré lol, la solution que je cherchais est dedans je le sais (c'est un path image qui inclue une variable qui récupère la valeur d'un élément si j ai bien compris) mais je n'y arrive pas...

Après cette nuit infructueuse, je vais tenter un post très détaillé...donc tout d'abord le contexte : un fichier xml, un fichier xslt et un fichier php faisant la transformation.

index.xml

<BIEN>
<TYPE_OFFRE>6</TYPE_OFFRE>
<CODE_SOCIETE>1491</CODE_SOCIETE>
<CODE_SITE>01</CODE_SITE>
<NO_ASP>4050025</NO_ASP>
</BIEN>


index.xsl


<xsl:for-each select="BIENS/BIEN">
   <xsl:if test="(NO_MANDAT ='1005')">
    <tr>
          <td><xsl:value-of select="VILLE_OFFRE"/></td>
          <td><xsl:value-of select="CATEGORIE"/></td>
    </tr>			
   </xsl:if>
</xsl:for-each>


et des images à côtés du fichier xml nommées comme ceci :
1491-01-4050025-a.jpg
1491-01-4050025-b.jpg
soit CODE_SOCIETE-CODE_SITE-NO_ASP-a.jpg

Question pour un champion (je pense à toi Gilles) comment, mais comment on peux appeler ces images ???, je vous assure j'ai vraiment chercher, j'ai écumé le web...

Rebecca (coffee & coffee)
Ah, je crois que j'ai compris. Tu voudrais quelque chose comme un xsl:value-of select="nom de l'image", et qu'à cet endroit l'image soit affichée?

Ce n'est pas possible avec XSLT. Ce langage ne peut traiter que des documents XML. Par conséquent, pour pouvoir afficher l'image après une transformation par XSLT, il faut soit que l'appel à l'image soit fait dans un document XML (par exemple un <image>nom_de_l_image</image>), soit "en dur" dans le code XSLT, en écrivant directement <img src="nom_de_l_image" alt="alternative"/>.

Maintenant, j'imagine qu'il est envisageable, via PHP, de passer des paramètres comme la liste des images d'un répertoire donné, créer un document XML qui contient cette liste, puis à l'aide de la fonction XPath document() appelée dans la feuille de style XSLT, consulter cette liste. Mais c'est un peu compliqué, et je ne garantis pas le résultat!
Salut Gilles!

merci pour ta réponse, super rapide en plus...

Tu me fais peur là... oulalalala, suis terrorisée...

Ta réponse explique les 42 heures que j'ai passée à chercher une fonction inexistante.
Mais je n'arrive pas à croire que XSLT ne puisse pas créer un simple chemin et afficher
une image...
XSLT peux appeler une image extérieur...en dur..
Il suffit donc d'ajouter la variable dans le chemin pour qu'elle mène au photo d'un ID en récupérant cet ID dans le XML. C'est impossible?

En tout cas si tu as une idée en n'importe quel langage, suis intéressée...
(comme du java puisque XSLT peut intégrer des fonctions java)

merci encore

++

Rebecca
Aaah... attends, je crois que j'ai mieux.

Si ton image est toujours de la forme CODE_SOCIETE-CODE_SITE-NO_ASP-a.jpg, ou CODE_SOCIETE-CODE_SITE-NO_ASP-b.jpg, alors tu peux écrire quelque chose comme

<xsl:element name="img">
    <xsl:attribute name="alt">alternative de l'image</xsl:attribute>
    <xsl:attribute name="src"><xsl:value-of select="concat(CODE_SOCIETE, '-', 'CODE_SITE, '-', NO_ASP, '-a.jpg')" /></xsl:attribute>
</xsl:element>


Si l'image se termine toujours par -a, c'est bon. Sinon, si soit elle se termine par a, soit par b, tu peux écrire l'une à la suite de l'autre tes deux images:

<xsl:element name="img">
    <xsl:attribute name="alt"></xsl:attribute>
    <xsl:attribute name="src"><xsl:value-of select="concat(CODE_SOCIETE, '-', 'CODE_SITE, '-', NO_ASP, '-a.jpg')" /></xsl:attribute>
</xsl:element>
<xsl:element name="img">
    <xsl:attribute name="alt"></xsl:attribute>
    <xsl:attribute name="src"><xsl:value-of select="concat(CODE_SOCIETE, '-', 'CODE_SITE, '-', NO_ASP, '-b.jpg')" /></xsl:attribute>
</xsl:element>


Le navigateur, ne trouvant pas l'image avec -a (ou -b), affichera son alternative, qui doit dans ce cas être une chaîne vide, à condition de fournir dans le texte adjacent l'information contenue dans l'image, pour des raisons d'accessibilité.
Gilles

Je ne sais pas quoi dire! Cela m'arrive rarement, mais je ne sais pas quoi dire!
Merci serait un bien faible mot comparé au service que tu viens de me rendre.
Tu as bien compris ça marche du feu de dieu! C'est fou, c'est génial c'est super!!!

C'est super, cela fait longtemps que je viens sur ce forum mais généralement lire les
réponses suffisaient... J'ai toujours su que c'était un forum top mais là j'en revient
pas. Je suis super contente. J'ai eu super peur de reprogrammer tout en php sql.
J'étais au bord du désespoir après vraiment beaucoup d'heures de travail car je
n'avais jamais fait de xml donc apprendre + faire = bcp de temps.

Voila je tenais vraiment à te dire à quel point ton aide et ta générosité était énorme.

Je te souhaite plein de bonnes choses

encore merci mille fois

++

Rebecca (smile & smile)

PS: Pour la petite histoire, sur un autre forum, on m'a dit que j'étais gonflée de demander sans avoir chercher (42h de recherche) et qu'il existait plein de source sur le net... Après avoir redemander poliment à ce modérateur, il m'a avouer simplement qu'il ne savait pas comment faire...