Variable XSLT dans les accolades
Quel est le sens de l'entre crochets {} dans l'exemple suivant
(dans les lignes précédentes, la variable $fieldName est initialisé et rempli avec de la ficelle):
<xsl:element name="{$fieldName}">
<xsl:apply-templates select="field"/>
</xsl:element>
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser ces accolades (valeur de l'attribut modèles) si vous avez besoin de calculer une expression dans les attributs qui seraient autrement traiter le contenu sous forme de texte.
Par exemple, supposons que vous avez une source XML celui-ci:
et vous désirez créer un lien HTML à partir d'elle comme
Si vous il suffit de lire le contenu de
@site
dans lehref
attribut comme ceci:ça ne marchera pas, car il sera traité comme du texte brut et vous obtiendrez:
Mais si vous encapsuler le
@site
dans des accolades:Elle sera traitée comme XPath, sera exécuté et vous obtiendrez:
Si ce n'était pas pour les accolades, vous devez utiliser
<xsl:attribute>
dans<a>
contenant un<xsl:value-of>
pour obtenir le même résultat:Dans votre exemple, le
name
atrribute de<xsl:element>
nécessite une chaîne de caractères. Pour traiter cette chaîne comme une expression XPath et de le remplacer par le résultat de la variable$fieldName
, soit vous vous placez à l'intérieur des accolades comme vous l'avez fait, ou si vous utilisez le<xsl:attribute>
élément comme ci-dessus:<script>
(mais<xsl:value-of>
travaille dans<script>
).. est-ce pas? Ou suis-je en train de faire quelque chose de mal?e.g. c='<xsl:value-of select="class"/>'
travauxc='{class}'
ne pasCeux-ci sont appelés
Valeur de l'Attribut Templates
. Voir Ici pour les détails w3.orgC'est un peu dur à trouver, mais il en parle dans Créer des Éléments avec
xsl:element
.Tandis que le
{}
syntaxe n'est pas explicitement abordé ici, le sens de l'appareil est utilisé de la même façon dans d'autres contextes, tels que Créer des Éléments et des Attributs et s'applique ici aussi.Dans ce cas,
$fieldName
est juste une expression XPath pour une variable qui doit s'évaluer à un élément valide nom.