我有一个 xml 文档,其中一些元素有命名空间,而其他元素没有。它们都需要命名空间,有些相同有些不同。元素具有我想保留的属性。
xml:
<foo xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:gco="http://www.isotc211.org/2005/gco" xsi:schemaLocation="http://www.isotc211.org/2005/gmd http://schemas.opengis.net/iso/19139/20060504/gmd/gmd.xsd" xmlns="http://www.isotc211.org/2005/gmd">
<bar y="2">
<baz z="3"/></bar>
<a-special-element n="8"/>
<another-special-element k="8"/>
</foo>
和 xslt:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:template match="*">
<xsl:element name="{local-name()}" namespace="A" >
<xsl:copy-of select="attribute::*"/>
<xsl:apply-templates />
</xsl:element>
</xsl:template>
<xsl:template match="foo">
<xx:foo xmlns:xx="xx">
<xsl:apply-templates/>
</xx:foo>
</xsl:template>
<xsl:template match="a-special-element">
<B:a-special-element xmlns:B="B">
<xsl:apply-templates/>
</B:a-special-element>
</xsl:template>
<xsl:template match="another-special-element">
<C:a-special-element xmlns:C="C">
<xsl:apply-templates/>
</C:another-special-element>
</xsl:template>
</xsl:stylesheet>
这是我想要的输出:
<xx:foo xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:gco="http://www.isotc211.org/2005/gco" xsi:schemaLocation="http://www.isotc211.org/2005/gmd http://schemas.opengis.net/iso/19139/20060504/gmd/gmd.xsd" xmlns="http://www.isotc211.org/2005/gmd"> <bar y="2">
<baz z="3"/>
</bar>
<B:a-special-element n="8"/>
<C:another-special-element k="4"/>
</xx:foo>
我检查了这个线程,但是“a-special-element”的属性已经被神奇地删除了。为元素添加命名空间
我也有多个 xmlns:???在我想保留的 foo 中。