[xsl] Rebuild an element without copying defaulted attributes?

Subject: [xsl] Rebuild an element without copying defaulted attributes?
From: "dvint@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Tue, 12 Aug 2014 16:22:18 -0000
I have a situation where I need to process 4,000 DITA topics to update
them. I'm making updates which will then be included in the production
data going forward. I need to modify certain elements and pass others
through unchanged.

My problem is the unchanged.

So there is an element <pre> that has a defaulted @xml:space set to
preserve. When I rebuild this element and recreate all the existing
attributes my output now has a hard coded attribute setting.

So

    <pre ixia_locid="7">there's also the Duplicate Supplier Taxpayer ID
Number Report</pre>

became

 <pre ixia_locid="7" xml:space="preserve">there's also the Duplicate
Supplier Taxpayer ID Number Report</pre>

It seems like the only way I can avoid getting the defaulted attributes
copied is to remove the reference to the DTD in all the topics. Is there
any other way to accomplish this?

Currently I'm using this template:

<xsl:template match="*">
<xsl:element name="{name(.)}">
<xsl:for-each select="@*">
    <xsl:attribute name="{name(current())}" ><xsl:value-of
select="."/></xsl:attribute>
</xsl:for-each>
<xsl:apply-templates/>
</xsl:element>
</xsl:template>

Current Thread