この変換:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="*">
<xsl:element name="{name()}" namespace="{namespace-uri()}">
<xsl:apply-templates select="node()|@*"/>
</xsl:element>
</xsl:template>
<xsl:template match="node()[not(self::*)]|@*">
<xsl:copy/>
</xsl:template>
<xsl:template match=
"@*[namespace-uri() = 'http://www.w3.org/2001/XMLSchema-instance']"/>
</xsl:stylesheet>
次のXMLドキュメントに適用した場合(提供されていません!):
<Publication
xmlns:n1="http://www.w3.org/2001/XMLSchema-instance"
n1:noNamespaceSchemaLocation="InformaKMSStructure.xsd">
<a x="y">
<b/>
</a>
<c/>
</Publication>
必要な正しい結果を生成します。
<Publication>
<a x="y">
<b/>
</a>
<c/>
</Publication>
説明:
これは、IDルールをオーバーライドする通常のパターンに従いますが、IDルールは2つのテンプレートに置き換えられます。1つは任意の要素に一致し、もう1つは他のノードまたは属性に一致します。