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

XSLT实现仅复制指定元素及其子元素、排除父节点的方法

问题根因

原有XSLT存在两处核心错误:

  • 未显式匹配XML根节点/,触发XSLT内置的默认递归处理规则,顺着节点层级把根下的<company>父节点完整输出
  • 固定插入的<header>节点直接写在xsl:stylesheet根节点下属于非法语法,未纳入模板匹配逻辑,被内置模板按文本规则错误处理,同时原代码存在游离的</parent>闭合标签,结构本身不合法。
可用的正确XSLT代码
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
    <xsl:template match="/">
        <parent>
            <header>Some inserted text</header>
            <!-- 直接提取所有staff节点深拷贝,跳过company父层级 -->
            <xsl:copy-of select="//staff"/>
        </parent>
    </xsl:template>
</xsl:stylesheet>
逻辑说明
  • 显式匹配根节点后,完全自定义输出的外层结构,阻断内置模板的默认递归逻辑,不会输出多余的<company>父节点
  • xsl:copy-of会对选中的<staff>节点做深拷贝,自动保留节点属性、全部子节点内容,不需要额外编写子元素匹配模板,逻辑简洁
  • 所有固定插入的静态节点都放在根匹配模板内部,不会出现标签被错误包裹的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 14:48:21