我有一个RSS Feed,我将发布到Facebook
问题是图像没有出现但描述和标题工作正常。我们使用XSL文档来创建feed,我相信问题在于:
RSS feed:www.khl.com/access-international
XSL用于生成图像:
<item>
<title><xsl:value-of select="name"/></title>
<link>http://www.khl.com<xsl:value-of select="$magazine_path" />/detail/<xsl:value-of select="link" /></link>
<description><xsl:value-of select="description"/><![CDATA[
<img src="http://www.khl.com{item-links/item-link[@id=2]/items/item[1]/derived-files/preview}"/><img alt=""
border="0"
src="http://www.khl.com{item-links/item-link[@id=2]/items/item[1]/derived-files/preview}"
/>
]]></description>
<pubDate><xsl:apply-templates select="creation-date" mode="date-format"/><xsl:value-of select="substring(creation-date,11,16)"/><xsl:text>:</xsl:text>00 GMT</pubDate>
<guid>http://www.khl.com<xsl:value-of select="$magazine_path" />/detail/<xsl:value-of select="link" /></guid>
</item>
任何帮助将不胜感激,
此致 萨姆
我已经更新了Feed,但仍然没有运气。
现在,XSL文档中使用的代码为
<item>
<title><xsl:value-of select="name"/></title>
<link>http://www.khl.com<xsl:value-of select="$magazine_path" />/detail/<xsl:value-of select="link" /></link>
<description>
<xsl:text disable-output-escaping="yes"><![CDATA[</xsl:text>
<xsl:value-of select="description"/>
<img src="http://www.khl.com{item-links/item-link[@id=2]/items/item[1]/derived-files/thumbnail}"/>
<img alt="" border="0" src="http://www.khl.com{item-links/item-link[@id=2]/items/item[1]/derived-files/thumbnail}" />
<xsl:text disable-output-escaping="yes">]]></xsl:text>
</description>
<pubDate><xsl:apply-templates select="creation-date" mode="date-format"/><xsl:value-of select="substring(creation-date,11,16)"/><xsl:text>:</xsl:text>00 GMT</pubDate>
<guid>http://www.khl.com<xsl:value-of select="$magazine_path" />/detail/<xsl:value-of select="link" /></guid>
</item>
</xsl:template>
我重新检查了XML,它也正确并指向图像。 Feed可在此处找到:www.khl.com/access-international。仍然没有图片标签
希望我做错了什么
答案 0 :(得分:1)
虽然标准是(我相信)在您希望描述包含HTML时使用CDATA部分,但您遇到的问题是您的CDATA部分是XSLT中的一个部分,因此将在最初的XSLT文档时进行处理解析。换句话说,CDATA部分中的任何内容都只被视为文本,因此这里使用属性值模板是无关紧要的。
您要求CDATA部分是您正在输出的XML的一部分。现在, xsl:output 上有一个“cdata-section-elements”属性,但这只会影响文本节点的序列化,但不影响元素和属性的序列化。所以,你能做的就是自己有效地“序列化”HTML,就像这样
<xsl:text disable-output-escaping="yes"><![CDATA[</xsl:text>
<img src="http://www.khl.com{item-links/item-link[@id=2]/items/item[1]/derived-files/preview}"/>
,即你在这里手动写出CDATA部分,因此CDATA被写入输出,但在初始加载XSLT时不被视为CDATA。
请尝试以下代码:
<item>
<title><xsl:value-of select="name"/></title>
<link>http://www.khl.com<xsl:value-of select="$magazine_path" />/detail/<xsl:value-of select="link" /></link>
<description>
<xsl:text disable-output-escaping="yes"><![CDATA[</xsl:text>
<xsl:value-of select="description"/>
<img src="http://www.khl.com{item-links/item-link[@id=2]/items/item[1]/derived-files/preview}"/>
<img alt="" border="0" src="http://www.khl.com{item-links/item-link[@id=2]/items/item[1]/derived-files/preview}" />
<xsl:text disable-output-escaping="yes">]]></xsl:text>
</description>
<pubDate><xsl:apply-templates select="creation-date" mode="date-format"/><xsl:value-of select="substring(creation-date,11,16)"/><xsl:text>:</xsl:text>00 GMT</pubDate>
<guid>http://www.khl.com<xsl:value-of select="$magazine_path" />/detail/<xsl:value-of select="link" /></guid>
</item>
当然,您仍然必须确保将 src 属性写出为正确的值,并实际引用实际存在的图像!