Subject: Re: Re: Excluding one particular attribute(namespace) when copying elements
From: Dongling Ding <dling61@xxxxxxxxx>
Date: Fri, 31 Oct 2003 15:38:01 -0800 (PST)
|
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@xxxxxxxxx> 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
|