XSLT显示大小一致的新闻项目图像

时间:2013-02-27 23:50:22

标签: image xslt image-resizing image-size

我有一个RSS XML新闻文件,其中包含一个项目列表,其中包含图像的URL。我也有一个相关的XSLT。

问题是图像尺寸不一致,我想限制图像尺寸,调整尺寸,使其成为一个漂亮的缩略图。

我如何修改XSLT来实现它?

XML示例:

<?xml version="1.0" encoding="UTF-8" ?>
<rss version ="2.0" xmlns:g="http://base.google.com/ns/1.0">
    <channel>
        <title>Company Name</title>
        <description>Company description</description>
        <link>http://www.mycompanyurl.com</link>

        <item>
            <title>News Item Title</title>
            <link>http://www.whateverurl.com/</link>
            <category>Space</category>
            <pubDate>12 April 1961</pubDate>
            <description>Software to reduce your job search to a half hour per day. all major job sites, job boards, classifieds. unemployment paperwork, CRM, interviews, more</description>
            <image>
                <url>~/App_Data/NewsControl/whatever.png</url>
                <title>Whatever1</title>
                <link>javascript:void(0)</link>
            </image>
            <g:id>1</g:id>
            <g:brand>Whatever2</g:brand>
            <g:condition>whatever3</g:condition>
            <g:price>$whatever4</g:price>
            <g:product_type>Whatever5</g:product_type>
        </item>
    </channel>
</rss>

以下是关联的XSLT:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/">
    <items>
      <xsl:for-each select="//item">
        <item Name="{position()}" HeaderText="{title}" Text="{description}" NavigateUrl="{position()}" Date="{pubDate}" ImageUrl="{image/url}"/>
      </xsl:for-each>
    </items>
  </xsl:template>
</xsl:stylesheet>

首次回答的结果

<items>
    <xsl:for-each select="//item">
       <item Name="{position()}" HeaderText="{title}" Text="{description}" NavigateUrl="{position()}" Date="{pubDate}" ImageUrl="/Tools/thumber.php?img={image/url}"/>
    </xsl:for-each>
</items>

我做了这些更改,在服务器上启用了PHP(从服务器和本地测试),并看到了2个问题: 我没有图像,只是没有图像框。

  1. 如果我尝试编辑ImageUrl并添加“&amp; W = xxx&amp; H = xxx”,则Visual Studio验证程序会抱怨并抛出&amp;。
  2. 上的错误。

    更新2 这是XSLT中的最新一行:         http://myserver.com/Tools/thumber.php?img=',image/url)}“/&GT;

    XML中相应的图像部分

    <image>
        <url>/Products/Jobfish/Images/Boxshots/Jobfish_DVDCaseCD_ShadowOut.jpg</url>
        <title>Jobfish</title>
        <link>javascript:void(0)</link>
    

1 个答案:

答案 0 :(得分:0)

XSLT没有用于调整大小或缩略图的内置函数。您将不得不使用外部处理器,例如。使用PHP缩略图生成器。

然后用指向缩略图生成器的URL替换原始图像路径,源是原始图像。

假设ImageUrl = mediaserver.xyz/ourlogo.jpg 新的ImageUrl将成为myserver.com/thumbnailgenerator.php?src = http://mediaserver.xyz/ourlogo.jpg

请选择一个缓存缩略图库(例如https://code.google.com/p/phpthumbmaker/wiki/ThumberWiki),因为如果你跳过它,它将是一个严重的资源。在重新提供这些缩略图时,请考虑版权问题。