Hi,
I need to add prefixes to all element nodes(parent and child elements)
*Input Xml:*
<Repeater>
<ItemTemplate>
<Button>
</Button>
</ItemTemplate>
</Repeater>
*Desired Output:*
**
<asp:Repeater>
<asp:ItemTemplate>
<asp:Button>
</asp:Button>
</asp:ItemTemplate>
</asp:Repeater>
Please find the below function for the same.
declare namespace asp="http://asp"
define function prefixadd($node)
{
if($node instance of element()) then
if (empty(getchildnodes($node))) then (
addnamespace($node)
)
else
(
for $c at $j in getchildnodes($node)
return
(
prefixadd($c )
)
else if($node instance of text()) then ()
else ()
}
define function getchildnodes($node)
{
let $childnodes := for $i in $node/child::node()
return if($i instance of element()) then $i else ()
return $childnodes
}
define function addnamespace($node)
{
let $node-name := fn:node-name($node)
let $prefix := fn:prefix-from-QName($node-name)
let $lname := fn:get-local-name-from-QName($node-name)
return (if ($prefix) then () else
(xdmp:set($node,xdmp:unquote(replace(xdmp:quote($node),name($node),concat('asp:',name($node)))))),
$node)
}
I'm able to prefix the namespace only at a single level. But i want it to be
prefixed at all levels.
Kindly help with this
Thanks,
Prassu
_______________________________________________
General mailing list
[email protected]
http://xqzone.com/mailman/listinfo/general