xsl-list
[Top] [All Lists]

Re: Excluding one particular attribute(namespace) when copying elements

2003-10-31 14:25:15
I need to copy different element to output. For all
the elements I need to exclude the namespace attribute
when i use "xsl:copy-of" or "xsl:copy". It seems
difficult to specify this in XSLT. Any comment would
be appreciated!

Use something like this:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
  <xsl:output omit-xml-declaration="yes"/>

  <xsl:template match="t">
    <xsl:element name="{name()}">
      <xsl:copy-of select="namespace::*[not(. = 'b')]"/>
      <xsl:copy-of select="@* | node()"/>
    </xsl:element>
  </xsl:template>
</xsl:stylesheet>

When this transformation is applied on the following source.xml:

     <t xmlns:a="a" xmlns:b="b"/>

the result is:

     <t xmlns:a="a"/>

so the namespace "b" has been excluded.


Hope this helped.


=====
Cheers,

Dimitre Novatchev.
http://fxsl.sourceforge.net/ -- the home of FXSL




 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list