Voici le mauvais code
<meta name="description" content="<xsl:value-of match="meta_words" select="$description" />" />
En effet, cela est faux. L'instruction xsl:value-of
n'a pas d'attribut match
- donc vous ne savez pas exactement ce que vous voulez faire et à quoi le résultat devrait ressembler.
Voici ce que je veux que vous voulez.
Utilisation:
<meta name="description" content="{$description}"/>
Mise à jour:
D'un commentaire fait par l'OP, il semble qu'il y ait un paramètre nommé $meta_words:description
- pas un param/variable nommée $description
.
Dans ce cas, la solution ci-dessus doit être modifiée pour:
<meta name="description" content="{$meta_words:description}"/>
et la définition d'espace de nom correct pour le préfixe "meta_words"
doit être portée (on met habituellement de telles définitions d'espace de noms sur l'élément xsl:stylesheet
).
Voici une transformation complète:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:meta_words="some:meta_words" exclude-result-prefixes="meta_words">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:param name="meta_words:description" select="'XYZ'"/>
<xsl:template match="/">
<meta name="description" content="{$meta_words:description}"/>
</xsl:template>
</xsl:stylesheet>
Lorsque cette transformation est appliquée sur tout document XML (non utilisé pour cette démonstration), le résultat voulu, correct produit:
<meta name="description" content="XYZ"/>
Échapper le contenu de l'attribut ou il ne sera pas valide. –
L'attribut 'match' n'est pas valide sur xsl: value-of. Pouvez-vous montrer exactement à quoi correspond votre variable 'description', pour le rendre plus clair? Merci! –
Il a traversé PHP comme ceci 'XSLTProcessor :: setParameter ('meta_words', 'description', 'Ma description méta, ....');' – user938609