Hi Dimitre,
This one is working. But I found out another
interesting thing here and i think it may need people
attention.
Here is xml, xslt and output
test1.xml
<D
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<x>1</x>
<y>2</y>
<z>3</z>
</D>
test1.xslt:
<xsl:template match="D">
<D>
<xsl:if test="./*[name(.) = 'x']">
<xsl:copy-of select="./*[name(.) = 'x']"/>
</xsl:if>
</D>
</xsl:template>
Output:
<D>
<x
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">1</x>
</D>
My question is: Why the "xmlna:xsi......." was
inserted in the element x here?
Any anwser?
Thanks
Dongling
--- Dimitre Novatchev <dnovatchev(_at_)yahoo(_dot_)com> wrote:
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
__________________________________
Do you Yahoo!?
Exclusive Video Premiere - Britney Spears
http://launch.yahoo.com/promos/britneyspears/
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list