在ASP中使用RSS


阿瑟 發表



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">&amp;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">&amp;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文件。

很容易吧!

最後更新日期: 11/26/2005 8:05:38 PM