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

XSLT实现XML转换:preferred元素缺失时取primary值填充

XSLT可选preferred元素自动补全实现

实现逻辑

  • 基于XSLT身份转换模板做基础处理,默认完整保留输入XML中所有已存在的节点、属性、文本内容,避免原有数据被意外修改
  • 单独匹配所有不包含<preferred>子元素的<image>节点,在复制完该节点原有全部内容后,补充插入<preferred>节点,取值与当前<image>节点下的<primary>元素值一致
  • 对已经存在<preferred>元素的<image>节点不做任何额外处理,完全保留原有preferred值

可直接使用的XSLT代码(兼容XSLT 1.0及以上版本)

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

    <!-- 处理无preferred子元素的image节点 -->
    <xsl:template match="image[not(preferred)]">
        <xsl:copy>
            <!-- 先复制当前image的所有属性和原有子节点 -->
            <xsl:apply-templates select="@*|node()"/>
            <!-- 补充preferred元素,取值取同节点下primary的值 -->
            <preferred>
                <xsl:value-of select="primary"/>
            </preferred>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>

效果验证

针对给出的测试输入,转换结果完全符合预期:

  • id为i1的image节点无preferred元素,自动补充<preferred>true</preferred>,与primary值一致
  • id为i2的image节点已存在<preferred>false</preferred>,原值完整保留

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 02:57:21