如何用PHP把RDF內容插入Web網站之中(一)

來源:互聯網
上載者:User
web|插入|網站 名譽和巨大的財富

設想一個從最熱門的門戶網站獲得最新的新聞的網站。股票價格,天氣資訊,新聞故事,線式討論群組,軟體發布……所有這一切都將被動態更新,每小時一次,不需要任何手工幹預。我們可以想象這隨之而來的網站訪問量,源源不斷的廣告收入以及網管大人所受到的“阿諛奉承”。

但是現在,停止幻想,開始閱讀,因為只要你密切關注此項技術,說不定你就能成為網站的主人。 對你的要求也只是稍許的想象力,一些聰明的PHP編碼和幾個免費的RSS檔案。另外,很明顯還包括這篇文章剩下的九個部分。



有內容,就聯合成辛迪加(Have Content, Will Syndicate)
我們從最基本的開始——那麼RSS究竟是什麼鬼東西呢?

RSS(即RDF Site Summary)是一種格式,最早由Netscape公司設計,用於分發其門戶網站My.Netscape.Com上的內容的描述資訊。自1997年被提出以來,幾經沉浮——可以點擊文章末尾的連結,瞭解一下RSS悠久複雜的曆史。現在的穩定的版本是RSS1.0,符合RDF規範。這一版本可以說即輕便又功能齊全。

RSS使得網管及時公布和分發某一特定網站的特定位置的最新最有趣的內容的描述資訊變的可能。 從新聞文章列表到股票市場資料或著是天氣預報,所有這些資訊都可以通過結構良好的XML文檔來發布,從而也可以被任何XML分析器進行分析,處理和翻譯。

網站上最新資訊的列表是經常更新的,而RSS使得這一列表的分發成為可能,也就為Web上簡易的內容辛迪加聯合開啟了大門。想瞭解這其中的道理,請看下面這個簡單的例子:

網站A,屬新聞網站(“內容辛迪加召集人”),能夠每小時發布一個包含最新新聞列表以及相應連結的RSS文檔。 而這一RSS文檔可以被其它網站擷取(如網站B,“內容收集者”),分析並顯示在網站B的索引頁面上。 每次網站A發布一個新的RSS文檔,網站B的索引頁面都可以自動更新,以擷取最新的新聞。

這種方案對交易中的雙方機構都有效。 既然RSS文檔中的連結都指向網站A上相應的文章,那麼網站A將迅速體驗到訪問量的增加。 而網站B的網管可以休假一個星期,因為他有辦法自動更新其網站上的索引頁面,而這一方法僅僅是把索引頁面與網站A發布的動態內容相串連而已。

