メタディスクリプションHTMLタグに「meta_words」ネームスペースを持つXSLT変数「description」を設定しました。
解決策はありますか?
これが間違ったコードです
<meta name="description" content="<xsl:value-of match="meta_words" select="$description" />" />
ここにコードが間違っています
<meta name="description" content="<xsl:value-of match="meta_words" select="$description" />" />
確かに、これは間違っています。xsl:value-of
命令には属性がありません。そのmatch
ため、実際に何をしたいのか、結果がどのようになるのかが明確ではありません。
これがあなたが望むものだと思います。
使用:
<meta name="description" content="{$description}"/>
更新:
OP によって作成されたコメントから、という名前のパラメーターがあるようです$meta_words:description
-- という名前のパラメーター/変数ではありません$description
。
この場合、上記のソリューションを次のように変更する必要があります。
<meta name="description" content="{$meta_words:description}"/>
また、プレフィックスの正しい名前空間定義"meta_words"
がスコープ内にある必要があります (通常、そのような名前空間定義をxsl:stylesheet
要素に配置します)。
完全な変換は次のとおりです。
<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>
この変換が任意の XML ドキュメント (このデモでは使用されていません) に適用されると、必要な正しい結果が生成されます。
<meta name="description" content="XYZ"/>