xsl:for-each-group "fn:unparsed-text-lines()"的输出(使用 "group-starting-with" 属性)



我有一个包含如下行的文本文件:

ABC
DEF
GHI
JKL
MNO
PQR
STU
VWX
YZA

因此,我使用XSLT-3.0的fn:unparsed-text-lines('fileName','UTF-8')读取该文件的行,并且我想将这些行与以下以空格开头并以元素包装的行分组/合并。例如,使用xsl:for-each-group:

<line>ABC</line>
<line>DEF GHI</line>
<line>JKL MNO PQR STU</line>
<line>VWX</line>
<line>YZA</line>

但是我不知道如何在XSLT-3.0中使用xsl:for-each-groupxs:strings序列。我必须先将字符串转换为节点吗?还是有更好的办法?

下面是不正常的XSLT尝试(谓词只是一个提示,不起作用):

<xsl:for-each-group select="unparsed-text-lines('filename.txt','utf-8')" group-starting-with="text()[not(starts-with(.,' '))]">
<line><xsl:value-of select="string-join(current-group(),'DELIMITER')"/></line>
</xsl:for-each-group>

字符串不是文本节点。试试这样:

<xsl:for-each-group select="$lines" group-starting-with=".[not(starts-with(.,' '))]">
<line>
<xsl:value-of select="current-group()" separator=""/>
</line>
</xsl:for-each-group>