• imprimer
  • aide

Forum de discussions « XML - XSL - WML (WAP) - MATHML »

Retrouvez les publications relatives à ces discussions dans nos rubriques MATHML, WML, XML, XSL.

Xml, regrouper par élément identique

liste des forums liste des discussions Participer à la discussion

Photo de sofuzion Message publié le lundi 02 mars 2009 - 11h16 par sofuzion.
Bonjour,
J'ai pour projet un navigateur web. Je suis actuellement en train de m'occuper de la partie historique. Donc à chaque fois que l'utilisateur entre une url je l'enregistre (unHistorique) dans un fichier xml sous la forme :

<historique>
<unHistorique>
<jour> </jour>
<url> </url>
<heure> </heure>
<nom> </nom>
</unHistorique>
</historique>

J'ai trouvé une méthode me permettant de regrouper toutes les urls visitées par date :

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
<xsl:output method="html" indent="yes"/>
<xsl:key name="regrouper" match="jour" use="."/>

<xsl:template match="/">
<xsl:apply-templates select="historique/unHistorique/jour[generate-id(.)=generate-id(key('regrouper',.)[1])]"/>
</xsl:template>

<xsl:template match="jour">
<xsl:copy-of select="."/>
<xsl:apply-templates select="//heure[../jour=current()]"/>
<xsl:apply-templates select="//url[../jour=current()]"/>
<br/>
</xsl:template>

<xsl:template match="url">
<br/>
<xsl:copy-of select="."/>
</xsl:template>

<xsl:template match="heure">
<br/>
<xsl:copy-of select="."/>
</xsl:template>

</xsl:stylesheet>

J'aurais aimé savoir s'il n'existe pas une méthode plus "simple" qui permettrait de regrouper mes url par date.

Parce que j'aimerais afficher mon historique comme cela par exemple :
Lundi 02 mars 2009
10h00 http://www.google.fr
11h00 http://www.allhtml.com

Mardi 03 mars 2009
09h00 http://www.google.fr

mais avec cette méthode ci-dessus je n'arrive pas à faire un tableau correct car j'ai toutes les heures qui se suivent, ensuite toutes les urls

mon résultat est :
jeu. févr. 19 2009
11:03:56
11:04:12
http://www.siteduzero.com/
http://www.siteduzero.com/

alors que j'aimerais mettre l'url à côté de l'heure correspondante.

Avez vous une idée ??
En vous remerciant :)
Photo de laruiss Message publié le lundi 02 mars 2009 - 11h33 par laruiss.
Je te propose ceci :

<xsl:template match="jour"> <xsl:copy-of select="."/> <xsl:call-template name="hour_and_url"><xsl:with-param name="day"><xsl:value-of select="."/></xsl:with-param></xsl:call-template> <br/> </xsl:template> <xsl:template name="hour_and_url"> <xsl:param name="day" /> <xsl:value-of select="//heure[../jour=$day]"/> <xsl:value-of select="//url[../jour=$day]"/> </xsl:template>

@+
Photo de sofuzion Message publié le lundi 02 mars 2009 - 11h39 par sofuzion.
J'ai réussi à mettre sous la forme que je souhaitais grâce à

<html>
<body>
<table border="1">
<xsl:copy-of select="."/>
<tr>
<td>
<xsl:apply-templates select="//heure[../jour=current()]"/>
</td>
<td>
<xsl:apply-templates select="//url[../jour=current()]"/>
</td>
</tr>
</table>
</body>
</html>

Je vais également regarder ce que tu m'as mis laruiss ;)
Merci !

liste des forums liste des discussions Participer à la discussion

Vous devez obligatoirement vous identifier en tant que membre pour participer à cette discussion.

ACCÉS COMMUNAUTÉ

Rejoignez ALL HTML

Publiez vos articles, actualités, communiqués ... Donnez votre avis, partagez votre réseau, rencontrez d'autres membres et participez à la vie de la communauté.

Les 5 dernières discussions