ID ルールのこの単純な変更:
<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="node()">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="@*">
<xsl:attribute name="{name()}" namespace="{namespace-uri()}"/>
</xsl:template>
<xsl:template match="text()"/>
</xsl:stylesheet>
提供された XML ドキュメントに適用した場合:
<rootnode lang="EN">
<child1>Hello</child1>
<child2>
<child2_1>hello</child2_1>
</child2>
</rootnode>
必要な正しい結果が生成されます。
<rootnode lang="">
<child1/>
<child2>
<child2_1/>
</child2>
</rootnode>