From: Super Abricot (superabricot@yahoo.com)
Date: 10/06/2003 - 07:40
Bonjour,
Pour mon papa numismate, j'ai un fichier XML dont la structure ressemble à ceci (c'était mon cadeau pour la Fête des Pères ;-) :
<!-- Parameters: DTD, XSL, Header... -->
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<!DOCTYPE series SYSTEM "coins.dtd">
<?xml-stylesheet href="coins.xsl" type="text/xsl"?>
<!-- Series Index -->
<coins>
<coin>
<serial>C0001</serial>
<name>Piece 1</name>
<thumb><thumb path="../Thumbs/c0001.jpg"/></thumb>
</coin>
<coin>
<serial>C0002</serial>
<name>Piece 2</name>
<thumb><thumb path="../Thumbs/c0002.jpg"/></thumb>
</coin>
<coin>
<serial>C0003</serial>
<name>Piece 3</name>
<thumb><thumb path="../Thumbs/c0003.jpg"/></thumb>
</coin>
<coin>
<serial>C0004</serial>
<name>Piece 4</name>
<thumb><thumb path="../Thumbs/c0004.jpg"/></thumb>
</coin>
</coins>
Et ainsi de suite (2.489 occurences à ce jour).
Je parviens, sans aucun problème, à afficher le contenu de cette DB
dans un tableau de 4 colonnes grâce à la 'stylesheet' suivante :
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" version="1.0" encoding="ISO-8859-1"
indent="yes"/>
<xsl:template match="/">
<html>
<HEAD>
<LINK REL="stylesheet" TYPE="text/css" HREF="stylesheet.css"/>
</HEAD>
<body>
<center>
<img src="../objets/papaphoto.jpg" border="0" width="480" height="96" alt="Le numismate à l'oeuvre">
</img>
<h2>Index des Pièces de Monnaie</h2>
</center>
<br/><br/>
<table align="center" valign="top" width="100%">
<xsl:apply-templates select="coins/coin" mode="premiers"/>
</table>
</body>
</html>
</xsl:template>
<xsl:template match="coin[(position() mod 4) = 1]" mode="premiers">
<tr>
<xsl:apply-templates select="."/>
<xsl:choose>
<xsl:when test="following-sibling::coin[1]">
<xsl:apply-templates select="following-sibling::coin[1]"/>
<xsl:apply-templates select="following-sibling::coin[2]"/>
<xsl:apply-templates select="following-sibling::coin[3]"/>
</xsl:when>
<xsl:otherwise>
<td> </td>
</xsl:otherwise>
</xsl:choose>
</tr>
</xsl:template>
<xsl:template match="coin" mode="premiers"/>
<xsl:template match="coin">
<td align="center" valign="top" width="25%">
<xsl:for-each select="thumb">
<img>
<xsl:attribute name="src">
<xsl:value-of select="thumb/@path"/>
</xsl:attribute>
</img>
</xsl:for-each>
<br/>
<p>
Code : <xsl:value-of select="serial"/>
<br/>
Nom : <xsl:value-of select="name"/>
</p>
</td>
</xsl:template>
</xsl:stylesheet>
Tout ceci fonctionne très bien...
... Mais j'obtiens une page très lourde et très lente à charger puisqu'elle doit afficher près de 2.500 enregistrements d'un coup.
Je voudrais pouvoir choisir un 'range' de valeurs à afficher (ex.: du serial C0100 au serial C0250) et/ou pouvoir ne choisir qu'un seul enregistrement à la fois.
Je suppose (???) que je dois/devrais utiliser soit
<xsl:for-each select="coins/coin[serial>&'C0099' and serial<&'C0251']">
</xsl:for-each>
ou
<xsl:for-each select="coins/coin[serial='C0333']">
</xsl:for-each>
Mais cela ne fonctionne pas: Je ne parviens pas à savoir où, dans ma 'stylesheet', je dois inscrire ce filtre et je ne sais pas si la syntaxe est correcte.
Il s'gait sans doute d'une bétise, mais je n'en sors pas.
Pouvez-vous m'aider ?
Je vous en remercie.
Super Abricot
---------------------------------
Do you Yahoo!?
Free online calendar with sync to Outlook(TM).
--
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:06 UTC
webmaster@xmlfr.org
|