我有以下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代码。
由于
答案 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]
这将查看节点集是否由两个节点组成,其中包含一个或两个节点(例如,组合)。这基本上标识了组。识别完组后,您可以访问密钥中的每个节点。