使用XPath从RSS feed中选择前5个元素

时间:2013-03-24 02:54:43

标签: xml xslt xpath rss

我正在尝试从以下RSS提要XML中选择前5项:

<rss xmlns:RTgame="http://www.rottentomatoes.com/xmlns/rtnews/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
   <channel>
     <item>
       <pubDate>2013-03-22 16:45:10</pubDate>
       <title>
          Weekly Ketchup: Will Tom Cruise Be The Man From U.N.C.L.E.?
       </title>
       <link>
         http://www.rottentomatoes.com/m/1927101/news/1927101/
       </link>
       <description>
          <![CDATA[
            This week's Ketchup includes movie development news for reboots of <em>Escape from New York</em>, <em>Hercules</em>, and <em>Pete's Dragon</em>, the next <em>X-Men</em> and <em>Captain America</em> movies, and new roles for Tom Cruise, Hugh Jackman, and Robert Redford.
          ]]>
       </description>
       <guid>
         http://www.rottentomatoes.com/m/1927101/news/1927101/
       </guid>
       <atom:link rel="thumbnail" type="image/*" href="http://content6.flixster.com/movie/11/14/23/11142332_tmb.jpg"/>
    </item>
    <item>...</item>
    <item>...</item>
    <item>...</item>
    <item>...</item>
    <item>...</item>
    <item>...</item>
    <item>...</item>
    etc.
  </channel>
</rss>

这是我的XSLT代码,包含Xpath表达式:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" omit-xml-declaration="yes" indent="yes" media-type="text/html"/>

<xsl:template match="rss/channel">
    <xsl:for-each select="item[position() < 6]">
        <xsl:variable name="link" select="link" />
        <a href="{$link}"><xsl:value-of select="title" /></a><br/>
        <xsl:value-of select="description" disable-output-escaping="yes" /><br/>
    </xsl:for-each>
</xsl:template>

</xsl:stylesheet>

我得到一个没有显示结果的空白页面。但是,如果我从“&lt;”更改运算符到“&gt;”或“=”,然后我得到页面上显示的结果。

由于某种原因,它不适用于“&lt;”操作员,我不明白为什么。

1 个答案:

答案 0 :(得分:4)

只需替换

<xsl:for-each select="item[position() < 6]">

<强>与

<xsl:for-each select="item[position() &lt; 6]">

<强>解释

XSLT转换是一种XML文档。根据格式良好的XML文档中的定义,任何不用于表示开始或结束标记的<字符都必须进行转义。