Comment appeler une fonction ColdFusion, en transmettant des valeurs d'attribut en tant qu'arguments, dans une instruction de modèle de transformation XML. Par exemple, quelque chose comme:Appel de la fonction ColdFusion dans XML Transformer avec la valeur de l'attribut
<xsl:template match="date">
<cfoutput>#DateFormat(now(), <xsl:value-of select="@format"/>)#</cfoutput>
</xsl:template>
tel que le code XML suivant:
<date format="mm/dd/yy" />
devrait être reconnu et transformé au résultat de DateFormat(now(), "mm/dd/yy")
? C'est possible? Je suis capable de le faire avec des arguments statiques à DateFormat()
, ne peut pas comprendre comment extraire une valeur d'un attribut/nœud et l'utiliser comme argument. Je vous remercie!
Mise à jour
version complète de tentative actuelle:
<cfxml variable="xmlData">
<?xml version="1.0"?>
<date format="mm/dd/yy" />
</cfxml>
<cfxml variable="stylesheet">
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="date">
<cfoutput>#DateFormat(now(), '<xsl:value-of select="@format"/>')#</cfoutput>
</xsl:template>
</xsl:stylesheet>
</cfxml>
<cfoutput>#XmlTransform(xmlData, trim(stylesheet))#</cfoutput>
qui se traduit par l'erreur suivante:
An error occured while Parsing an XML document. Element type "x2l:value-of" must be followed by either attribute specifications, ">" or "/>".
mais si j'échappe aux #, la fonction ne sera pas évaluée, et le résultat de XmlTransform (xmlData, trim (stylesheet)) sera juste "#DateFormat (maintenant(), 'mm/jj/aa') # "plutôt que la valeur de #DateFormat (now(), 'mm/jj/aa') # –
Réécrivit la réponse en fonction de vos commentaires. –
ce n'est pas vraiment joli, mais merci de montrer comment cela pourrait être accompli :) Je pense que je vais travailler sur une approche basée sur l'analyseur à la place ... –