Xml 此xpath中count()的函数是什么?
我在的一个实现中看到了这行代码:Xml 此xpath中count()的函数是什么?,xml,xslt,xpath,Xml,Xslt,Xpath,我在的一个实现中看到了这行代码: 我不明白count()发生了什么。我认为count(.)意味着count(self::product),它总是1,管道操作符(|)添加与键匹配的第一个节点,但是键“products by category”不应该总是返回一个节点集,因为该产品具有“category”属性并因此匹配自身吗 每个循环在哪些元素中迭代?您能为该表达式提供自然语言翻译吗?谢谢 您能为该表达式提供自然语言翻译吗 简而言之,它的意思是“每种产品都是其类别中的第一” 怎么会这样?它在文档中
我不明白count()
发生了什么。我认为count(.)
意味着count(self::product)
,它总是1,管道操作符(|)添加与键匹配的第一个节点,但是键“products by category”不应该总是返回一个节点集,因为该产品具有“category”属性并因此匹配自身吗
每个循环在哪些元素中迭代?您能为该表达式提供自然语言翻译吗?谢谢
您能为该表达式提供自然语言翻译吗
简而言之,它的意思是“每种产品都是其类别中的第一”
怎么会这样?它在文档中的任何位置获取所有产品元素:
<xsl:for-each select="//product">
在此表达式中,此部分:
key('products-by-category', @category)[1])
指与当前评估产品类别相同的第一个产品节点
现在,如果当前评估的产品也是其类别中的第一个产品,那么将两者相加将返回1。否则,将有两个不同的节点要计数,结果将是2。在XPath 1.0中,表达式
count($x |$y)=1
用于测试$x和$y是否是相同的节点。在2.0中,您可以使用更直观的表达式$x是$y
。这是因为如果$x和$y都是单态集,那么如果两个集不同,则两个集的并集将包含两个节点,但如果它们相同,则仅包含一个节点
在本例中,表达式用于询问“当前节点是否是具有特定键值的第一个节点”,这是在Muenchian分组中使用的关键测试
在XPath 1.0中执行相同测试的另一种方法是表达式generate id($x)=generate id($y)
。您将看到使用了这两种形式
[count(. | key('products-by-category', @category)[1]) = 1]
key('products-by-category', @category)[1])