xml - Removing node using XQuery Update -
i trying remove child node parent node using xquery. say, have entry shown below in xml:
 <entry>         <id>36</id>         <title>engineering village author tool</title>         <updated>2009-09-30t12:55:42z</updated>         <libx:libapp>           <libx:entry xmlns:libx="http://libx.org/xml/libx2" src="37"/>         </libx:libapp>       </entry>   how delete child node
<libx:entry xmlns:libx="http://libx.org/xml/libx2" src="37"/>   i using following xquery code:
declare namespace libx='http://libx.org/xml/libx2'; declare namespace atom='http://www.w3.org/2005/atom'; declare variable $child_id xs:string external; declare variable $parent_id xs:string external; declare variable $doc_name xs:string external; declare variable $feed      xs:anyatomictype := doc($doc_name)/atom:feed; let $parent_entry := $feed/atom:entry[atom:id=$parent_id] return delete node $parent_entry//libx:entry[@libx:src=$child_id]   the values of variables passed here are: child_id = 37 parent_id = 36 doc_name = name of document being used
i guessing wrong either way using namespaces or xpath expression using in xquery @ line :
return delete node $parent_entry//libx:entry[@libx:src=$child_id]   please me fix this.
you declaring $feed xs:anyatomictype, setting , using node().
i'm suprised query compiles. try removing xs:anyatomictype or replacing element().
also want @src select child node, not @libx:src. so
declare namespace libx='http://libx.org/xml/libx2'; declare namespace atom='http://www.w3.org/2005/atom'; declare variable $child_id xs:string external; declare variable $parent_id xs:string external; declare variable $doc_name xs:string external; declare variable $feed := doc($doc_name)/atom:feed; let $parent_entry := $feed/atom:entry[atom:id=$parent_id] return delete node $parent_entry//libx:entry[@src=$child_id]      
Comments
Post a Comment