From: Maurice Frankel (mfrankel@maurice-frankel.org)
Date: 01/05/2002 - 09:48
Voilà un exemple complet :
"xsl:with-param" inclus dans "xsl:apply-templates" passe le paramètre.
"xsl:param" au début de "xsl:template" reçoit le paramètre.
C'est identique au passage de paramètres d'une fonction à une autre dans la plupart des langages (sauf pour l'obligation d'utiliser le même nom) .
Maurice Frankel
<?php
$xslt = xslt_create();
$xml = 'notes.xml';
$xsl = 'notes.xsl';
$result = xslt_process($xslt, $xml, $xsl);
if ($result) {
print $result;
}
else {
echo "Une erreur est survenue durant le traitement XSL...<br>\n";
echo "\tErreur numéro : " . xslt_errno($xslt) . "<br>\n";
echo "\tMessage d'erreur : " . xslt_error($xslt) . "<br>\n";
}
xslt_free($xslt);
?>
<?xml version="1.0" encoding="iso-8859-1"?>
<notes>
<note valeur="5">
<on>oui<voir/></on>
</note>
<note valeur="6">
<off>non<voir/></off>
</note>
</notes>
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="ISO-8859-1" indent="yes" />
<xsl:template match="/">
<html>
<body>
<xsl:apply-templates select="/*" />
</body>
</html>
</xsl:template>
<xsl:template match="note">
<xsl:apply-templates select="on|off">
<xsl:with-param name="val" select="@valeur"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="on">
<xsl:param name="val"/>
<xsl:apply-templates select="voir">
<xsl:with-param name="arg" select="text()"/>
<xsl:with-param name="val" select="$val"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="off">
<xsl:param name="val"/>
<xsl:apply-templates select="voir">
<xsl:with-param name="arg" select="text()"/>
<xsl:with-param name="val" select="$val"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="voir">
<xsl:param name="val"/>
<xsl:param name="arg"/>
<p>voir : <xsl:value-of select="$val"/> - <xsl:value-of select="$arg"/></p>
</xsl:template>
</xsl:stylesheet>
Le résultat est :
<html>
<body>
<p>voir : 5 - oui</p>
<p>voir : 6 - non</p>
</body>
</html>
----- Original Message -----
From: "Yvon Thoraval" <yvon.thoraval@free.fr>
To: "XML - TECH list" <xml-tech@xmlfr.org>
Sent: Wednesday, May 01, 2002 12:37 AM
Subject: [xml-tech] Re: limites de PHP + sablotron
>Les paramètres doivent être définis avant de pouvoir être utilisés.
>J'écrirais plutôt :
>
> <xsl:template match="note">
> <xsl:param name="px"/>
> <xsl:param name="py"/>
> <xsl:param name="pw"/>
> <xsl:param name="ph"/>
> <xsl:apply-templates select="off | on">
> <xsl:with-param name="px" select="$px"/>
> <xsl:with-param name="py" select="$py"/>
> <xsl:with-param name="pw" select="$pw"/>
> <xsl:with-param name="ph" select="$ph"/>
> </xsl:apply-templates>
> </xsl:template>
>
>Mais je ne suis pas certain que les noms de la deuxième série de with-
>param puissent êtres identiques à ceux de la première série. Dans ce cas,
>il faudrait écrire :
...
oui bon, en fait les paramètres sont bien définis mais ta réflexion me
fait penser à une chose, si je simplifie l'écriture ca donne :
<xsl:apply-templates select="note">
définition des paramètres "px"
</xsl:apply-templates>
puis plus loin :
<xsl:template match="note">
<xsl:apply-templates select="off | on">
utilisation des paramètres "px"
</xsl:apply-templates>
</xsl:template>
donc à "l'intérieur" d'une autre template....
alors que ce que tu suggères serait plutot :
<xsl:apply-templates select="note">
définition des paramètres "px"
</xsl:apply-templates>
puis plus loin :
<xsl:template match="note">
re-définition des paramètres "px_ = px"
<xsl:apply-templates select="off | on">
utilisation des paramètres "px_"
</xsl:apply-templates>
</xsl:template>
j'essaie demain matin et je poste...
merci pour cette suggestion.
--
Yvon Thoraval
--
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=subscribe)
--
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
|