0

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. イメージタグはまだありません

うまくいけば、私は何か間違ったことをした

4

1 に答える 1

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属性が正しい値として書き出されていることを確認し、実際に存在する画像を実際に参照する必要があります。

于 2013-10-16T13:16:38.510 に答える