如何替换XML中的<products>标签?已尝试XSLT但未成功
解决XML中标签属性移除问题
你的问题核心是在匹配
修正后的XSLT代码
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" exclude-result-prefixes="xsi"> <!-- 身份转换模板:复制所有未被特殊模板匹配的节点和属性 --> <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> <!-- 匹配带有xsi:schemaLocation属性的<products>标签,仅复制子节点,不保留属性 --> <xsl:template match="products[@xsi:schemaLocation]"> <products> <!-- 只处理子节点,跳过所有属性 --> <xsl:apply-templates select="node()"/> </products> </xsl:template> </xsl:stylesheet>
关键修改说明
- 移除了
<xsl:apply-templates select="@*|node()"/>中的@*,避免将原标签上的 xmlns:xsi和xsi:schemaLocation属性复制到新标签中。 - 原匹配规则
products[@xsi:schemaLocation]是正确的,XSLT中已声明xsi命名空间前缀,可正确匹配对应属性。
转换后结果
<?xml version="1.0" encoding="UTF-8"?> <products> <product> <name>Example Product</name> <price>10.00</price> </product> </products>
内容的提问来源于stack exchange,提问作者Eminen
相关产品推荐
相关产品推荐

