一部の要素に名前空間があり、他の要素にはない 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 で。