Xslt:在RSS源中嵌入图像

时间:2010-11-01 20:42:33

标签: xslt rss

我正在使用Umbraco,我需要在Rss Feed中显示图像。 Feed由 Xslt 生成。

如果我做文字的话,一​​切都有效。这些东西在技术上是可行的,但我分析的Feed是由WordPress生成的。

挑战在于我不知道如何嵌入我的标签中。

我有一个变量,比如“url”,它返回底层图像的完整网址。我怎么能插入?记住我正在使用Xslt来完成任务。

<content:encoded>          
  <img src="{$url}" />
</content:encoded>

我想必须使用CDATA,但我无法正确逃避非法字符:(

感谢您的帮助。

罗兰

1 个答案:

答案 0 :(得分:1)

罗兰,你试图逃避两次事情。这是不必要的(更不用说可怕!)This page显示:

<content:encoded><![CDATA[This is <i>italics</i>.]]></content:encoded>

即。他们只是逃避<content:encoded>内的标记一次,他们使用CDATA来做到这一点。在你的情况下,CDATA很尴尬,因为你需要在中间替换$ url。因此,您可以使用围绕<xsl:value-of select="$url" />缠绕的两个CDATA部分:(为了清晰起见,缩进)

<content:encoded>
  <![CDATA[<img src="]]>
  <xsl:value-of select='$url' />
  <![CDATA[">]]>
</content:encoded>

但那将是不必要的冗长。第二个CDATA部分是不需要的。我们可以在使用相同的原则时做得更好:转义标记字符(一次),这会导致字符串被解析为树。在您的情况下,只需要转发初始<。您可以使用&lt;代替CDATA来转义<。把它放在你的XSLT中:

<content:encoded>&lt;img src="<xsl:value-of select='$url' />"></content:encoded>

从XSLT的角度来看,<xsl:value-of>并不是真正的内部引号......这些引号只是文本节点的内容。 <xsl:value-of>用作普通的XSLT指令。

如果您需要,请将select='$url'更改为select="concat($siteUrl, photo)"。 (即照片是上下文节点的子元素,其文本值是图像文件的名称。)