XSLT for-each选择语法

时间:2014-03-10 18:36:30

标签: xml xslt

我继承了一个粗略的xslt项目 - 我无法弄清楚这行代码如何读取

<xsl:for-each select="*[local-name()='CustomerOrderLine'][count(. | key('orderline-by-ShipAddress', *[local-name()='CustomerOrderPostalAddresses']/*[local-name()='CustomerOrderPostalAddress']/*[local-name()='PostalAddress']/*[local-name()='Line3'])[1]) = 1]">

据我所知,这个for-each选择'CustomerOrderLine'节点是基于与'orderline-by-ShipAddress'键和它与当前节点之间的某种联合。

我希望了解这段代码是如何“读取”的,这样我就可以更好地理解它是如何工作的以及为了重新使用该技术我需要改变什么。

2 个答案:

答案 0 :(得分:0)

这看起来像Grouping Using the Muenchian Method

基本上它是一种分组元素的方法。

答案 1 :(得分:0)

在这里阅读Muenchian分组:http://www.jenitennison.com/xslt/grouping/muenchian.xml。它与xsl:key一起用于分组和标识每个组中的第一个项目。因此,for-each处理每个组中的第一个CustomerOrderLine,其中分组基于Line3后代的值。