(:~ : generate dotml from xqdoc source : apb Jan 2013 :) declare namespace doc = "http://www.xqdoc.org/1.0"; declare namespace dotml = "http://www.martin-loetzsch.de/DOTML"; declare namespace hash = "http://basex.org/modules/hash"; declare variable $ns-ignore := ("http://www.w3.org/2005/xpath-functions", "http://www.w3.org/2010/xslt-xquery-serialization", "http://www.w3.org/2001/XMLSchema", "http://www.w3.org/2005/xpath-functions/math"); declare function local:sid($s as xs:string) as xs:string { "A" || xs:hexBinary(hash:md5($s)) }; declare function local:fid($uri as xs:string, $name as xs:string, $arity as xs:string) { let $a := fn:trace(($uri || "*" || $name || "*" || $arity), "fid: ") return "A" || xs:hexBinary(hash:md5($uri || $name || $arity)) }; declare function local:foo($dml) { let $moduri := $dml/doc:xqdoc/doc:module/doc:uri/fn:string() return { for $import in $dml//doc:import let $ns := $import/doc:uri/fn:string() where some $call in $dml//doc:invoked satisfies $call/doc:uri = $import/doc:uri return { for $call in $dml//doc:invoked[doc:uri = $import/doc:uri] return } } { for $f in $dml//doc:function return , for $v in $dml//doc:variable return } { for $call in $dml//doc:invoked let $f := $call/.. where not($call/doc:name/@uri/fn:string() = $ns-ignore) return } }; let $a := local:foo(/) (: : let $req:= : data={fn:encode-for-uri(fn:serialize($a))} : : let $ws:= : http:send-request($req,"http://localhost:8984/restxq/graphxq/api/dotml") : return file:write("aa.svg",$ws[2]) :) return $a