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

如何修改XSLT代码实现拆分ImageURL后为标签自动添加序号

XSLT拆分分隔符链接生成带序号节点实现方法

核心需求说明

现有输入XML的<ImageURL>节点存储|分隔的多条图片链接,原转换逻辑拆分后生成同名<ImageURL>节点,需修改为生成<ImageURL1>、<ImageURL2>……带顺序编号的节点。

方案1:XSLT 2.0实现(推荐,写法更简洁)

直接调用内置tokenize()函数拆分字符串,遍历拆分结果时用position()获取序号动态生成节点名:

<!-- 处理ImageURL节点的模板 -->
<xsl:template match="ImageURL">
    <xsl:for-each select="tokenize(., '\|')">
        <!-- position()返回当前遍历项的顺序,从1开始计数 -->
        <xsl:element name="ImageURL{position()}">
            <xsl:value-of select="normalize-space(.)"/>
        </xsl:element>
    </xsl:for-each>
</xsl:template>

注意:|是正则特殊字符,拆分时需要加反斜杠转义为\|。

方案2:修改现有XSLT 1.0递归拆分模板

如果需要保持XSLT 1.0兼容,在原有递归拆分逻辑的基础上,新增序号传递参数即可:

<!-- 入口模板:匹配原ImageURL节点 -->
<xsl:template match="ImageURL">
    <!-- 调用递归拆分模板,初始序号设为1 -->
    <xsl:call-template name="split-image-url">
        <xsl:with-param name="input" select="."/>
        <xsl:with-param name="index" select="1"/>
    </xsl:call-template>
</xsl:template>

<!-- 递归拆分模板 -->
<xsl:template name="split-image-url">
    <xsl:param name="input"/>
    <xsl:param name="index"/>
    <xsl:choose>
        <xsl:when test="contains($input, '|')">
            <!-- 取当前段生成带序号节点 -->
            <xsl:element name="ImageURL{$index}">
                <xsl:value-of select="normalize-space(substring-before($input, '|'))"/>
            </xsl:element>
            <!-- 递归处理剩余内容,序号+1 -->
            <xsl:call-template name="split-image-url">
                <xsl:with-param name="input" select="substring-after($input, '|')"/>
                <xsl:with-param name="index" select="$index + 1"/>
            </xsl:call-template>
        </xsl:when>
        <xsl:otherwise>
            <!-- 处理最后一段内容 -->
            <xsl:element name="ImageURL{$index}">
                <xsl:value-of select="normalize-space($input)"/>
            </xsl:element>
        </xsl:otherwise>
    </xsl:choose>
</xsl:template>

效果示例

输入:

<ImageURL>https://img1.example.com/1.jpg|https://img1.example.com/2.jpg|https://img1.example.com/3.jpg</ImageURL>

输出:

<ImageURL1>https://img1.example.com/1.jpg</ImageURL1>
<ImageURL2>https://img1.example.com/2.jpg</ImageURL2>
<ImageURL3>https://img1.example.com/3.jpg</ImageURL3>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 07:06:05