无法理解一些XSLT分组代码

时间:2014-04-23 13:40:38

标签: xslt-1.0

我有以下XML格式的数据

<item>
    <title>Body Cleaner</title>
    <vendor>Wipro</vendor>
    <location>EMEA</location>
    <manufacture_date>12/08/2010</manufacture_date>
    <item_type>House Hold</item_type>      
    <item_type>Health</item_type>                    
</item>
<item>
    <title>Sweet Catch up</title>
    <vendor>Unilever</vendor>
    <location>APAC</location>
    <manufacture_date>21/07/2013</manufacture_date>
    <item_type>House Hold</item_type>      
    <item_type>Kitchen</item_type>                    
</item>

(1)下面是xsl文件中的代码

<xsl:key name="groups" match="item_type" use="."/>

<xsl:apply-templates select="item/item_type[generate-id() = generate-id(key('groups', .)[1])]"/>

这里我无法理解在特定情况下使用generate-id()。以下代码的目的是什么

[generate-id()= generate-id(key(&#39; groups&#39;,。)[1])]

(1)下面是另一个xsl文件中的代码

<xsl:key name="vendors" match="item" use="vendor"/>

<xsl:apply-templates select="item[count(.|key('vendors',vendor)[1])=1]">

这里我无法理解表达式

  

项[计数(|键(&#39;供应商&#39;,供应商)[1])= 1]

特别是。|的目的在计数。

有人可以帮助我在这里做好准备,以便我能够进一步理解XSLT代码。

由于

1 个答案:

答案 0 :(得分:1)

这称为muenchian grouping。在xslt 1.0中,没有内置分组。

键,像这样的键由key()函数使用:

<xsl:key name="vendors" match="item" use="vendor"/>

key()函数使用元素(info)指定的索引从文档返回节点集。

item[count(.|key('vendors',vendor)[1])=1]

这将查看节点集是否由两个节点组成,其中包含一个或两个节点(例如,组合)。这基本上标识了组。识别完组后,您可以访问密钥中的每个节点。