如何在XSLT中计算节点中的不同值
示例:我想计算国家节点中现有国家的数量,在本例中为3
<;各国艺术家>;
<;艺术家_by_Country>;
<;位置标识>;62</位置标识>;
<;艺术家ID>;212</艺术家ID>;
<;国家>;阿根廷</国家>;
</艺术家_by_Country>;
<;艺术家_by_Country>;
<;位置标识>;4</位置标识>;
<;艺术家ID>;108</艺术家ID>;
<;国家>;澳大利亚</国家>;
</艺术家_by_Country>;
<;艺术家_by_Country>;
<;位置标识>;4</位置标识>;
<;艺术家ID>;111</艺术家ID>;
<;国家>;澳大利亚</国家>;
</艺术家_by_Country>;
<;艺术家_by_Country>;
<;位置标识>;12</位置标识>;
<;艺术家ID>;78</艺术家ID>;
<;国家>;德国</国家>;
</艺术家_by_Country>;
</各国艺术家>;
如果您有一个大型文档,可能需要使用“Muenchian方法”(通常用于分组)来标识不同的节点。声明一个键,该键通过不同的值对要计数的内容进行索引:
<;xsl:key name=“按国家划分的艺术家”match=“按国家划分的艺术家”use=“country”/gt;
然后您可以获得<;艺术家_by_Country>具有不同国家/地区的元素,使用:
各国艺术家
/国家艺术家
[生成id(.)=
生成id(密钥('按国家',国家编号)[1])]
您可以通过调用count()
函数来计算它们
当然,在XSLT2.0中,它非常简单
计数(不同值(/Artists\u by\u Countries/Artists\u by\u Country/Country))