Problème triage XML/XSL

Résolu/Fermé
onlyge Messages postés 22 Date d'inscription mardi 26 septembre 2006 Statut Membre Dernière intervention 7 avril 2010 - 2 févr. 2009 à 17:55
onlyge Messages postés 22 Date d'inscription mardi 26 septembre 2006 Statut Membre Dernière intervention 7 avril 2010 - 6 févr. 2009 à 21:55
Bonjour,
Je dois trier des données pour afficher une liste selon un ordre alphabétique. J'ai mon fichier asp qui va chercher mon XML et affiche les infos. Ça je n'ai aucun problème. Là où je bloque est au moment où intégrer une feuille XSL pour trier l'affichage de ma liste selon un ordre alphabétique croissant. Je rappelle que mon XML et mon XSL sont tous 2 dans un fichier indépendant et j'ai un fichier asp qui load mon XML.

Bref, je ne sais pas trop comment intégrer mon XSL à mon XML tout en utilisant du ASP (pas le choix de ce côté, les fichiers doivent être tous externes). J'ai fait ceci dans mon XSL (je débute pour ce qui est du XSL, peut-être suis-je dans le champ!) :

<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output method="html" encoding="iso-8859-1"/>
<xsl:template match="/">

<xsl:for-each select="videos/video" order-by="+titre">

</xsl:for-each>
</xsl:template>
</xsl:stylesheet>

J'ai intégrer mon XSL dans mon XML avec :
<?xml-stylesheet href="triage.xsl" type="text/xsl"?>

Je galère maintenant pour trouver ce qui cloche. La plupart des exemples que je trouve sur le net utilise le XML et le XSL directement dans la page html, chose que je ne peux pas faire. Je fais afficher mes données en ASP avec :
Set objXML = Server.CreateObject("Microsoft.XMLDOM") et tout la patante qui va avec.

Pouvez-vous m'éclairer un peu sur ce qui manque?

un gros merci à l'avance ;)!
A voir également:

6 réponses

Essaye avec cela.

<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output method="html" encoding="iso-8859-1"/>
<xsl:template match="/">

<xsl:for-each select="videos/video" order-by="+titre">

<xsl:value-of select="titre"/>

</xsl:for-each>
</xsl:template>
</xsl:stylesheet>

En fait ton code faisait bien le tri avec le for-each mais il te manuait le value-of pour obtnir l'affichage

Bonne chance
0
onlyge Messages postés 22 Date d'inscription mardi 26 septembre 2006 Statut Membre Dernière intervention 7 avril 2010
3 févr. 2009 à 14:42
j'ai ajouté le bout qui manquait mais ça n'a rien changé. La structure de mon XML ressemble à :
<videos>
<video>
<titre>Test pour vidéo</titre>
<desc>desc de la vidéo</desc>
<poids>12 mo</poids>
<temps>12 minutes</temps>
<nomvignette>vignette_0101</nomvignette>
<txtalternatifvignette>texte alternatif de la vignette</txtalternatifvignette>
<nomvideo>01x01</nomvideo>
</video>
<video>
<titre>Affichage d'un titre bidon</titre>
<desc>desc de la vidéo</desc>
<poids>12 mo</poids>
<temps>12 minutes</temps>
<nomvignette>vignette_0102</nomvignette>
<txtalternatifvignette>texte alternatif de la vignette</txtalternatifvignette>
<nomvideo>01x02</nomvideo>
</video>
</videos>

On dirait bien que la feuille XSL n'est pas "vu". Pourtant, elle est bien ajouté dans mon fichier xml avec :
<?xml version="1.0" encoding="iso-8859-1"?>
<?xml-stylesheet href="triage.xsl" type="text/xsl"?>
<videos>
...

