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

如何在XSLT 3中为非7HH开头的元素值添加7HH前缀?

给XML元素值添加指定前缀的解决方案

需求:当XML中<Name>元素的文本值不以7HH开头时,为其添加7HH前缀。

源XML

<DATA>
   <Name>90078</Name>
</DATA>

实现方案(使用XSLT)

可以用XSLT的条件判断和字符串处理函数实现需求,以下是XSLT 1.0的实现代码:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <!-- 复制所有节点和属性,保证原有XML结构不变 -->
    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>

    <!-- 专门处理Name元素 -->
    <xsl:template match="Name">
        <Name>
            <xsl:choose>
                <!-- 判断文本是否以7HH开头 -->
                <xsl:when test="starts-with(., '7HH')">
                    <xsl:value-of select="."/>
                </xsl:when>
                <xsl:otherwise>
                    <xsl:value-of select="concat('7HH', .)"/>
                </xsl:otherwise>
            </xsl:choose>
        </Name>
    </xsl:template>
</xsl:stylesheet>

转换后结果

<DATA>
   <Name>7HH90078</Name>
</DATA>

逻辑说明

  • 第一个模板是身份模板,负责原样复制XML中除<Name>外的所有节点和属性,确保XML整体结构不受影响。
  • 第二个模板精准匹配<Name>元素:
    • 用starts-with(., '7HH')判断当前元素文本是否以7HH开头
    • 符合条件则直接输出原文本;不符合则通过concat函数拼接前缀后输出

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 19:12:08