xquery version "1.0"; (: update or insert the person data posted from the XForm generated by editPerson and return the person data, Posted string needs to be converted to XML :) declare option exist:serialize "method=xml omit-xml-declaration=yes indent=yes media-type=text/xml"; declare namespace request="http://exist-db.org/xquery/request"; declare namespace util="http://exist-db.org/xquery/util"; declare function local:get-post-xml() { let $input := request:get-request-data() (: get raw post string :) let $input := replace($input,'<\?.*\?>','') (: get rid of the xml pi :) let $input := replace($input,'xmlns="[^"]*"','') (: get rid of namespaces :) return util:eval($input) (: convert to XML nodes :) }; let $person := local:get-post-xml()/person let $name:= $person/name let $people := doc('/db/chriswallace/xforms/people.xml')/personList let $sperson := $people/person[name=$name] let $x := if ($sperson) then update replace $sperson with $person else update insert $person into $people return {$person}