[xquery-talk] namespace questions
Uwe Küssner
UweKuessner at web.de
Mon May 8 14:32:05 PDT 2006
dear michael kay,
thank you for your answer, as far as I understand you, something like
let $x := element {QName('uri', 'local')} { 'content' }
return
<foo xmlns:sam="http://www.aaa.aaa/a">
{$x}
</foo>
should do the job. right ?
but the result is:
<foo>
<local>content</local>
</foo>
both namespaces are not present.
is it because i have to configure the serialization (with saxon),
as Martin Probst said ?
probst >his is a serialization issue and depends on the implementation you
probst >use. I.e. in X-Hive a simple .toString() on an XML element won't add
probst >XML namespace declarations, but you can always use an XML serializer
probst >and set DomConfiguration.FEATURE_NAMESPACES to true in its config.
thank you.
uwe kuessner
> -----Ursprüngliche Nachricht-----
> Von: "Michael Kay" <mhk at mhk.me.uk>
> Gesendet: 08.05.06 10:23:27
> An: <talk at xquery.com>
> Betreff: RE: [xquery-talk] namespace questions
> > I use the follwing xquery:
> >
> > declare namespace sam="http://www.aaa.aaa/a"; declare
> > namespace huhu="http://www.aaa.aaa/b"; let $extern := <a
> > namespace="huhu"/> return
> > <foo>
> > <sam:bar/>
> > {element {concat($extern/@namespace,":","ele")} {"text"}}
> > </foo>
> >
> > which generates:
> >
> > <foo>
> > <sam:bar/>
> > <huhu:ele>text</huhu:ele>
> > </foo>
> >
> > Questions:
> > 1. What is necessary to create the missing namespace
> > declarations xmlns:sam=http://www.aaa.aaa/a in the foo element ?
>
> Write <foo xmlns:sam="http://www.aaa.aaa/a"/>.
>
> There are two kinds of namespace declarations in XQuery. "declare namespace"
> defines a namespace binding that can be used anywhere in the query, but
> which is not copied into constructed elements. An xmlns="xyz" declaration in
> a direct element constructor defines a binding that can be used anywhere
> lexically within that element constructor, and which is also copied to the
> result element.
>
> > 2. If the second line (declare namespace
> > huhu=http://www.aaa.aaa/b; is missing ) there is a runtime
> > error. (Undeclared prefix in element name:huhu). If the
> > prefix huhu of the namespace is not known in advance, but
> > only at run time, is it still possible to construct a node
> > <huhu:ele> ?
>
> Yes, supply a value of type xs:QName(), which you can construct dynamically
> if you know the namespace URI and local name.
>
> element {QName('uri', 'local')} { content }
>
> Michael Kay
> http://www.saxonica.com/
>
More information about the talk
mailing list