这个 xpath 中的 count() 函数是什么?
What is the function of the count() in this xpath?
我在 Muenchian method:
的实现中看到了这行代码
<xsl:for-each
select="//product[count(. | key('products-by-category', @category)[1]) = 1]">
我不明白 count()
发生了什么。我认为 count(.)
表示 count(self::product)
,它始终为 1,并且管道运算符 (|) 添加与键匹配的第一个节点,但键 'products-by-category' 不应该总是 return 一个节点集,假定该产品具有 'category' 属性并因此匹配自身?
这个 for-each 循环在哪些元素中迭代?你能为这个表达提供自然语言翻译吗?谢谢。
Can you provide a natural language translation for this expression?
简称"for each product that is first in its category"。
怎么会这样?它需要 所有 个产品元素,位于文档中的任意位置:
<xsl:for-each select="//product">
并通过表达式过滤它们:
[count(. | key('products-by-category', @category)[1]) = 1]
在这个表达式中,这部分:
key('products-by-category', @category)[1])
指的是与当前评价的商品同类别的第一个商品节点。
现在,如果当前评估的产品也是其类别中的第一个产品,则将两者一起计数将 return1。否则,将有两个不同的节点进行计数,结果为2.
在 XPath 1.0 中,表达式 count($x|$y)=1
用于测试 $x 和 $y 是否为同一节点。在 2.0 中,您可以使用更直观的表达式 $x is $y
。它之所以有效,是因为如果 $x 和 $y 都是单例集,那么如果这两个集不同,则它们的并集将包含两个节点,但如果它们相同,则只包含一个节点。
在此示例中,表达式用于询问 "is the current node the first one with its particular key value",这是 Muenchian 分组中使用的关键测试。
在 XPath 1.0 中进行相同测试的另一种方法是表达式 generate-id($x) = generate-id($y)
。您会看到使用了两种形式。
我在 Muenchian method:
的实现中看到了这行代码<xsl:for-each
select="//product[count(. | key('products-by-category', @category)[1]) = 1]">
我不明白 count()
发生了什么。我认为 count(.)
表示 count(self::product)
,它始终为 1,并且管道运算符 (|) 添加与键匹配的第一个节点,但键 'products-by-category' 不应该总是 return 一个节点集,假定该产品具有 'category' 属性并因此匹配自身?
这个 for-each 循环在哪些元素中迭代?你能为这个表达提供自然语言翻译吗?谢谢。
Can you provide a natural language translation for this expression?
简称"for each product that is first in its category"。
怎么会这样?它需要 所有 个产品元素,位于文档中的任意位置:
<xsl:for-each select="//product">
并通过表达式过滤它们:
[count(. | key('products-by-category', @category)[1]) = 1]
在这个表达式中,这部分:
key('products-by-category', @category)[1])
指的是与当前评价的商品同类别的第一个商品节点。
现在,如果当前评估的产品也是其类别中的第一个产品,则将两者一起计数将 return1。否则,将有两个不同的节点进行计数,结果为2.
在 XPath 1.0 中,表达式 count($x|$y)=1
用于测试 $x 和 $y 是否为同一节点。在 2.0 中,您可以使用更直观的表达式 $x is $y
。它之所以有效,是因为如果 $x 和 $y 都是单例集,那么如果这两个集不同,则它们的并集将包含两个节点,但如果它们相同,则只包含一个节点。
在此示例中,表达式用于询问 "is the current node the first one with its particular key value",这是 Muenchian 分组中使用的关键测试。
在 XPath 1.0 中进行相同测试的另一种方法是表达式 generate-id($x) = generate-id($y)
。您会看到使用了两种形式。