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

  FORUM HardWare.fr
  Programmation
  XML/XSL

  [XML-XSL] [Access] Création d'un album photo

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[XML-XSL] [Access] Création d'un album photo

n°1275652
Manu la Sc​ience
...la science ... pas toujours
Posté le 01-01-2006 à 22:26:49  profilanswer
 

Bonjour à tous,
 
Je suis en train d'essayer de construire un album photo que je souhaite visualisable sur beaucoup de navigateurs Web, n'ayant pas besoin d'un logiciel spécifique pour sa consultation.
 
J'ai donc pensé à le faire en XML où je pourrais stocker les données sous la forme suivante :

Code :
  1. <album>
  2. <personne>
  3. <nom>
  4. <image>
  5. <commentaire></commentaire>
  6. <fichier></ficher>
  7. </image>
  8. <image>
  9. ....
  10. </image>
  11. </personne>
  12. <personne>
  13. ...
  14. </personne>
  15. </album>


 
Ce fichier XML est en fait une organisation et un commentaire des images et serait dans le dossier racine de l'album. Les images sont bien sûr dans des dossiers enfants.
 
J'ai pensé à ce système car il me permettrait (j'espère au bout du compte) d'avoir un album assez dynamique sur des clients (je voudrai mettre cet album sur CD).
 
Je ne voudrai pas réinventer l'eau tiède et je ne sais pas si un tel système d'album existe (sans installation de quelque logiciel que ce soit...).
 
Pour générer le fichier XML, je vais faire appel à Access pour construire l'album. Cette utilisation d'Access permettra à une personne ne connaissant pas XML de modifier l'album...
 
Je ne suis pas arrivé à constituer une base de donnée Access pour obtenir le type de fichier XML que je souhaite.
 
Peut-on réaliser une base de données pour avoir la structure de fichier que je souhaite avoir ?
 
J'ai essayé de faire un bout XSL pour la visualisation de mon album, et je vais être limité par :
- d'une part la structure de mon fichier (Access donnera/donnera pas cette structure ?)
- le passage d'un paramètre du fichier XML vers lui même...
 
Je souhaite en effet pouvoir choisir une personne dans un menu et afficher dans un cadre, une frame ou autre chose les images concernant cette personne...
 
Je pense que ce projet peut être réalisable et n'est pas trop ambitieux au vu des technologies utilisées...
 
Je vous remercie de votre aide.


---------------
Proverbe chinois: il vaut mieux apprendre à pêcher à un mendiant que de lui donner du poisson...
mood
Publicité
Posté le 01-01-2006 à 22:26:49  profilanswer
 

n°1275839
Manu la Sc​ience
...la science ... pas toujours
Posté le 02-01-2006 à 13:40:27  profilanswer
 

J'ai essayé de faire une base de données avec une structure cohérente et d'exporter cette base de données... Le problème est que je ne peux exporter qu'une table à la fois... La structure ne correspond donc pas...
 
J'ai essayé de faire du reverse ingeneering en prenant mon fichier XML décrit plus haut et de l'importer. J'ai comme résultat deux tables sans relations ayant la structure suivante :
 
table personne :
1 seul champ (nom)
 
table image :
2 champs (description, fichier)
 
Faut-il que je me fasse une base de données cohérente avec l'architecture 2 tables et que je fasse un système en VBA qui construise le fichier XML d'export des données où existe t'il un moyen que je n'ai pas vu et qui pourrai me permettre d'obtenir la structure exposée plus haut.
 
Enfin, dernière question... Est-ce que la struture que je souhaite avoir est la meilleure structure pour ce que je veux faire ? Je pense que oui, mais ce n'est qu'un point de vue et je peux avoir une vision étroite de mon problème...
 
Merci de vos réponses  :jap:


