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

编写XSLT:在fund_code_type_required后添加intermediary元素(不存在时)

需求与解决方案

现有XML结构

<request_scope>
   <valuation_currency>GBP</valuation_currency>
   <fund_code_type_required>FUND1</fund_code_type_required>
   <valuation_request type="Current"/>
   <valuation_request type="Surrender"/>
   <fund_breakdown_request>yes</fund_breakdown_request>
</request_scope>

转换目标

仅当<request_scope>下不存在<intermediary>元素时,在<fund_code_type_required>的紧后方添加空的<intermediary>元素,转换后结果如下:

<request_scope>
   <valuation_currency>GBP</valuation_currency>
   <fund_code_type_required>FUND1</fund_code_type_required>
   <intermediary></intermediary>
   <valuation_request type="Current"/>
   <valuation_request type="Surrender"/>
   <fund_breakdown_request>yes</fund_breakdown_request>
</request_scope>

实现XSLT代码

<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>

    <!-- 专门处理fund_code_type_required元素 -->
    <xsl:template match="fund_code_type_required">
        <!-- 先复制当前元素 -->
        <xsl:copy-of select="."/>
        <!-- 检查父节点request_scope下是否没有intermediary元素 -->
        <xsl:if test="not(../intermediary)">
            <intermediary/>
        </xsl:if>
    </xsl:template>
</xsl:stylesheet>

代码说明

  1. 身份模板:负责原样复制XML中所有未被特殊模板匹配的节点和属性,保证原有结构大部分不变。
  2. fund_code_type_required专属模板:
    • 先复制自身到输出结果中;
    • 通过not(../intermediary)判断父节点<request_scope>下是否不存在<intermediary>元素,若不存在则输出空的<intermediary>元素。
  3. 如果原XML中已经存在<intermediary>元素,这段XSLT不会做任何额外添加,完全保留原有结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 13:02:40