XST - utilisation de la sortie de call-template comme valeur de retour
Supposons que j'ai un modèle foo
qui peut produire quelque chose de donné un paramètre. Maintenant, je veux utiliser cette sortie comme un paramètre à mon autre modèle, loop
donc je peux boucle de la sortie d'un certain nombre de fois. J'ai essayé quelque chose le long du chemin de
<xsl:call-template name="loop">
<xsl:with-param name="times" select="someParam"/>
<xsl:with-param name="output">
<xsl:call-template name="foo">
<xsl:with-param name="type" select="something"/>
</xsl:call-template>
</xsl:with-param>
</xsl:call-template>
En d'autres termes, output
doit maintenant contenir la sortie de l'appel à foo
. Les deux loop
et foo
beau travail independantely mais il semble que je ne peux pas le nid de cette façon. Comment dois-je accomplir? Merci à l'avance.
Bonne question, +1. Voir ma réponse pour un exemple de travail de votre code fourni et des recommandations.
OriginalL'auteur pg-robban | 2010-10-24
Vous devez vous connecter pour publier un commentaire.
Le problème est dans le code que vous n'avez pas montré à nous. C'est une bonne façon de chaîne/tuyau de modèles, bien que je ne le recommanderais pas (voir à la fin de cette réponse),
Cette transformation:
lorsqu'il est appliqué sur toute XML (non utilisé), produit le voulait, résultat correct:
Stylistique recommandation:
Essayer d'éviter le chaînage des modèles de cette façon, car cela entraîne illisible et difficile à maintenir le code.
Il est beaucoup mieux pour obtenir les résultats intermédiaires (bien nommé) variables. Non seulement le code plus lisible et plus facile à gérer de cette façon, mais les résultats intermédiaires peuvent être réutilisés plusieurs fois sans avoir besoin de re-évaluer.
Ici est la même transformation, mais factorisé pour satisfaire aux exigences stylistiques:
OriginalL'auteur Dimitre Novatchev