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

Reply via email to