0

メタディスクリプションHTMLタグに「meta_words」ネームスペースを持つXSLT変数「description」を設定しました。

解決策はありますか?

これが間違ったコードです

<meta name="description" content="<xsl:value-of match="meta_words" select="$description" />" />
4

1 に答える 1

3

ここにコードが間違っています

<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"/>
于 2012-10-10T12:16:19.537 に答える