[xquery-talk] Constructing namespace nodes
David Lee
dlee at calldei.com
Sun Feb 6 12:59:17 PST 2011
I am fairly sure I have answered my own question, but I still can't believe
it.
So maybe I'm missing something obvious.
Using XQuery
I need to create an XML file (in this case an XSLT file) with namespaces
declared in the root node that are dynamically constructed.
I'd *like* to do something like this (which doesn't work .)
<transform>
{ for $n in $my_namespaces
return attribute { concat("xmlns:" , $n/@prefix ) } {
$n/@uri }
}
.
In this case the list of namespaces needed is *not* available as a static
context in the XQuery.
The best I've done so far is to create bogus attributes in a computed
namespace.
Actual code :
document {
<xsl:stylesheet version="2.0" >
{
for $ns in $common:nsmap//ns
return
attribute { fn:QName($ns/@uri, concat($ns/@prefix,":bogus"))} {}
}
..
}
This creates a bunch of "bogus" attributes and as a side effect also creates
their namespace declarations.
Like this:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ns1="http://www.w3.org/2001/XMLSchema"
xmlns:ns2="http://www.xmlsh.org/jxml"
version="2.0"
ns1:bogus=""
ns2:bogus="">
The typical case I've seen documented is to simply create the elements you
need in the right namespace then namespace nodes get created properly.
This works fine *IF* you are creating elements or attributes. But in my
case I am creating the dreaded QNames in Conent.
e.g XSLT Match expressions with prefixes . so there are no actual elements
or attributers with the namespaces.
My question . is there a 'better' way of creating apparently unused
namespace nodes using XQuery based on runtime data ?
Thanks for any suggestions.
Fortunately this "hack" actually works with XSLT as it ignores the bogus
attributes . but if I were having to do this for another document type it
may not.
----------------------------------------
David A. Lee
<mailto:dlee at calldei.com> dlee at calldei.com
<http://www.xmlsh.org> http://www.xmlsh.org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://x-query.com/pipermail/talk/attachments/20110206/a5f53368/attachment.htm
More information about the talk
mailing list