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

如何使用XSLT移除指定XML元素的xsi:type属性

解决XSLT仅移除指定元素xsi:type属性的问题

问题原因

你之前的尝试失败,核心原因是没有在XSLT中声明xsi命名空间。xsi:type是属于http://www.w3.org/2001/XMLSchema-instance命名空间的属性,XSLT必须明确识别这个命名空间,才能正确匹配到该属性。

解决方案

在XSLT的xsl:stylesheet根元素中添加xsi命名空间声明,然后保留原有的匹配规则即可。

完整XSLT代码示例

<xsl:stylesheet version="1.0" 
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

    <!-- 仅匹配Root/Foo/Bar元素的xsi:type属性,不输出该属性 -->
    <xsl:template match="Root/Foo/Bar/@xsi:type" />

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

</xsl:stylesheet>

效果验证

将上述XSLT应用到你的XML文件后,输出结果会保留其他元素的xsi:type属性,仅移除<Root/Foo/Bar>的该属性:

<Root>
    <ChildElement xsi:type="XXX" />
    <Foo>
        <Bar />
    </Foo>
    <AndAnotherOne xsi:type="ZZZ" />
</Root>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 13:55:00