(:~ : 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 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){ "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