如何计算节点中的不同值?

如何在XSLT中计算节点中的不同值

示例:我想计算国家节点中现有国家的数量,在本例中为3

<各国艺术家>
<艺术家_by_Country>
<位置标识>62&lt/位置标识>
<艺术家ID>212&lt/艺术家ID>
<国家>阿根廷&lt/国家>
&lt/艺术家_by_Country>
<艺术家_by_Country>
<位置标识>4&lt/位置标识>
<艺术家ID>108&lt/艺术家ID>
<国家>澳大利亚&lt/国家>
&lt/艺术家_by_Country>
<艺术家_by_Country>
<位置标识>4&lt/位置标识>
<艺术家ID>111&lt/艺术家ID>
<国家>澳大利亚&lt/国家>
&lt/艺术家_by_Country>
<艺术家_by_Country>
<位置标识>12&lt/位置标识>
<艺术家ID>78&lt/艺术家ID>
<国家>德国&lt/国家>
&lt/艺术家_by_Country>
&lt/各国艺术家>

如果您有一个大型文档,可能需要使用“Muenchian方法”(通常用于分组)来标识不同的节点。声明一个键,该键通过不同的值对要计数的内容进行索引:

<xsl:key name=“按国家划分的艺术家”match=“按国家划分的艺术家”use=“country”/gt;

然后您可以获得<艺术家_by_Country&gt具有不同国家/地区的元素,使用:

各国艺术家
/国家艺术家
[生成id(.)=
生成id(密钥('按国家',国家编号)[1])]

您可以通过调用count()函数来计算它们

当然,在XSLT2.0中,它非常简单

计数(不同值(/Artists\u by\u Countries/Artists\u by\u Country/Country))

发表评论