【发布时间】:2018-10-23 20:56:40
【问题描述】:
在 XSLT 2.0 中,我有一个参数,它以分隔的文档名称字符串形式出现,例如:
ms609_0080.xml~ms609_0176.xml~ms609_0210.xml~ms609_0418.xml
我 tokenize() 这个字符串并使用 xsl:for-each 循环遍历它以将每个文档传递给 key。然后我将来自密钥的结果组装成一个逗号分隔的字符串以输出到屏幕。
<xsl:variable name="list_of_corresp_events">
<xsl:variable name ="tokenparam" select="tokenize($paramCorrespdocs,'~')"/>
<xsl:for-each select="$tokenparam">
<xsl:choose>
<xsl:when test=".[position() != last()]">
<xsl:value-of select="document(concat($paramSaxondatapath, .))/(key('correspkey',$correspid))/@xml:id"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="concat(document(concat($paramSaxondatapath, .))/(key('correspkey',$correspid))/@xml:id, ', ')"/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:variable>
一切正常,除了当我输出变量$list_of_corresp_events 时,它如下所示,带有意外的尾随逗号:
ms609-0080-2, ms609-0176-1, ms609-0210-1, ms609-0418-1,
通常最后一个逗号不应该基于test=".[position() != last()]" 出现?可能职位不适用于标记化数据?我没有看到将string-join() 应用于此的方法。
非常感谢。
【问题讨论】: