RE: [xsl] Matching namespaces - one works, one doesn't ?

Subject: RE: [xsl] Matching namespaces - one works, one doesn't ?
From: "Kerry, Richard" <richard.kerry@xxxxxxxxxxx>
Date: Thu, 29 Nov 2007 11:47:40 -0000
Thank you.
Yes, I'm using Saxon, hence using 2.0.
Yes, this is called from xsl:copy, to which I've added attribute
copy-namespaces="no".

I've removed the xmlns:mytest from the xsl:stylesheet.

I now have only the one template :
	<xsl:template
match="@*[local-name()='noNamespaceSchemaLocation']" />

And the xmlns:xsi and xsi:noNamespaceSchemaLocation are now both being
removed.



Seems I may need to read up a bit more on namespaces.  Doesn't seem too
intuitive to me.....

Appreciatively,
Richard.




> -----Original Message-----
> From: Michael Kay [mailto:mike@xxxxxxxxxxxx]
> Sent: 29 November 2007 11:31
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: RE: [xsl] Matching namespaces - one works, one doesn't ?
>
> > However, if I have
> > 	<xsl:template match="@*[local-name()='xsi']" /> It has
> > no effect on the xmlns:xsi attribute, which remains in the output.
>
> That's because as far as the XPath data model is concerned it's not an
> attribute, it's the serialization of a namespace node.
>
> I assume you're using <xsl:copy>. That copies all the
> namespace nodes of an
> element. In XSLT 2.0 you can specify copy-namespaces="no" to
> prevent this.
> In 1.0, use <xsl:element name="{local-name()}"
> namespace="{namespace-uri()}"> instead.
>
> Michael Kay
> http://www.saxonica.com/

Current Thread