有許多受歡迎的網站向公眾提供詳細的RSS或RDF新聞,如Freshmeat(http://www.freshmeat.net)和Slashdot(http://www.slashdot.org),當然還有其它許多網站。在這篇文章當中,我將廣泛的使用Freshmeat網站的RDF檔案。需要說明的一點是,這裡所談到的技術也可以應用於其它任何RSS1.0或RDF檔案。



交換頻道(Switching Channels)

典型的RSS文檔包含一個由描述性中繼資料標記出來的資源清單(URLs),請看下面的例子:

<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns="http://purl.org/rss/1.0/">

<channel rdf:about="http://www.melonfire.com/">
<title>Trog</title>
<description>Well-written technical articles and
tutorials on Web technologies</description>

<link>http://www.melonfire.com/community/columns/trog/</link>
<items>
<rdf:Seq>
<li
rdf:resource="http://www.melonfire.com/community/columns/trog/article.ph
p?id
=100" />
<li
rdf:resource="http://www.melonfire.com/community/columns/trog/article.ph
p?id
=71" />
<li
rdf:resource="http://www.melonfire.com/community/columns/trog/article.ph
p?id
=62" />
</rdf:Seq>
</items>
</channel>

<item
rdf:about="http://www.melonfire.com/community/columns/trog/article.php?i
d=10
0">
<title>Building A PHP-Based Mail Client (part 1)</title>

<link>http://www.melonfire.com/community/columns/trog/article.php?id=100
</li
nk>
<description>Ever wondered how Web-based mail clients
work? Find out here.</description>
</item>

<item
rdf:about="http://www.melonfire.com/community/columns/trog/article.php?i
d=71">
<title>Using PHP With XML (part 1)</title>

<link>http://www.melonfire.com/community/columns/trog/article.php?id=71<
/link>
<description>Use PHP's SAX parser to parse XML data and
generate HTML pages.</description>
</item>

<item
rdf:about="http://www.melonfire.com/community/columns/trog/article.php?i
d=62">
<title>Access Granted</title>

<link>http://www.melonfire.com/community/columns/trog/article.php?id=62<
/link>
<description>Precisely control access to information
with the mySQL grant tables.</description>
</item>

你可以看到,RDF檔案由幾個界限分明的部分組成。首先是文檔序碼(prolog),
<?xml version="1.0" encoding="UTF-8"?>

然後是根項目中的名稱空間聲明。

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns="http://purl.org/rss/1.0/">
接著是<channel>部分,這部分包含了RDF所要描述的頻道的一般資訊。在上面的例子中,頻道是Melonfire網站的Trog專欄,專欄內容是新的技術文章和指南,每星期更新一次。

<channel rdf:about="http://www.melonfire.com/">
<title>Trog</title>
<description>Well-written technical articles and
tutorials on Web technologies</description>

<link>http://www.melonfire.com/community/columns/trog/</link>
<items>
<rdf:Seq>
<li
rdf:resource="http://www.melonfire.com/community/columns/trog/article.ph
p?id
=100" />
<li
rdf:resource="http://www.melonfire.com/community/columns/trog/article.ph
p?id
=71" />
<li
rdf:resource="http://www.melonfire.com/community/columns/trog/article.ph
p?id
=62" />
</rdf:Seq>
</items>
</channel>
<channel>區包含了一個<items>區塊,<items>區塊又包含了文檔中描述的所有資源的一個順序列表。該列表通過一系列的<li />元素來表示。區塊中每一個資源都在後面的<item>區塊中有更詳細的描述。

<items>
<rdf:Seq>
<li
rdf:resource="http://www.melonfire.com/community/columns/trog/article.ph
p?id
=100" />
<li
rdf:resource="http://www.melonfire.com/community/columns/trog/article.ph
p?id
=71" />
<li
rdf:resource="http://www.melonfire.com/community/columns/trog/article.ph
p?id
=62" />
</rdf:Seq>
</items>
還可以在其中放置一個<image>區塊,這樣你就發行就緒頻道標誌的URL。

所以為了肉,RSS1.0文檔中的每一個<item>區塊都更詳細地描述一個單獨的資源,包括標題,URL和資源描述。

<items>
<rdf:Seq>
<li
rdf:resource="http://www.melonfire.com/community/columns/trog/article.ph
p?id
=100" />
<li
rdf:resource="http://www.melonfire.com/community/columns/trog/article.ph
p?id
=71" />
<li
rdf:resource="http://www.melonfire.com/community/columns/trog/article.ph
p?id
=62" />
</rdf:Seq>
</items>
在這個例子裡,<item>區塊描述了Ttrog“頻道”中單獨的一篇文章,並為這篇文章提供了描述和標題,以及URL。內容收集者可以利用URL建立“向後”連結。



你看得到,RSS1.0檔案相當地直觀明了,不管是手工,還是通過編程,都非常容易建立。上面的例子和解釋僅僅是說明性質的,通常,你可以用RSS1.0和RDF做更多的事情。你最好看一下文章末尾提供的連結,以擷取更多的資訊。不過在這之前,我們再花幾分鐘討論一如何將RSS1.0文檔插入到你自己的Web網站之中。



相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。