本文是工作中关于XSLT和XML一个小实例的分享
需求:XML抛出一些类主分类和子分类,在不同主分类中子分类有重复出现,每个主分类和子分类以一个记录集的形式输出。现要求筛选出主分类。
1. XML数据:
| 代码如下 |
复制代码 |
|
Carrier
Damage
|
Carrier
Delivery problem
|
Carrier
Documentation
|
Carrier
Excess
|
Consumer & Office
Brochures / catalogs
|
Consumer & Office
Commission/rebate
|
Customer
Commission/rebate
|
Customer
Credit/Overdues
|
Customer
Delivery problem
|
Customer
Documentation
|
Customer
Duty exemption
|
Customer
Excess
|
Customer
Imco
|
Customer
Order routing
|
DC
Excess
|
|
2. XSLT代码:
| 代码如下 |
复制代码 |
select="descendant::Row/area">###
substring-before($optionsStr, '###'))"/>
|
主要思路:通过将主分类循环组成一个字符串,再递归地对字符串进行截取2个选项进行比较,若截取到的两个选项不相同,则表示选项不重复,反之则递归循环。直到总的字符串被截取完,再也截取不到选项时就结束递归。具体思路可见代码中注释部分。
最终实现效果:

最新答案:
2012.04.23:最新找到了XSLT中的xsl:key和key()方法,可以简单地实现筛选结果: