现在的位置: 首页 > 综合 > 正文

XSLT 在 Mashup 和 Feed 中的运用

2013年01月19日 ⁄ 综合 ⁄ 共 1962字 ⁄ 字号 评论关闭

Feed 最初是内容提供商用来组合最新的内容条目的一种方式,方便用户订阅以获得最新的更新。被更新的内容可以是 blogs,audios,text
等等。订阅者只需要一个 Feed 的 URL 就可以得到他关于某个主题的最新的内容。

由于 Feed 的简单,易懂,自包含,表述能力强等特点,而且用 XML 作为其序列化格式,所以在很多 web2.0 相关的企业应用里面,被用来
unlock 企业数据,或者作为一个数据交换的格式在不同的 web 应用之间交换数据。像 IBM Lotus Collections portfolio 用
ATOM1.0 Feed 作为数据交换格式,Google Data 公布 GData API,一个从 ATOM 衍生过来的数据格式等等。而且,IBM
MashupHub 可以把企业里面的数据如 database,excel,web service 的结果转成 ATOM Feed, it is amazing!

随着 APP(ATOM Publishing Protocol)协议的标准化,使得 web 应用创建、更新、获取 Feed 更加的方便和标准化,越来越多的
web 应用采用 Feed 作为数据格式。因此,对于 Feed 的处理的需求也变得越来越大,尤其是在情景式的应用里面。

Feed 的规范有 RSS 和 ATOM,但都是用 XML 格式作为其序列化的格式。而对于 XML 的处理,有很多比较成熟的技术,如广泛使用的 XSLT
和 XPath。本文不会着重讲解 XSLT 和 XPath,以及 Feed 的一些基本概念,请从参考文献里面获得更多的关于这方面的知识。本文以 ATOM 格式的
Feed 为例,讲解在 Feed 处理中一些常用的操作。

本文先分别介绍在情景式应用里面常用的 Feed operators:filter,sort, truncate, group, enrich,
projection 的实现。本文使用的是 XSLT1.0 和 XPath1.0。然后再介绍一个具体的情景式应用 , 怎么用前面介绍的这个 Feed
operators 来实现。



回页首

Feed operator
的实现

这一节,主要讲解怎么用 XSLT 来实现前面分析的那些 Feed oprators。在开始之前,先看看在本文中使用的 feed 的一个 entry
的结构以便于你理解下面的 stylesheet 里面用的 XPath expression。见清单 1。这是一个来自 CRM 的用 Mashup Hub 转成的
Feed 的 entry。它包含一个 customer 的基本的信息。完整的 feed 在附件里面获得,文件名为
customerFeed.xml。

清单 1. entry
的结构

<entry xmlns="http://www.w3.org/2005/Atom">
<title type="text">Item 2</title>
<id>urn:uuid:2</id>
<updated>2008-06-12T02:52:55.171Z</updated>
<author>
<name>admin</name>
</author>
<summary type="text">Atom Feed entry 2</summary>
<content type="application/xml">
<row xmlns="http://www.ibm.com/xmlns/atom/content/datarow/1.0">
<first_name>Justin</first_name>
<last_name>Goodell</last_name>
<title>VP Sales</title>
<phone_home>(552) 386-3917</phone_home>
<phone_mobile>(697) 032-7413</phone_mobile>
<phone_work>(968) 694-5743</phone_work>
<lead_source>Campaign</lead_source>
<account_name>3rd Round Funding 664183</account_name>
<email_address>phone.kid.vegan@example.tw</email_address>
<amount>20</amount>
</row>
</content>
</entry>

Filter

通常,人们通过 Feed 得到一个包含很多 entry 的一个 collection,但是人们希望更准确的得到符合某种条件的 feed 的
entry。所以人们需要做一个 filter。让我们写一个简单的 XML Stylesheet 来实现这个这个功能。比如只想看 customer 的 title
包含“VP”的 entries,请看清单 2 filter.xsl

清单 2. filter.xsl

本文转自IBM Developerworks中国

      请点击此处查看全文


 

抱歉!评论已关闭.