Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 此xpath中count()的函数是什么?_Xml_Xslt_Xpath - Fatal编程技术网

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])