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

使用XSLT 1.0移除XML的HEADER节点失败,求技术协助

问题:使用XSLT 1.0移除XML中的HEADER节点

我尝试使用XSLT 1.0移除输入XML中的HEADER节点,但无法得到预期输出,恳请技术协助。

输入XML

<?xml version="1.0" encoding="UTF-8"?>
<HEADER>
    <CHILD1 BEGIN="1">
        <EDI SEGMENT="1">
            <FIELD1>EDI</FIELD1>
            <FIELD2>2</FIELD2>
            <FIELD3>HEADER</FIELD3>
        </EDI>      
    </CHILD1>
</HEADER>

预期输出(无XML声明及HEADER节点)

<CHILD1 BEGIN="1">
        <EDI SEGMENT="1">
            <FIELD1>EDI</FIELD1>
            <FIELD2>2</FIELD2>
            <FIELD3>HEADER</FIELD3>
        </EDI>      
    </CHILD1>

我尝试的代码

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    version="1.0">
    <xsl:template match="HEADER">
              <CHILD BEGIN="1">
            <xsl:copy-of select="."/>
            
            </CHILD>
    </xsl:template>
</xsl:stylesheet>

解决方案

以下是符合需求的XSLT 1.0代码:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <!-- 匹配HEADER节点,输出其所有子节点 -->
    <xsl:template match="HEADER">
        <xsl:copy-of select="node()"/>
    </xsl:template>

    <!-- 禁用XML声明输出 -->
    <xsl:output method="xml" omit-xml-declaration="yes"/>

    <!-- 身份模板:复制所有其他节点和属性 -->
    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>

代码说明

  1. 移除XML声明:通过<xsl:output>的omit-xml-declaration="yes"属性,确保输出不包含XML声明。
  2. 处理HEADER节点:匹配HEADER节点的模板中,使用<xsl:copy-of select="node()"/>直接复制HEADER的所有子节点,从而丢弃HEADER本身。
  3. 保留其他节点结构:身份模板(匹配@*|node())负责复制所有其他元素、属性和文本内容,保证CHILD1及其子节点的结构和内容完全保留。

原代码问题分析

你之前的代码存在两个关键错误:

  • 手动创建了错误的<CHILD>节点(预期是<CHILD1>),完全偏离需求;
  • 使用<xsl:copy-of select="."/>复制了整个HEADER节点,导致输出中仍包含HEADER,无法达到移除的目的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 18:53:11