将CDATA-xml rss文件中的图像提取到xslt中

时间:2013-03-22 08:58:31

标签: image xslt cdata

我需要显示有关xml RSS提要的xslt信息。 xml源是:

<description><![CDATA[<p>
<img style="margin: 10px; 
     float: left;" alt="Nuevo modelo general de negocio" 
     src="http://mysite.es/images/figure1.jpg" width="196" height="147" />
     La compañía apuesta por un marcado giro en el modelo]]>
</description>
我正在使用:

<xsl:value-of select="description" disable-output-escaping="yes"/>

但渲染效果不佳,因为我需要显示尺寸调整大小的图像,例如70x70。

我试过这个但错了:

<xsl:value-of select="replace("description","images/","images/resized/images/")" 
   disable-output-escaping="yes"/>

对我来说,完美的解决方案是从标签中提取src属性和文本。

此致 玛丽亚

1 个答案:

答案 0 :(得分:0)

如果你的xml总是像你的例子,那么你应该能够使用这样的东西:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
exclude-result-prefixes="xsl">

  <xsl:output method="xml" omit-xml-declaration="yes" indent="yes"/>

  <xsl:template match="/">
    <div>
      <xsl:apply-templates select="rss/channel"/>
    </div>
  </xsl:template>
  <xsl:template match="rss/channel">
    <ul>
      <xsl:apply-templates select="item"/>
    </ul>
  </xsl:template>
  <xsl:template match="item">
    <xsl:variable name="item_link" select="link"/>
    <xsl:variable name="item_title" select="substring-after(description, '/&gt;')"/>
    <xsl:variable name="item_image" select="substring-before(substring-after(description, 'src=&quot;'), '&quot;')" />
    <li>
      <a href="{$item_link}">
        <img alt="" src="{$item_image}" width="70" height="70" />
        <xsl:value-of select="$item_title"/>
      </a>
    </li>
  </xsl:template>
</xsl:stylesheet>