Since XSLT 1.0 doesn't have the <xsl:namespace> instruction in XSLT 2.0, the technique I use is to copy such nodes from my stylesheet:
Input:
t:\ftemp>type ns.xml
<application xmlns="http://someurl">
<Detail1/>
<Detail2>
<Property/>
</Detail2>
</application>
Execution:
t:\ftemp>call xslt ns.xml ns.xsl
<?xml version="1.0" encoding="utf-8"?><application xmlns="http://someurl" xmlns:
xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchem
a-instance">
<Detail1/>
<Detail2>
<Property/>
</Detail2>
</application>
Stylesheet:
t:\ftemp>type ns.xsl
<?xml version="1.0" encoding="US-ASCII"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
version="1.0">
<xsl:template match="/*">
<xsl:copy>
<xsl:copy-of select="document('')/*/namespace::xs"/>
<xsl:copy-of select="document('')/*/namespace::xsi"/>
<xsl:copy-of select="@*"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<xsl:template match="@*|node()"><!--identity for all other nodes-->
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
t:\ftemp>