Сначала попробуйте RSS-каналы с использованием XML и CSS - PullRequest
1 голос
/ 08 декабря 2011

Я пытаюсь узнать, как создавать RSS-каналы, и я пытаюсь создать части xslt и css. Мне нужен канал RSS, чтобы показать каждый элемент с заголовком, описанием, длиной и 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 Ответ

2 голосов
/ 08 декабря 2011

Забудьте о CSS, пока вы не получите данные в своем HTML-выводе - вы можете вернуться к нему позже.

Код для отображения каждого элемента должен быть помещен в шаблон <xsl:template match="/rss/channel/item">, который вы создали в нижней части XSLT.Например (и если ваш XML-фрагмент верен), вы можете получить очень простой вывод с разделителями-дефисами для каждого канала, изменив шаблон следующим образом:

<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 / канал, так что вы должны получить все элементы в списке.Затем вы можете одеть это в любой HTML или CSS, какой захотите, и, возможно, заглянуть в XSLT, чтобы найти лучшие способы использования шаблонов, чтобы получить то, что вы хотите.

Но, надеюсь, это поможет вам начать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...