You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

XSLT技术问题:如何将XML多实例Ustrd返回值限制为18字符

问题描述

我现在用以下XSLT代码把多个a:RmtInf/a:Ustrd实例合并为一个<Ustrd>节点:

<Ustrd>
    <xsl:value-of select="a:RmtInf/a:Ustrd"/>
</Ustrd>

这段代码的返回结果是:

<Ustrd>Item-1 Item-2 Item-3</Ustrd>

现在需要把返回的字符串限制为18个字符,但直接用substring函数处理序列不行,我尝试了下面的代码但没达到预期:

<Ustrd>
    <xsl:value-of select="substring(a:RmtInf/a:Ustrd, 1, 18"/>
</Ustrd>

期望得到的结果是:

<Ustrd>Item-1 Item-2 Item</Ustrd>
解决方案

问题出在substring函数接收的是节点序列,而非合并后的完整字符串。xsl:value-of默认会把序列节点值用空格拼接,但直接给substring传序列,它只会处理序列的第一个节点值,不是合并后的整体。

正确做法是先把所有a:RmtInf/a:Ustrd的节点值拼接成字符串,再对这个字符串做截断。用string-join函数手动完成拼接(和xsl:value-of默认行为一致,以空格分隔),再嵌套substring即可:

<Ustrd>
    <xsl:value-of select="substring(string-join(a:RmtInf/a:Ustrd, ' '), 1, 18)"/>
</Ustrd>

这样就能得到你期望的截断到18字符的结果。

内容的提问来源于stack exchange,提问作者EEAAO

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 00:40:43