XSLT如何将迭代获取的ProductName值拼接存入全局变量并输出
XSLT 变量为只读属性,声明后无法修改赋值,原代码中尝试在循环内更新CombineProductName的思路不可行,以下是可直接使用的实现方案:
方案1:XSLT 2.0 及以上版本(代码最简,推荐优先使用)
直接调用内置string-join函数完成拼接,无需额外逻辑处理:
<xsl:template name="CartItemProductNames"> <xsl:param name="Data" /> <xsl:value-of select="concat('{', string-join($Data/ProductName, ', '), '}')" /> </xsl:template>
你原有调用模板的代码无需任何修改,即可输出符合要求的格式。
方案2:兼容XSLT 1.0 版本(适配旧版本解释器环境)
XSLT1.0无内置拼接函数,通过判断节点位置处理分隔符,避免首尾多余逗号:
<xsl:template name="CartItemProductNames"> <xsl:param name="Data" /> <xsl:text>{</xsl:text> <xsl:for-each select="$Data/ProductName"> <xsl:value-of select="." /> <xsl:if test="position() != last()"> <xsl:text>, </xsl:text> </xsl:if> </xsl:for-each> <xsl:text>}</xsl:text> </xsl:template>
内容的提问来源于stack exchange,提问作者Ram Singh
相关产品推荐
相关产品推荐

