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

如何使用XSLT排除XML文档中所有值为0的元素

XSLT全局剔除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>

    <!-- 全局剔除规则:匹配所有内容等价于数字0的元素,直接跳过输出 -->
    <xsl:template match="*[number(.) = 0 and string-length(normalize-space(.)) > 0]"/>
</xsl:stylesheet>

规则说明

  • 第一条标识转换模板会自动完成所有节点的默认复制操作,不需要单独为每个元素编写映射逻辑
  • 第二条空模板的匹配规则:
    • number(.) = 0 会自动将元素内容转换为数字判断,0、0.00、带前后空格的0都会被识别为等价于0,符合你的剔除要求
    • string-length(normalize-space(.)) > 0 用于避免误伤内容为空的元素,如果你需要同时剔除空内容元素,直接删除该条件即可
  • 如果只需要对xmls节点下的子元素做判断,可以将第二条模板的匹配规则修改为 match="xmls/*[number(.) = 0]" 缩小匹配范围

输出效果

针对你提供的示例XML输入,上述代码的输出结果为:

<xml>
<xmls>
<C>123</C>
</xmls>
</xml>

直接剔除了值为0的A、B两个元素,符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 21:57:04