XSLT怎么获取当前分组内的项目 current-group()

4次阅读

current-group() 返回当前分组的节点序列,顺序与输入一致;只能在 xsl:for-each-group 内使用,常配合 count()、current-grouping-key() 等实现分组聚合与嵌套处理。

XSLT怎么获取当前分组内的项目 current-group()

current-group() 是 XSLT 2.0+(及 XPath 2.0+)中 xsl:for-each-group 内部专用函数,**只能在 xsl:for-each-group作用域内使用**,用于获取当前正在处理的这个分组所包含的所有节点(即“这一组”的全部项目)。

它返回什么?

返回一个节点序列(node sequence),顺序与原始输入中这些节点出现的顺序一致。注意:不是字符串、不是单个节点,而是**一组节点** —— 所以你可以对它用 count()position()for-each,甚至嵌套 xsl:for-each-group 再分组。

怎么用?常见写法

典型结构如下:

select="item" group-by="@category”>
  

    

Category:

    

this group has items.

XSLT怎么获取当前分组内的项目 current-group()

Krisp

AI噪音消除工具

XSLT怎么获取当前分组内的项目 current-group() 135

查看详情 XSLT怎么获取当前分组内的项目 current-group()

    

          
            

  •       
        

  

关键注意事项

  • 不能在 xsl:for-each-group 外调用 —— 否则报错或返回空序列
  • 不等于 .current(). 是当前上下文节点(通常是分组里的第一个节点),而 current-group() 是整个组
  • 如果想取组内第一个/最后一个节点,写 current-group()[1]current-group()[last()]
  • 配合 current-grouping-key() 使用最常见 —— 前者是“这组的值”,后者是“这组的内容”

小技巧:过滤或变换当前组

你可以在 current-group() 上直接加谓词或函数:

  • current-group()[price > 100] —— 取本组中价格超百的项
  • current-group()/@id —— 提取本组所有项目的 id 属性值序列
  • String-join(current-group()/name, ', ') —— 把本组所有 name 拼成逗号串

基本上就这些。记住:它是分组时的“组内视图”,用对了能让聚合、汇总、嵌套列表变得非常简洁。

text=ZqhQzanResources