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

XSLT3.0映射开发求助:移除含//CAN BE REMOVED//的Transmission段

解决XSLT3.0中删除指定Transmission段的问题

核心需求

当Transmission段的子段Transmission1内容包含//CAN BE REMOVED//时,删除整个Transmission段。

示例输入

<Root>
  <Transmission>
    <Transmission1>正常内容</Transmission1>
    <OtherData>数据1</OtherData>
  </Transmission>
  <Transmission>
    <Transmission1>测试内容//CAN BE REMOVED//测试内容</Transmission1>
    <OtherData>数据2</OtherData>
  </Transmission>
  <Transmission>
    <Transmission1>另一段正常内容</Transmission1>
    <OtherData>数据3</OtherData>
  </Transmission>
</Root>

期望输出

<Root>
  <Transmission>
    <Transmission1>正常内容</Transmission1>
    <OtherData>数据1</OtherData>
  </Transmission>
  <Transmission>
    <Transmission1>另一段正常内容</Transmission1>
    <OtherData>数据3</OtherData>
  </Transmission>
</Root>

正确XSLT3.0实现代码

<xsl:stylesheet version="3.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <!-- 身份转换模式:默认复制所有未被匹配的节点 -->
  <xsl:mode on-no-match="shallow-copy"/>

  <!-- 匹配需要过滤的Transmission元素,空模板实现删除 -->
  <xsl:template match="Transmission[contains(Transmission1, '//CAN BE REMOVED//')]"/>
</xsl:stylesheet>

代码说明

  1. 身份转换模式:XSLT3.0的<xsl:mode on-no-match="shallow-copy"/>替代了传统的身份转换模板,自动复制所有未被匹配的节点,大幅简化代码结构。
  2. 过滤逻辑:通过match="Transmission[contains(Transmission1, '//CAN BE REMOVED//')]"精准定位符合删除条件的Transmission元素,空模板表示不输出该元素及其所有子节点,直接实现删除效果。

常见问题排查

如果你的代码未达到预期效果,可从以下方向排查:

  • 字符串匹配问题:确认contains()函数的参数是否准确,若需要忽略大小写,可修改为contains(upper-case(Transmission1), upper-case('//CAN BE REMOVED//'))
  • 节点路径错误:如果Transmission1不是Transmission的直接子节点,需将路径调整为Transmission//Transmission1(适配深层嵌套场景)
  • 模板优先级冲突:若存在其他匹配Transmission的模板,需确保当前过滤模板的优先级更高(当前写法的优先级已满足需求)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 17:36:08