---------------
Proverbe chinois: il vaut mieux apprendre à pêcher à un mendiant que de lui donner du poisson...
n°1276813
Manu la Sc​ience
...la science ... pas toujours
Posté le 04-01-2006 à 13:23:30  profilanswer
 

Je me débrouille autrement...
 
Je fais une requête sur mes deux tables et je crée un fichier type text avec une extension XML.
 

Code :
  1. Set fs = CreateObject("Scripting.FileSystemObject" )
  2. Set a = fs.CreateTextFile(".\fichiertest.xml", True)


 
Puis j'ajoute des lignes de texte à mon fichier XML en parcourant mon recordset et en faisant quelques traitements.
 

Code :
  1. a.WriteLine ("ligne de texte rajoutée" )


 
C'est peut être pas très joli et un peu lent (je verrai quand j'aurai beaucoup d'enregistrements), mais ca marche....


---------------
Proverbe chinois: il vaut mieux apprendre à pêcher à un mendiant que de lui donner du poisson...
n°1277066
Manu la Sc​ience
...la science ... pas toujours
Posté le 04-01-2006 à 18:09:49  profilanswer
 

Je continue d'avancer dans mon projet et dans la découverte de problèmes...
 
Je suis en train de construire ma feuille XSL couplée à mon fichier XML (album).
 
Je voudrais pouvoir créer un menu sur le côté correspondant à une visualisation du haut de mon arborescence (personnes de mon album) et lorsqu'on clique dessus, je fais apparaître la partie concernant cette personne dans une partie centrale.
 
Je voudrai utiliser le même fichier de données (XML). Mais j'ai un problème pour passer le paramètre "personne" du menu à la zone centrale.
 
Je pensais qu'avec un with-param, cela irai mais je pense être sur une fausse piste...
 
Avez-vous des suggestions ?
 
Est-il possible de passer un paramètre xsl dans una balise <a href...> ?
 
Il vaut mieux que j'utilise des frames ou des div ?
 
Je vous remercie de vos conseils.


---------------
Proverbe chinois: il vaut mieux apprendre à pêcher à un mendiant que de lui donner du poisson...
n°1277211
Manu la Sc​ience
...la science ... pas toujours
Posté le 04-01-2006 à 21:16:57  profilanswer
 

Voilà mon fichier XML avec quelques données dedans :
 
album.xml

Code :
  1. <?xml version="1.0" encoding="iso-8859-1"?>
  2. <?xml-stylesheet type="text/xsl" href="menu.xsl" ?>
  3. <album>
  4. <personne>
  5. <nom>personne1</nom>
  6. <image>
  7. <description>première image</description>
  8. <fichier>1.jpg</fichier>
  9. </image>
  10. <image>
  11. <description>image 2</description>
  12. <fichier>2.jpg</fichier>
  13. </image>
  14. <image>
  15. <description>image 3</description>
  16. <fichier>3.jpg</fichier>
  17. </image>
  18. </personne>
  19. <personne>
  20. <nom>personne2</nom>
  21. <image>
  22. <description>image floue</description>
  23. <fichier>image2.jpg</fichier>
  24. </image>
  25. </personne>
  26. </album>


 
et voici mon fichier XSL
 
menu.xsl

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" media-type="text/html" encoding="ISO-8859-1" />
  4. <xsl:template match="/">
  5. <html>
  6. <head>
  7. </head>
  8. <body>
  9. <table border="1" align="left">
  10.   <xsl:call-template name="menu">
  11.   </xsl:call-template>
  12. </table>
  13. <div align="center" name="div">
  14.   <xsl:call-template name="div">
  15.   </xsl:call-template>
  16. </div>
  17. </body>
  18. </html>
  19. </xsl:template>
  20. <xsl:template name="menu">
  21. <xsl:for-each select="album/personne">
  22. <tr><td><a><xsl:attribute name="href"><xsl:value-of select="nom" /></xsl:attribute><xsl:value-of select="nom" /></a></td></tr> //paramètre à envoyer
  23. </xsl:for-each>
  24. </xsl:template>
  25. <xsl:template name="div">
  26. <table>
  27. <xsl:for-each select="album/personne">
  28. <xsl:if test="nom = parametre à récupérer">
  29. <xsl:for-each select="image">
  30. <tr><td>
  31. <xsl:value-of select="description" />
  32. </td></tr>
  33. <tr><td><img><xsl:attribute name="src"><xsl:value-of select="fichier" /></xsl:attribute></img></td></tr>
  34. </xsl:for-each>
  35. </xsl:if>
  36. </xsl:for-each>
  37. </table>
  38. </xsl:template>
  39. </xsl:stylesheet>


 
