Subject: Re: How do I force the XSLT processor to retain a namespace declaration despite an ancestor element having that same namespace declaration?
From: Andrew Welch <andrew.j.welch@xxxxxxxxx>
Date: Mon, 25 Jul 2011 18:34:26 +0100
|
On 25 July 2011 18:05, Costello, Roger L. <costello@xxxxxxxxx> wrote:
> Hi Folks,
>
> When this is evaluated:
>
> <test xmlns:xs="http://www.w3.org/2001/XMLSchema">
> <inner xmlns:xs="http://www.w3.org/2001/XMLSchema" type="xs:string"
/>
> </test>
>
> The output is this:
>
> <test xmlns:xs="http://www.w3.org/2001/XMLSchema">
> <inner type="xs:string" />
> </test>
>
> Notice that the namespace declaration on <inner> is gone.
>
> How do I force the XSLT processor to retain that namespace declaration and
not discard it? (I am passing the <inner> element to other functions that
don't have access to its surrounding elements, so I need that namespace
declaration retained.)
>
The key part here is how are you "passing the <inner> element to other
functions"?
In the parsed xml, the namespace is in scope on the inner element - if
you call in-scope-prefixes() you'll see 'xs' getting returned, so you
shouldn't need access to the surrounding elements.
If you are treating the xml as a string and just substringing or
regexing out the <inner> element, then you will run into problems like
this.
--
Andrew Welch
http://andrewjwelch.com
|