来自变量的 XSLT for-each-group 不起作用

XSLT for-each-group from variable does not work

XSLT 2.0 中的 for-each-group 按预期从文件工作,但不是从变量工作。

有这个文件:
~$猫test.xml

<?xml version="1.0" encoding="UTF-8"?>
<root>
  <delimiter/>
    <c>A</c><c>B</c>
  <delimiter/>
    <c>C</c>
</root>

使用样式表对此文件进行分组:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output method="xml" version="1.0"
  encoding="UTF-8" indent="yes" omit-xml-declaration="no" />

<xsl:template match="*">

  <!-- variable not used for file test -->
  <xsl:variable name="fields">
    <root>
      <delimiter/>
      <c>A</c><c>B</c>
      <delimiter/>
      <c>C</c>
    </root>
  </xsl:variable>

  <xsl:for-each-group select="*" group-starting-with="delimiter">
    <field>
      <xsl:for-each select="current-group()">
        <xsl:value-of select="self::c"/>
      </xsl:for-each>
    </field>
  </xsl:for-each-group>

</xsl:template>

</xsl:stylesheet>

我得到了我想要的结果:

<?xml version="1.0" encoding="UTF-8"?>
<field>AB</field>
<field>C</field>

尝试将变量 name="fields" 分组为:

<xsl:for-each-group select="$fields/*" group-starting-with="delimiter">

我得到结果:

<?xml version="1.0" encoding="UTF-8"?>
<field/>

为什么 for-each-group 作用于文件而不作用于变量?

变量fields是一个document-node(),可以定义变量的类型为element()

<xsl:variable name="fields" as="element()">
    <root>
        <delimiter/>
        <c>A</c><c>B</c>
        <delimiter/>
        <c>C</c>
    </root>
</xsl:variable>