Ce que j'essaie de faire, c'est de mettre un passage de paramètre du menu à la div.


Message édité par Manu la Science le 04-01-2006 à 21:18:15

---------------
Proverbe chinois: il vaut mieux apprendre à pêcher à un mendiant que de lui donner du poisson...
n°1277735
Manu la Sc​ience
...la science ... pas toujours
Posté le 05-01-2006 à 18:17:50  profilanswer
 

J'avance un peu dans mon projet mais je rencontre des problèmes...
 
J'ai trouvé un truc sur http://css.alsacreations.com/Tutor [...] le-fenetre et j'essaie de l'adapter à mon code XML.
 
J'ai un soucis pour le code suivant :
 

Code :
  1. <table border="1" align="left">
  2.   <xsl:call-template name="menu">
  3.     <xsl:with-param name="nb_id" select="1" /> 
  4.   </xsl:call-template>
  5. </table>
  6. <xsl:template name="menu">
  7. <xsl:param name="nb_id" />
  8. <xsl:choose>
  9. <xsl:when test="$nb_id &lt;= 100">
  10. <tr><td><a class="pop"><xsl:attribute name="href">#pop<xsl:value-of select="$nb_id" /></xsl:attribute><xsl:value-of select="nom" /></a></td></tr>
  11. <xsl:call-template name="menu">
  12. <xsl:with-param name="nb_id" select="$nb_id + 1" />
  13. </xsl:call-template>
  14.   </xsl:when>
  15.   <xsl:otherwise>
  16.    <xsl:call-template name="interruption" />
  17.   </xsl:otherwise>
  18. </xsl:choose>
  19. </xsl:template>


 
Mon problème est dans la construction de la balise <a href=...>. Le nom de la personne n'apparaît pas. C'est un peu normal puisque je ne réussie pas à mettre un code me permettant de sélectionner une personne, puis une autre en même temps que l'incrémentation de "nb_id".
De plus, j'aimerai remplacer "100" par le nombre de balise personne de mon fichier XML, mais en vain.
 
Si quelqu'un de plus doué que moi peut m'aider, car là je sèche un peu... Merci


---------------
Proverbe chinois: il vaut mieux apprendre à pêcher à un mendiant que de lui donner du poisson...
n°1277766
Arjuna
Aircraft Ident.: F-MBSD
Posté le 05-01-2006 à 19:45:45  profilanswer
 

Salut.
 
Je te conseille plutôt de faire générer du HTML à Excel, car tous les navigateurs ne savent pas transformer des feuilles XML à partir d'une feuille XML !
 
Heureusement, tout n'est pas à mettre à la poubelle : en VBA, tu peux instancier DOM et transformer le document et récupérer l'ouput en HTML, donc tu peux garder ta structure XML/XSL, mais je te déconseille de diffuser ce support.

n°1277779
Manu la Sc​ience
...la science ... pas toujours
Posté le 05-01-2006 à 20:15:58  profilanswer
 

Je te remercie Arjuna,
 
Mon petit programme est sous Access 2002 et c'est lui qui fait le fichier XML.
 
Pour réaliser le html, il faut que je fasse le fichier XSL,non ? Et après j'utilise VBA pour le parser via le DOM (dont j'ignore encore totalement le fonction dans VBA, un autre problème pour moi en vue  :pt1cable: ...) ?
 
