probleme xsl - XML/XSL - Programmation
Marsh Posté le 08-01-2009 à 09:30:02
ReplyMarsh Posté le 08-01-2009 à 14:35:40
avander a écrit : Utilise la fonction xpath position(), tu teste et tu limite à 10. |
j'ai rajouté "position () ", mais ça me ramène les 5 premiers AVANT tri alors que je voudrais les 5 premiers APRES tri... Je sèche completement....
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output encoding="utf-8" omit-xml-declaration="yes"/>
<xsl:template match="/">
<tiltviewergallery>
<photos>
<xsl:apply-templates />
</photos>
</tiltviewergallery>
</xsl:template>
<xsl:template match="tiltviewergallery">
<xsl:apply-templates select="/tiltviewergallery/photos/photo">
<xsl:sort select="@imageurl" order="descending" />
</xsl:apply-templates>
</xsl:template>
<xsl:template match="/tiltviewergallery/photos/photo[position() < 5]">
<photo imageurl="{@imageurl}">
</photo>
</xsl:template>
<xsl:template match="/">
<tiltviewergallery>
<photos>
<xsl:apply-templates />
</photos>
</tiltviewergallery>
</xsl:template>
</xsl:stylesheet>
Marsh Posté le 09-01-2009 à 09:21:49
Ton stylesheet est comment dire... assez brouillon.
T'as plusieurs templates qui se tirent dans les pattes imho. Il te faut un template avec match="photo" je pense.
Marsh Posté le 09-01-2009 à 22:02:37
avander a écrit : Ton stylesheet est comment dire... assez brouillon. |
Oui je sais, mais je patauge un peu avec ce xsl....
J'ai trouvé ceci à la place. Cela me semble mieux écrit et réponds à mon besoin... (mais je me demande si on peut faire mieux ? plus simple quoi ? t'en penses quoi avander ?)
Merci avander
Code :
|
Marsh Posté le 11-01-2009 à 12:12:12
Tant que ça marche...
Le xsl:for-each n'est pas fait pour ça, il sert à 'choper' des elements qui sont 'hors flux', des elements venus 'd'ailleurs' dont on a besoin alors qu'on est dans un template bien précis.
Perso, je ferais un template root dans lequel je fais un apply-templates vers les elements 'photo' avec le sort qui va bien et un template pour photo avec dedans le test.
Marsh Posté le 07-01-2009 à 23:06:12
Bonjour,
J'ai ce xsl qui fonctionne bien. Je souhaite limiter le xml résultant en limitant le nombre de noeuds <photo> en sortie (par exemple garder les 10 premières photos), mais je ne sais pas comment faire....
Une idée ?
Merci d'avance
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output encoding="utf-8" omit-xml-declaration="yes"/>
<xsl:template match="/">
<tiltviewergallery>
<photos>
<xsl:apply-templates />
</photos>
</tiltviewergallery>
</xsl:template>
<xsl:template match="tiltviewergallery">
<xsl:apply-templates select="/tiltviewergallery/photos/photo">
<xsl:sort select="@imageurl" order="descending" />
</xsl:apply-templates>
</xsl:template>
<xsl:template match="/tiltviewergallery/photos/photo">
<photo imageurl="{@imageurl}">
</photo>
</xsl:template>
</xsl:stylesheet>
exemple de xml produit
<tiltviewergallery>
<photos>
<photo imageurl="/phpgraphy-0.9.13a/pictures/2009-01-05 Lola/IMG_7646_resize.JPG"/>
<photo imageurl="/phpgraphy-0.9.13a/pictures/2009-01-05 Lola/IMG_7639_resize.JPG"/>
<photo imageurl="/phpgraphy-0.9.13a/pictures/2009-01-05 Lola/IMG_7637_resize.JPG"/>
<photo imageurl="/phpgraphy-0.9.13a/pictures/2009-01-05 Lola/IMG_7636_resize.JPG"/>
</photos>
</tiltviewergallery>