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

如何通过XSLT转换临时员工ID格式?CONTINGENT_WORKER转CW

没问题,我帮你搞定这个ID格式转换的需求!下面是针对你场景的XSLT代码,以及详细的解释:

XSLT解决方案:裁剪临时员工ID格式

需求分析

你需要针对临时员工的ID做格式转换:将CONTINGENT_WORKER-xxx格式的ID替换为CW-xxx,其他员工ID保持原样。我们可以通过XSLT的条件判断和字符串处理函数来实现。

XSLT 2.0+ 代码示例

这个版本使用replace()函数,代码更简洁:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <!-- 身份模板:默认复制所有节点和属性 -->
    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>

    <!-- 专门处理id元素 -->
    <xsl:template match="id">
        <xsl:copy>
            <!-- 判断是否是临时员工ID -->
            <xsl:choose>
                <xsl:when test="starts-with(., 'CONTINGENT_WORKER-')">
                    <!-- 替换前缀为CW -->
                    <xsl:value-of select="replace(., 'CONTINGENT_WORKER', 'CW')"/>
                </xsl:when>
                <xsl:otherwise>
                    <!-- 其他ID直接输出 -->
                    <xsl:value-of select="."/>
                </xsl:otherwise>
            </xsl:choose>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>

XSLT 1.0 兼容版本

如果你使用的是XSLT 1.0(不支持replace()函数),可以用字符串截取的方式实现:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <!-- 身份模板 -->
    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>

    <!-- 处理id元素 -->
    <xsl:template match="id">
        <xsl:copy>
            <xsl:choose>
                <xsl:when test="starts-with(., 'CONTINGENT_WORKER-')">
                    <!-- 截取前缀后的部分,拼接CW- -->
                    <xsl:text>CW-</xsl:text>
                    <xsl:value-of select="substring-after(., 'CONTINGENT_WORKER-')"/>
                </xsl:when>
                <xsl:otherwise>
                    <xsl:value-of select="."/>
                </xsl:otherwise>
            </xsl:choose>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>

转换效果

针对你提供的XML输入:

<?xml version="1.0" encoding="UTF-8"?>
<data>
  <entry>
    <id>CONTINGENT_WORKER-1-24</id>
    <fname>john</fname>
    <lname>viett</lname>
  </entry>
  <entry>
    <id>060786655</id>
    <fname>Mia</fname>
    <lname>Nalco</lname>
  </entry>
</data>

转换后的输出会是:

<?xml version="1.0" encoding="UTF-8"?>
<data>
  <entry>
    <id>CW-1-24</id>
    <fname>john</fname>
    <lname>viett</lname>
  </entry>
  <entry>
    <id>060786655</id>
    <fname>Mia</fname>
    <lname>Nalco</lname>
  </entry>
</data>

关键说明

  • 身份模板(match="@*|node()")确保XML中除了id元素之外的所有内容都原样复制,不会丢失任何数据。
  • 使用starts-with()函数精准判断临时员工ID,避免误修改其他包含相同字符串的ID。
  • 两种版本分别适配不同的XSLT处理器,你可以根据自己的环境选择对应的代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:55:16