【问题标题】:Adding a RSS Feed Image using XSL使用 XSL 添加 RSS 源图像
【发布时间】:2013-10-16 08:46:48
【问题描述】:

我有一个要发布到 Facebook 的 RSS 源

问题是图像没有出现,但描述和标题工作正常。我们使用 XSL 文档来创建提要,我认为问题出在此处:

RSS 提要: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>

任何帮助将不胜感激,

问候, 山姆


我已经更新了我们的提要,但仍然没有成功。

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">&lt;![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">]]&gt;</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,它也正确并指向图像。提要可在此处找到:www.khl.com/access-international。仍然没有图像标签

希望我做错了什么

【问题讨论】:

  • 您能否更新您的问题以显示您尝试转换的 XML 的 sn-p?

标签: xslt rss


【解决方案1】:

虽然标准是(我相信)当您希望描述包含 HTML 时使用 CDATA 部分,但您遇到的问题是您的 CDATA 部分是 XSLT 中的一个部分,因此将在最初的 XSLT 文档时进行处理解析。换句话说,CDATA 部分中的任何内容都被视为文本,因此此处使用属性值模板是无关紧要的。

您的要求是 CDATA 部分是您输出的 XML 的一部分。现在,xsl:output 上有一个“cdata-section-elements”属性,但这只会影响文本节点的序列化,而不影响元素和属性。所以,你可以做的就是自己有效地“序列化”HTML,就像这样

<xsl:text disable-output-escaping="yes">&lt;![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">&lt;![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">]]&gt;</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 属性写为正确的值,并且实际引用实际存在的图像!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-16
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 2015-10-13
    • 2013-04-14
    • 2012-02-19
    • 1970-01-01
    相关资源
    最近更新 更多