如何将XSLT标记放在HTML属性中?

时间:2012-10-10 12:05:18

标签: html xslt

我在元描述HTML标记中设置了一个带有“meta_words”命名空间的XSLT变量“description”。

你有解决方案吗?

这是错误的代码

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

1 个答案:

答案 0 :(得分: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"/>