分享
 
 
 

如何用PHP把RDF内容插入Web站点之中(1)

王朝php·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

名誉和巨大的财富

设想一个从最热门的门户网站获得最新的新闻的站点。股票价格,天气信息,新闻故事,线式讨论组,软件发布……所有这一切都将被动态更新,每小时一次,不需要任何手工干预。我们可以想象这随之而来的站点访问量,源源不断的广告收入以及网管大人所受到的“阿谀奉承”。

但是现在,停止幻想,开始阅读,因为只要你密切关注此项技术,说不定你就能成为站点的主人。 对你的要求也只是稍许的想象力,一些聪明的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站点之中。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有