用XSLT欣赏所有世博印章

中国2010年上海世博会吸引了众人的关注,五彩缤纷的“世博印章”更是令人趋之若鹜。作为2010年世博会的两大创新项目之一的网上世博会的“我的护照”栏目,可以看到大部分场馆的世博印章图片。那么,能否一次性看到所有的世博印章呢?

Fiddler观察网络流量可以得知:每个片区有一个xml配置文件包含了片区内各场馆的名称和代码。例如,A片区的xml配置文件是:

<!-- http://www.expo.cn/configs/tencent/azone.xml -->
<root>
<err>0</err>
<p>
    <pid>11100001</pid>
    <dis>A片区</dis>
    <cnname>中国国家馆</cnname>
    <code>z0001</code>
    <type>体验馆</type>
    <name>China Pavilion</name>
</p>
<p>
    <pid>11200011</pid>
    <dis>A片区</dis>
    <cnname>哈萨克斯坦馆</cnname>
    <code>c1050</code>
    <type>浏览馆</type>
    <name>Kazakhstan Pavilion</name>
</p>
<p>
    <pid>11200013</pid>
    <dis>A片区</dis>
    <cnname>沙特馆</cnname>
    <code>c1086</code>
    <type>体验馆</type>
    <name>Saudi Arabia Pavilion</name>
</p>
<p>
    <pid>11200025</pid>
    <dis>A片区</dis>
    <cnname>印度馆</cnname>
    <code>c1018</code>
    <type>浏览馆</type>
    <name>India Pavilion</name>
</p>
<!-- 以下省略 -->
</root>

而世博印章的图片URI,可以根据pid字段构造。例如,中国国家馆的印章URI是:http://www.expo.cn/images/HZ/11100001.png

程序处理xml有很多种方法,其中一种好用的方法是XSLT。XSLT是一种声明性的、基于XML的语言,用于将一个或多个xml文档转换成另一些xml文档。XSLT经常被用于将xml数据转换成可以作为网页显示的html或xhtml文档。