RE: Requirement: Dynamically add namespaces to new created elements.

This is a workaround (it depends on copy-namespaces mode being set to the
default value of "inherit, preserve") - but it doesn't alter the fact that
there's a requirement here which we ought to take on board for XQuery 2.0.

Saxon incidentally has a saxon:namespace-node() extension function to fill
this gap.

Michael Kay
http://www.saxonica.com/ 


> -----Original Message-----
> From: public-qt-comments-request@w3.org 
> [mailto:public-qt-comments-request@w3.org] On Behalf Of David Carlisle
> Sent: 21 February 2006 12:10
> To: ihr@xbrl.org
> Cc: public-qt-comments@w3.org
> Subject: Re: Requirement: Dynamically add namespaces to new 
> created elements.
> 
> 
> 
> 
>   Looking at the current XQuery spec 1.0 I realized that it 
> is not possible to
>   dynamically create a namespace declaration to an element 
> when you are
>   dynamically creating the element or when using a QName as 
> element content.
> 
> If I understand your example can't you just copy the measure element
> from your input (the namespace declaration will be added by the
> serialiser). If you do need to generate an in-scope namespace from
> scratch from a namespace that is neither in the source file nor query,
> it's true that XQuery doesn't have an analogue of XSLT's xsl:namespace
> instruction but it is still possible. Consider for example 
> the following
> function which generates an element with specified name and a 
> namespace
> declaration with a specifed prefix and URI.
> 
> It's called with three string literals below and generates
> <foobar xmlns:x="http://example.org"/>
> but of course the three parameters could be any string-valued
> expressions.
> 
> David
> 
> 
> 
> 
> declare function local:f ($elem as xs:string,$prefix as 
> xs:string,$ns as xs:string) as element() {
> element {QName($ns,concat($prefix,":wibble"))}{
> element {$elem}{}
> }/*};
> 
> 
> 
> local:f("foobar","x","http://example.org")
> 
> 
> 
> ______________________________________________________________
> __________
> This e-mail has been scanned for all viruses by Star. 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
> ______________________________________________________________
> __________
> 
> 

Received on Tuesday, 21 February 2006 12:59:37 UTC