Re: [xsl] xsl templates, Removing spurious namespace declarations in output elements

Subject: Re: [xsl] xsl templates, Removing spurious namespace declarations in output elements
From: David Carlisle <davidc@xxxxxxxxx>
Date: Wed, 9 Apr 2003 12:46:50 +0100
> Is there any easy way when copying attributes to tell if it's a namespace
> attribute, so I can discard it?

By namespace attributes do you mean attributes in a namespace (which for
attributes is the same a ssaying they have a colon in their name)

If so just don't copy them:
<xsl:copy-of select="@*[namespace-uri(.)='']"/>
would just copy attributes that are not in a namespace.

If you mean namespace declarations, then they are not attributes as far
as Xpath is concerned and are invisible to XSLT.

<a xmlns="abc" xmlns:b="xyz" b:x="1"/>

has 1 attribute as far as Xpath is concerned. count(@*) would be one.
It has at least three namespace nodes (the predeclared xml namespace,
the two namespaces declared there, and any other namespaces declared on
an ancestor) but namespace nodes don't correspond directly to namespace
declarations.

<y xmlns="abc">
<a xmlns="abc" xmlns:b="xyz" b:x="1"/>
</y>

and


<y xmlns="abc">
<a xmlns:b="xyz" b:x="1"/>
</y>

are identical input as far as Xpath is concerned and will form the same
input tree to XSLT.

Having said all that, in the examples you have shown you have not been
copying any nodes at all, as the nodes in the result have different
names from the nodes in the input.

David

________________________________________________________________________
This e-mail has been scanned for all viruses by Star Internet. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
http://www.star.net.uk
________________________________________________________________________

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


Current Thread