Avez-vous une idée du problème...?
0
Bonjour. En fait je pense que ton probl`me viens du fait que le XSL fait seulement une trnaformation du code en HTML. Ici il te manque donc tes balise html. Essaye sa :

Entete XML :

<?xml version='1.0' encoding="iso-8859-1"?>
<?xml-stylesheet type="text/xsl" href="triage.xsl"?>

triage.xsl :

<?xml version='1.0' encoding="iso-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

<xsl:template match="/">

<html>
<body>
<xsl:for-each select="videos/video" order-by="+titre">

<xsl:value-of select="titre"/>

</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
0
onlyge Messages postés 22 Date d'inscription mardi 26 septembre 2006 Statut Membre Dernière intervention 7 avril 2010
3 févr. 2009 à 15:43
rebonjour, merci de ton aide.

Ça ne fonctionne toujours pas par contre... coté asp, voici comme j'écris mes données tirées du XML, peut-être ça pourras t'aider à trouver le problème :

Response.Write("<div>")&VbCrLf
Response.Write("<h3>" & titre &"</h3>")&VbCrLf
Response.Write("<a href=""video.asp?idCat=metiers""><img src=""images/" & nomvignette & ".jpg"" alt=" & txtalternatif & " /></a>")&VbCrLf
Response.Write("<p>Durée : " & temps &"</p>")&VbCrLf
Response.Write("<p>Poids : " & poids &"</p>")&VbCrLf
Response.Write("</div>")&VbCrLf

C'est la première fois que j'utilise le XSL alors je tourne en rond sans trop savoir ce que je ne fais pas de correct héhé ;)!!!
0
Salut, Je ne m'y connais pas en ASP
Mais avec un xsl:sort au lieur du order by, j'obtiens un affichage.
Voici les fichiers que j'ai tester

Le XML :

<?xml version='1.0' encoding="iso-8859-1"?>
<?xml-stylesheet type="text/xsl" href="triage.xsl"?>
<videos>
<video>
<titre>Test pour vidéo</titre>
<desc>desc de la vidéo</desc>
<poids>12 mo</poids>
<temps>12 minutes</temps>
<nomvignette>vignette_0101</nomvignette>
<txtalternatifvignette>texte alternatif de la vignette</txtalternatifvignette>
<nomvideo>01x01</nomvideo>
</video>
<video>
<titre>Affichage d'un titre bidon</titre>
<desc>desc de la vidéo</desc>
<poids>12 mo</poids>
<temps>12 minutes</temps>
<nomvignette>vignette_0102</nomvignette>
<txtalternatifvignette>texte alternatif de la vignette</txtalternatifvignette>
<nomvideo>01x02</nomvideo>
</video>
</videos>

triage.xsl

<?xml version='1.0' encoding="iso-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

<xsl:template match="/">

<html>
<body>
<table border="1">
<xsl:for-each select="videos/video">
<xsl:sort select="titre"/>
<tr>
<td>
<xsl:value-of select="titre"/>
</td>
</tr>
</xsl:for-each>

</table>

</body>
</html>
</xsl:template>
</xsl:stylesheet>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
onlyge Messages postés 22 Date d'inscription mardi 26 septembre 2006 Statut Membre Dernière intervention 7 avril 2010
3 févr. 2009 à 17:38
je vois le triage quand je regarde le xml directement. Celui-ci n'est pas fait par contre quand les données sont affichées par ma page asp. Comment font les personnes qui utilisent un XML et un XSL pour afficher le tout dans une page html normal (asp dans mon cas)?

merci de ton aide Jeremy, on voit que ça fonctionne avec le xml direct. Il me reste à trouver la solution pour l'appliquer avec la programmation asp.

J'ai bien essayé de mettre les <xsl:for-each select="videos/video"> dans des response.write de ma page asp mais ça me fonctionne pas. J'imagine ce n'est pas la solution ou je l'applique mal?
0
onlyge Messages postés 22 Date d'inscription mardi 26 septembre 2006 Statut Membre Dernière intervention 7 avril 2010
6 févr. 2009 à 21:55
j'ai trouvé la soluce. Pour votre info si d'autres bloquent à cette étape, il faut afficher via sa page asp les données xsl tiré du xml avec la ligne : Response.Write(objXML.transformNode(objXSL)).

Ne pas oublier de se créer son obj XSL (comme pour le XML):
Set objXSL = Server.CreateObject("Microsoft.XMLDOM")

Merci pour vos réponses et au plaisir!
0