(:~
: 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