Sinon, concernant le XSL, est-ce que quelqu'un sait comment mettre un xsl:for-each dans un xls:when ou faire un équivalent ?
 
Merci de votre aide  :jap:


---------------
Proverbe chinois: il vaut mieux apprendre à pêcher à un mendiant que de lui donner du poisson...
n°1278333
Manu la Sc​ience
...la science ... pas toujours
Posté le 06-01-2006 à 18:03:28  profilanswer
 

Je suis arrivé à faire à peu près ce que je voulais avec mon problème de XSL...
 
Je vous poste mon code dès que je l'aurai un peu arrangé.


---------------
Proverbe chinois: il vaut mieux apprendre à pêcher à un mendiant que de lui donner du poisson...
n°1282181
Manu la Sc​ience
...la science ... pas toujours
Posté le 12-01-2006 à 15:15:36  profilanswer
 

Voici mon code de génération de mon XML :
 

Code :
  1. Sub construction_xml()
  2. Dim SQL_ligne As String
  3. Dim var As String
  4. Dim premiere_personne As String
  5. Dim personne_en_cours As String
  6. Set fs = CreateObject("Scripting.FileSystemObject" )
  7. Set a = fs.CreateTextFile(".\fichiertest.xml", True)
  8. Dim cnnLocal As New ADODB.Connection
  9. Dim rstCurr As New ADODB.Recordset
  10. Set cnnLocal = CurrentProject.Connection
  11. rstCurr.Open "SELECT personne.nom, personne.prenom, image.id_image, image.description, image.fichier FROM personne INNER JOIN [image] ON personne.id_personne = image.id_personne ORDER BY personne.nom, personne.prenom;", cnnLocal, adOpenStatic, adLockPessimistic
  12. premiere_personne = rstCurr("nom" )
  13. a.writeLine ("<?xml version='1.0' encoding='iso-8859-1'?>" )
  14. a.writeLine ("<?xml-stylesheet type='text/xsl' href='menu.xsl'?>" )
  15. a.writeLine ("<album>" )
  16. a.writeLine ("<personne>" )
  17. a.writeLine ("<nom>" & rstCurr("nom" ) & "</nom>" )
  18. Do While Not rstCurr.EOF
  19.     personne_en_cours = rstCurr("nom" )
  20.     If personne_en_cours <> premiere_personne Then
  21.         a.writeLine ("</personne>" )
  22.         a.writeLine ("<personne>" )
  23.         a.writeLine ("<nom>" & rstCurr("nom" ) & "</nom>" )
  24.     End If
  25.     a.writeLine ("<image>" )
  26.     a.writeLine ("<description>" & rstCurr("description" ) & "</description>" )
  27.     a.writeLine ("<fichier>" & rstCurr("fichier" ) & "</fichier>" )
  28.     a.writeLine ("</image>" )
  29.     premiere_personne = rstCurr("nom" )
  30.     rstCurr.MoveNext
  31. Loop
  32. a.writeLine ("</personne>" )
  33. a.writeLine ("</album>" )
  34. a.Close
  35. End Sub


 
Si ca peut servir à d'autres...


---------------
Proverbe chinois: il vaut mieux apprendre à pêcher à un mendiant que de lui donner du poisson...

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

  [XML-XSL] [Access] Création d'un album photo

 

Sujets relatifs
afficher une photo...Création de site Web
Création d'un gros site !Librairie GD, création de vignettes
Création de tableaux complexes en LaTeX...sur plusieurs pages!Problème d'écriture XML
[C#] Xml Serialisation[SQL / ACCESS] question un peu tordu sur une requete.
Inserer une heure - Définir le format de colonne à la création de tablCreation arbre avec liste
Plus de sujets relatifs à : [XML-XSL] [Access] Création d'un album photo


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