Cliquez ici.
Accueil
 chercher             Plan du site             Info (English version) 
L'histoire de XML s'écrit en ce moment même. XMLfr vous aide à la suivre et à en dégager les tendances.Les listes de discussions XMLfr sont à votre disposition pour réagir sur nos articles ou simplement poser une question.Si vous ètes passionnée(e) par XML, pourquoi ne pas en faire votre métier ?XMLfr n'est heureusement pas le seul site où l'on parle de XML. Découvrez les autres grâce à XMLfr et à l'ODP.Les partenaires grâce auxquels XMLfr peut se développer.Pour tout savoir sur XMLfr.XMLfr sans fil, c'est possible !Pour ceux qui veulent vraiment en savoir plus sur XML.L'index du site.
 Commentaires et questions non techniques.Commentaires et questions techniques.

 
Cliquez ici.

From: Jandia, Cyril (Cyril.Jandia@accor-services.com)
Date: 06/05/2003 - 12:42


Bonjour,

> -----Original Message-----
> From: Sandrine Cordonnier [mailto:scordonnier@silicom.fr]
> Sent: mardi 6 mai 2003 12:24
> To: xml-tech@xmlfr.org
> Subject: [xml-tech] Passage d'un nom de template en parametre d'un call-
> template
>
> Bonjour,
>
> [...]par contre je voudrais pouvoir
> changer de methode de formattage de valeur dynamiquement, donc j'ai
> encore modifié "formatTable" de la façon suivante:
> <xsl:template name="formatTable">
> <xsl:param name="valeurs"/>
> <xsl:param name="formatValeur" select="formatDefault"/>
> <table>
> <xsl:for-each select="$valeurs/valeur">
> <tr>
> <td>
> <xsl:call-template name="$formatValeur">
> <xsl:with-param name="x" select="."/>
> </xsl:call-template>
> </td>
> </tr>
> </xsl:for-each>
> </table>
> </xsl:template>
>
> Et là, ça ne fonctionne plus. Donc ma question est en plusieures parties:

Tout d'abord: merci (pour la liste ;-) pour la formulation de vos questions
qui est un exemple de clarté et de progression dans la problématique -- eh!
on aimerait qu'il en soit toujours ainsi... car ce n'est pas négligeable en
ce qui concerne la réutilisabilité des questions/réponses postées puis
archivées sur XMLfr -- mais il est vrai que nous sommes parfois pressés
d'être "débloqués", ce qui peut nuire à la formulation, mais aussi, donc, à
terme, à la résolution du problème ("malentendus" => multiples échanges,
etc)

(Bon, outre ces compliments, on peut quand même essayer de vous aider :-)...

> - Peut-on utiliser des noms de paramètres ("$<nom_de_parametre>") dans
> le parametre "name" de "xsl:call-template" ?

... Hélas, non: d'ailleurs, avec un peu d'expérience, "on" s'accorde
généralement à penser que si c'était le cas, cela rendrait certainement XSLT
*beaucoup* plus puissant mais aussi *beaucoup* plus difficile à
implémenter/optimiser pour ceux qui écrivent les processeurs...

> - Si oui, qu'est-ce qui n'est pas bon dans le code précédent ?
(cette question-là est donc sans objet :-)

> - Si non, y'a t-il un autre moyen de réaliser ce que j'essaie de faire
Voici ce que je proposerais (il n'y a vraiment aucune astuce, et c'est bien
moins "transparent" au moment de l'invocation du formatage :-(

-- a-tester.xsl (NB: j'ai corrigé le "select=..." du <xsl:param
name="formatValeur"...> qui me semble devoir porter une valeur de type
chaîne) :

[...]
<xsl:template name="formatTable">
<xsl:param name="valeurs"/>
<xsl:param name="formatValeur" select="'formatDefault'" />
<table>
    <xsl:for-each select="$valeurs/valeur">
        <tr>
            <td>
              <xsl:choose>
                <xsl:when test="$formatValeur='formatDefault'">
                  <xsl:call-template name="formatDefault">
                    <xsl:with-param name="x" select="."/>
                  </xsl:call-template>
                </xsl:when>
                <xsl:when test="$formatValeur='formatSpecial1'">
                  <xsl:call-template name="'formatSpecial1">
                    <xsl:with-param name="x" select="."/>
                  </xsl:call-template>
                </xsl:when>
                [etc...]
                <xsl:otherwise>
                        <xsl:message terminate="yes">format non
supporté!</xsl:message>
                </xsl:otherwise>
              </xsl:choose>
            </td>
        </tr>
    </xsl:for-each>
</table>
</xsl:template>
[...]

ou, encore :

-- peut-etre-mieux.xsl :

[...]
<xsl:template name="formatTable">
<xsl:param name="valeurs"/>
<xsl:param name="formatValeur" select="'formatDefault'" />
<table>
  <xsl:for-each select="$valeurs/valeur">
    <tr>
      <td>
        <xsl:call-template name="apply-format">
          <xsl:with-param name="formatValeur" select="$formatValeur" />
        </xsl:call-template>
      </td>
    </tr>
  </xsl:for-each>
</table>
</xsl:template>

<xsl:template name="apply-format">
<xsl:param name="formatValeur" />
<xsl:choose>
  <xsl:when test="$formatValeur='formatDefault'">
    <xsl:call-template name="formatDefault">
      <xsl:with-param name="x" select="."/>
    </xsl:call-template>
  </xsl:when>
  <xsl:when test="$formatValeur='formatSpecial1'">
    <xsl:call-template name="'formatSpecial1">
      <xsl:with-param name="x" select="."/>
    </xsl:call-template>
  </xsl:when>
  [etc...]
  <xsl:otherwise>
    <xsl:message terminate="yes">format non supporté!</xsl:message>
  </xsl:otherwise>
</xsl:choose>
</xsl:template>
[...]

> ci-dessus ?
>
> Merci,

> Sandrine

Cordialement,
Cyril

____________________________________________________________________________

Ce message électronique et tous les fichiers attachés qu'il contient sont
confidentiels et destinés exclusivement à l'usage de la personne à laquelle
ils sont adressés. Si vous avez reçu ce message par erreur, merci de le
retourner à son émetteur. La publication, l'usage, la distribution,
l'impression ou la copie non autorisée de ce message et des attachements
qu'il contient sont strictement interdits.

This e-mail and any files transmitted with it are confidential and intended
solely for the use of the individual to whom it is addressed. If you have
received this email in error please send it back to the person that sent it
to you. Unauthorized publication, use, dissemination, forwarding, printing
or copying of this email and its associated attachments is strictly
prohibited.

____________________________________________________________________________

--
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

 

xml tech

Discussions techniques au sujet de XML.

Cette liste est à votre disposition pour discuter en français de tout sujet technique lié à XML.



Devenez rédacteur <XML>fr et contribuez au développement du xml francophone !
Les documents publiés sur ce site le sont sous licence "Open Content"
Conception graphique
  l.henriot@online.fr  

Conception, réalisation et hébergement