使用XSLT清除重复元素

ZDNet软件频道 时间:2003-02-14 作者:BUILDER.COM 翻译:Java研究组织 |  我要评论(13)
本文关键词:
当进行XML文件转换时,被转换的XML源文件可能含有重复元素。对于这个问题,存在多种解决方法;在这封技术邮件中,我们将讨论其中一种方法。

当进行XML文件转换时,被转换的XML源文件可能含有重复元素。对于这个问题,存在多种解决方法;在这封技术邮件中,我们将讨论其中一种方法。

问题

下面所示的文件是一个假设的、简单的XML文件,这个文件包含与订单有关的信息。

在这个订单中,所有标识为item的元素的信息分开显示的。提醒注意的是,元素item number 1和item number 3是相同的。但是,这个订单的目标系统要求:包含同一SKU子元素的item元素只能被显示一次;增加Quantity子元素显示每个item元素的数量。目标系统所期望的结果如下:

解决方法

实际上存在两个难题需要解决。首先,我们必须清除值为“12345”的SKU元素的重复入口。接着,我们必须为每个item元素提供显示数量的Quantity子元素。为了解决这些问题,我们需要利用XSLT的某些高级特性。

为了清除重复入口,我们将使用到基于XSLT中 following操作符的决窍。在每个循环中,following 和 preceding 操作符分别指示下一个或者先前的节点。following操作符通过判断目前节点和所跟随节点在文本上是否类似来清除重复节点。

为了解决的第二个问题,我们需要确定特定元素出现的次数。幸运的是,XSLT提供了计数功能。利用计数功能,我们能够对源XML文件中item元素出现的次数进行计数,并且为目标系统的Quantity子元素提供计数数据。


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134