首先尝试使用XML和CSS的RSS源

时间:2011-12-08 02:48:27

标签: css xml xslt

我正在尝试学习如何进行RSS提要,而我正在尝试制作xslt和css部分。我需要rss feed来显示每个项目的标题,描述,长度和pubDate,我正在尝试使用CSS。

这是我到目前为止所做的事情(抱歉,不太好):

CSS文件(rotten.css):

@charset "UTF-8";
/* CSS Document */

h2          {
        color:#03C;
        }

.intro      {
        font-style:italic;
        color:#666
        }

xslt文件(rotten.xslt):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xsl:stylesheet  [
    <!ENTITY nbsp   "&#160;">
]>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="UTF-8" doctype-public="-//W3C//DTD XHTML 1.0 
Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-  transitional.dtd"/>
<xsl:template match="/">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title><xsl:value-of select="/rss/channel/title" /></title>
<!-- create a link to the CSS stylesheet -->
<link type="text/css" rel="stylesheet" href="rotten.css" />
</head>
<body>
<!--print out the title and description of the feed. -->
<h2><xsl:value-of select="/rss/channel/title" /></h2>
<p class="intro"><xsl:value-of select="/rss/channel/description" /></p>
<hr />
<!-- print out the news stories -->
<xsl:apply-templates select="/rss/channel/item" />

</body>
</html>

</xsl:template>

<xsl:template match="/rss/channel/item">
<!-- put HTML and XSLT for displaying the stories here -->


</xsl:template>

</xsl:stylesheet>

我需要添加什么才能使所有内容协同工作?或者......我完全搞砸了,无法恢复?

我知道RSS提要的基本结构看起来像这样(减去实际数据):

<rss>
    <channel>
        <title>Name of feed</title>
        <link>URL of rss feed xml file</link>
        <description>Description of feed</description>
        <item>
            <title>Item1 title</title>
            <link>Item1 URL</link>
            <description>Item1description</description>
        </item>
    </channel>
</rss>

我认为应该放在xslt文件中,但我不知道在哪里...

1 个答案:

答案 0 :(得分:2)

忘记CSS,直到获得HTML输出数据为止 - 您可以稍后再回来查看。

显示每个项目的代码应放在您在XSLT底部创建的<xsl:template match="/rss/channel/item">模板中。例如(假设您的XML片段是正确的),您可以通过修改模板为每个Feed获得一个非常基本的连字符分隔输出:

<xsl:template match="/rss/channel/item">
    <p><!-- wrap the output in a p so it appears on one line per item -->
        <xsl:apply-templates select="title"/> -
        <xsl:apply-templates select="link"/> -
        <xsl:apply-templates select="description"/>
    </p>
</xsl:template> 

将自动为rss / channel中的每个项目调用此模板,因此您应该获取列表中的所有项目。然后,您可以使用您喜欢的任何HTML或CSS来装扮它,并且可以进一步了解XSLT以找到使用模板获得所需内容的更好方法。

但希望这会让你开始。