我正在使用Umbraco,我需要在Rss Feed中显示图像。 Feed由 Xslt 生成。
如果我做文字的话,一切都有效。这些东西在技术上是可行的,但我分析的Feed是由WordPress生成的。
挑战在于我不知道如何嵌入我的标签中。
我有一个变量,比如“url”,它返回底层图像的完整网址。我怎么能插入?记住我正在使用Xslt来完成任务。
<content:encoded>
<img src="{$url}" />
</content:encoded>
我想必须使用CDATA,但我无法正确逃避非法字符:(
感谢您的帮助。
罗兰
答案 0 :(得分:1)
<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部分是不需要的。我们可以在使用相同的原则时做得更好:转义标记字符(一次),这会导致字符串被解析为树。在您的情况下,只需要转发初始<
。您可以使用<
代替CDATA来转义<
。把它放在你的XSLT中:
<content:encoded><img src="<xsl:value-of select='$url' />"></content:encoded>
从XSLT的角度来看,<xsl:value-of>
并不是真正的内部引号......这些引号只是文本节点的内容。 <xsl:value-of>
用作普通的XSLT指令。
如果您需要,请将select='$url'
更改为select="concat($siteUrl, photo)"
。 (即照片是上下文节点的子元素,其文本值是图像文件的名称。)