From: Jean-Marie Hoornaert (xml@h2o.be)
Date: 21/02/2004 - 12:54
Bonjour,
Objectif : réaliser un menu hiérachique, dans le style :
Menu 1
Sous-Menu 1
article 1
> article 2
article 3
Sous-Menu 2
Menu 2
Menu 3
Voici le document xml :
<?xml version="1.0" encoding="UTF-8"?>
<table>
<article>
<rubrique>100000</rubrique>
<date>200309</date>
<rang>001</rang>
<path>100000-200309-001.php</path>
<categorie>Bulletins</categorie>
<parution>32 - Septembre 2003</parution>
<titre>Editorial</titre>
</article>
<article>
<rubrique>100000</rubrique>
<date>200309</date>
<rang>002</rang>
<path>100000-200309-002.php</path>
<categorie>Bulletins</categorie>
<parution>32 - Septembre 2003</parution>
<titre>Le mot de la rédaction</titre>
</article>
</table>
Avec la feuille style qui suit, j'obtiens, avec l'aide de cette liste,
le résultat suivant (">" indique le menu actif active ) :
Catégorie
categorie 1
> categorie 2
categorie 3
Parution
> parution 1
parution 2
Sommaire
titre 1
> titre 2
titre 3
C'est peu ergonomique et cela prend beaucoup de place dans la page web.
La feuille de style, comment faut-il la corriger pour obtenir la
hiérarchie souhaitée.
Merci.
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output encoding="iso-8859-1" indent="yes" method="xml"/>
<xsl:param name="prub">200000</xsl:param>
<xsl:param name="pdate">200309</xsl:param>
<xsl:param name="prang">001</xsl:param>
<xsl:param name="ppath">200000-200309-001.php</xsl:param>
<xsl:template match="/">
<h3> Catégorie </h3>
<ol>
<xsl:apply-templates
select="table/article/categorie[not(preceding::categorie=.)]">
<xsl:sort select="../rubrique" data-type="number"
order="ascending"/>
</xsl:apply-templates>
</ol>
<h3> Parution </h3>
<ol>
<xsl:apply-templates
select="table/article/parution[not(preceding::parution=.)]">
<xsl:sort select="../date" data-type="number"
order="descending"/>
</xsl:apply-templates>
</ol>
<h3> Sommaire </h3>
<ol>
<xsl:apply-templates select="table/article/titre">
<xsl:sort select="../rang" data-type="number"
order="ascending"/>
</xsl:apply-templates>
</ol>
</xsl:template>
<xsl:template match="table/article/categorie">
<xsl:choose>
<xsl:when test="../rubrique=$prub">
<li class="selected">
<b>
<xsl:value-of select="../categorie"/>
</b>
</li>
</xsl:when>
<xsl:otherwise>
<li>
<a href="{../path}" class="nav">
<xsl:value-of select="../categorie"/>
</a>
</li>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="table/article/parution">
<xsl:if test="../rubrique=$prub">
<xsl:choose>
<xsl:when test="../date=$pdate">
<li class="selected">
<b>
<xsl:value-of select="."/>
</b>
</li>
</xsl:when>
<xsl:otherwise>
<li>
<a href="{../path}" class="nav">
<xsl:value-of select="."/>
</a>
</li>
</xsl:otherwise>
</xsl:choose>
</xsl:if>
</xsl:template>
<xsl:template match="table/article/titre">
<xsl:if test="../rubrique=$prub and ../date=$pdate">
<xsl:choose>
<xsl:when test="../rang=$prang">
<li class="selected">
<b>
<xsl:value-of select="."/>
</b>
</li>
</xsl:when>
<xsl:otherwise>
<li>
<a href="{../path}" class="nav">
<xsl:value-of select="."/>
</a>
</li>
</xsl:otherwise>
</xsl:choose>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
--
Cordialement.
Jean-Marie -HOO;-)
____________________
Jean-Marie Hoornaert
Courriel : jmh@h2o.be
PPsP* : http://www.h2o.be
Newsletter : abonnement@h2o.be?subject=abonnement_h2o
* Page Personnelle sans Prétention
* pour AppleScripter FileMaker
--
Devenez redacteur <XML>fr et contribuez au developpement du
xml francophone (http://xmlfr.org/infos/redacteurs/) !
Liste de diffusion "xml-tech@xmlfr.org" (http://xmlfr.org).
Cette liste est a votre disposition pour discuter en francais de
tout sujet technique lie a XML.
Pour resilier votre abonnement, envoyez un message contenant
la commande "unsubscribe" a xml-tech-request@xmlfr.org
(mailto:xml-tech-request@xmlfr.org?Subject=unsubscribe)
Archive générée par hypermail 2.1.3 le 28/06/2004 - 11:05 UTC
webmaster@xmlfr.org
|