Add a namespace node to an element in XQuery

Posted by Florent Georges, on 2006-08-28, in xquery.

David Carlisle just sent me the way to add a namespace node to an element in XQuery. Here is his example:

declare function local:add-ns-node(
    $elem   as element(),
    $prefix as xs:string,
    $ns-uri as xs:string
  ) as element()
{
  element { QName($ns-uri, concat($prefix, ":x")) }{ $elem }/*
};

local:add-ns-node(<xxx><a/></xxx>, "p1", "uri2")

Run with Saxon 8.7.3 for Java, it results in:

<?xml version="1.0" encoding="UTF-8"?>
<xxx xmlns:p1="uri2">
   <a/>
</xxx>

The context of the discussion can be found in this thread (you'll have to go deep in the thread to see the David's post).

Maybe a candidate to an XQuery FAQ? Anyway, thanks David.

Posted by Florent Georges, on 2006-08-28T22:15:00, tag: xquery.