我需要编写一个 XSLT 函数,将节点序列转换为字符串序列。我需要做的是对序列中的所有节点应用一个函数,并返回一个与原始序列一样长的序列。
这是输入文件
<article id="4">
<author ref="#Guy1"/>
<author ref="#Guy2"/>
</article>
这是调用站点的方式:
<xsl:template match="article">
<xsl:text>Author for </xsl:text>
<xsl:value-of select="@id"/>
<xsl:variable name="names" select="func:author-names(.)"/>
<xsl:value-of select="string-join($names, ' and ')"/>
<xsl:value-of select="count($names)"/>
</xsl:function>
这是函数的代码:
<xsl:function name="func:authors-names">
<xsl:param name="article"/>
<!-- HELP: this is where I call `func:format-name` on
each `$article/author` element -->
</xsl:function>
我应该在里面使用func:author-names
什么?我尝试使用xsl:for-each
,但结果是单个节点,而不是序列。