Frank Marent wrote:
i have to remove namespace declarations in certain elements. i.e. i have
this one:
<Facts xmlns:html="http://www.w3.org/HTML/1998/html4"
xmlns:xlink="http://www.w3.org/1999/xlink">
<lotOfElements/>
</Facts>
and i want to get this one:
<Facts>
<lotOfElements/>
</Facts>
i can't manage to get there. even when i try to remove all attributes
from the element
<xsl:template match="Facts">
<xsl:copy>
<xsl:apply-templates select="*"/>
</xsl:copy>
</xsl:template>
does not remove these unnecessary namespaces.
xsl:copy copies the namespace nodes that are in scope. Use xsl:element
instead e.g.
<xsl:template match="Facts">
<xsl:element name="Facts">
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
Or, if you are using XSLT 2.0, I think you can do e.g.
<xsl:template match="Facts">
<xsl:copy copy-namespaces="no">
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
Note that <xsl:apply-templates select="@* | node()"/> would not hurt as
in the XPath/XSLT data model namespace declarations are not attribute
nodes but rather result in namespace nodes.
--
Martin Honnen
http://JavaScript.FAQTs.com/
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--