xsl:模板匹配不起作用

时间:2012-10-29 07:48:03

标签: diazo

我有一个带有src属性的图像(在内容中)

http://myPage/rss.gif

我不想改变属性。 xsl:template匹配表达式不起作用..

<replace css:content="#content" css:theme=".content" />
<xsl:template match="img/@src[contains(., 'rss.gif')]">
    <xsl:attribute name="src">/++theme++myPackage/images/<xsl:value-of select="." /></xsl:attribute>
</xsl:template>

我做错了什么?

1 个答案:

答案 0 :(得分:0)

在您的示例中,您选择了img - 包含rss.gif - 属性中字符串src的标记,此字符串可能为http://myPage/rss.gif

然后您将一个属性src添加到img - 标记,其值为字符串/++theme++myPackage/images/和原始值http://myPage/rss.gif的串联。

原始值由<xsl:value-of select="." /></xsl:attribute>添加。这将选择src - 属性的全部值!

因此你会得到类似的东西:

<img id="content" src="/++theme++myPackage/images/http://myPage/rss.gif" />

出于测试目的,您可以先向您的theme.html文件添加一个img - 具有预期src - 属性的元素,并检查是否访问了该图像文件。另请注意,内容文件中src的值仅包含要附加到/++theme++myPackage/images/的字符串。

BTW,在您的示例中,您按类替换主题元素:css:theme=".content"。提醒这将使用类content替换所有元素。考虑使用id或更窄的选择器,例如div.content或更好div#someid.content