阿瑟 發表
RSS是「Really Simple Syndication」的簡寫,直譯就是「互聯網機制」。RSS其實是一種很簡單的XML應用(勉強可算是XML服務的一種)。
RSS到底是如何運作的呢?其實其原理十分的簡單:
一個提供RSS服務的網站會發表一份含有一系列連結的XML文件,讓希望能夠互連的網站能夠用一個RSS閱讀程式將該XML文件解讀後在網頁中顯示(通常都是顯示另一網站的文件或是某種資源的列表)。
RSS跟一般的XML文件一樣,必須使用XSL文件來定義其中的標籤。
RSS的架構太簡單,自己寫也沒什麼意思,教學中這支程式是網路上流傳的rss閱讀程式,大家直接抓回去用就好了。
首先,我們必須先寫一份XSL文件來定義RSS中的標籤。
一份RSS文件的基本架構如下:
<rss version="2.0">
<channel>
<title>文件抬頭</title>
<link>文件網址</link>
<description>文件簡介</description>
<language>zh-tw(文件語言,zh-tw是台灣的傳統中文)</language>
<lastBuildDate>Sat, 26 Nov 2005 11:40:19 GMT(建立時間)</lastBuildDate>
<item>
<title>項目標題</title>
<link>項目連結</link>
<pubDate>項目更新日期</pubDate>
</item>
<item>
<title>項目標題</title>
<link>項目連結</link>
<pubDate>項目更新日期</pubDate>
</item>
...
</channel>
</rss>
rss標籤代表的是文件主體;channel則是文件內容;channel下的title、link、description則分別是這份rss希望顯示的抬頭、官方網站連結和簡介;item標籤rss文件中的單一項目:每個項目也都可以定義抬頭、項目項目的位址和更新日期等。
我們可以建立一份對應rss架構的xsl文件,xsl文件內容如下:
<?xml version="1.0" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="big5" omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="*">
<table border="1" width="600" align="center" style="border-collapse:collapse" cellpadding="5">
<tr>
<td valign="top" class="title" bgcolor="#336699">
<a>
<xsl:attribute name="href">
<xsl:value-of select="*[local-name()='channel']/*[local-name()='link']"/>
</xsl:attribute>
<xsl:attribute name="target">
<xsl:text>top</xsl:text>
</xsl:attribute>
<font color="#ffffff">
<xsl:value-of select="*[local-name()='channel']/*[local-name()='title']" disable-output-escaping="yes"/>
</font>
</a>
<font color="#ffffff">
<xsl:text disable-output-escaping="yes">&nbsp;</xsl:text>
<xsl:value-of select="*[local-name()='channel']/*[local-name()='lastBuildDate']"/>
</font>
</td>
</tr>
<tr>
<td valign="top" bgcolor="#eeeeee" class="headlines" >
<xsl:for-each select="//*[local-name()='item']">
<p>
<a>
<xsl:attribute name="href">
<xsl:value-of select="*[local-name()='link']"/>
</xsl:attribute>
<xsl:attribute name="target">
<xsl:text>top</xsl:text>
</xsl:attribute>
<xsl:value-of select="*[local-name()='title']" disable-output-escaping="yes"/>
</a>
<xsl:text disable-output-escaping="yes">&nbsp;</xsl:text>
<xsl:value-of select="*[local-name()='description']" disable-output-escaping="yes"/>
</p>
</xsl:for-each>
</td>
</tr>
</table>
</xsl:template>
<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>
</xsl:stylesheet>
這份xsl文件將xml標籤中含有的屬性和數值整理成為一個表格,若看不懂你可參考一下酷必網其他的XML教學。
接著當然就是要建立一個能夠存取rss文件的函式,這部份可以直接用微軟XML Parser來達成:
<%
Sub getXML(sourceFile)
dim styleFile
dim source, style
styleFile = Server.MapPath("news.xsl") '你的XSL文件檔名
set source = Server.CreateObject("Msxml2.DomDocument")
source.async = false
source.setProperty "ServerHTTPRequest", true
source.load CStr(sourceFile)
set style = Server.CreateObject("Msxml2.DomDocument")
style.async = false
style.load styleFile
source.transformNodeToObject style, Response
set source = nothing
set style = nothing
End Sub
%>
這個函式很容易使用,只要將RSS文件的網址作為函式參數就行了:
<% getXML("http://tw.news.yahoo.com/rss/politics") %>
上例是奇摩的政治新聞版的rss文件。
通常網路上的站台若有提供rss,都會有個橘色的rss圖案連結到與該頁有關的rss文件。就拿奇摩新聞來說好了,每一頁的rss圖案連結到的就是含有該頁最新新聞列表的rss文件。
很容易吧!