xsl-list
[Top] [All Lists]

Re: [xsl] How do I force the XSLT processor to retain a namespace declaration despite an ancestor element having that same namespace declaration?

2011-07-25 12:34:38
On 25 July 2011 18:05, Costello, Roger L. <costello(_at_)mitre(_dot_)org> 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

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--