diff software/eXist/webapp/mpdl/_stuff/oxygen-projects/monte-project/text/all.xql @ 7:5589d865af7a

Erstellung XQL/XSL Applikation
author Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
date Tue, 08 Feb 2011 15:16:46 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/software/eXist/webapp/mpdl/_stuff/oxygen-projects/monte-project/text/all.xql	Tue Feb 08 15:16:46 2011 +0100
@@ -0,0 +1,48 @@
+xquery version "1.0";
+
+module namespace mpdl-text = "http://www.mpiwg-berlin.mpg.de/ns/mpdl/text"; 
+
+declare namespace text = "http://exist-db.org/xquery/text";
+declare namespace util = "http://exist-db.org/xquery/util";
+declare namespace local = "http://www.mpiwg-berlin.mpg.de/ns/mpdl/local";
+
+declare function mpdl-text:indexTerms($document, $indexTermsStartStr, $pn as xs:int, $pageSize as xs:int) as node()* {
+  let $index := $document/archimedes/text
+  let $language := $document/archimedes/info/lang
+  let $from := ($pn * $pageSize) - $pageSize + 1
+  let $to := $pn * $pageSize
+  let $maxTo := 10000
+  let $callback := util:function(QName("http://www.mpiwg-berlin.mpg.de/ns/mpdl/local", "local:termEntries"), 2)
+  let $indexResult := text:index-terms($index, $indexTermsStartStr, $callback, $maxTo)
+  let $count := count($indexResult)
+  let $pages := 
+    if ($count = 0)
+    then 0
+    else $count idiv $pageSize + 1
+  let $resultEntries := 
+    for $entry at $pos in $indexResult
+    where $pos >= $from and $pos <= $to
+    return $entry
+
+  let $result :=
+      <index-terms>
+        <start-string>{$indexTermsStartStr}</start-string>
+        <size>{$count}</size>
+        <pages>{$pages}</pages>
+        <pn>{$pn}</pn>
+        {$resultEntries}
+      </index-terms>
+  return $result
+};
+
+declare function local:termEntries($term as xs:string, $data as xs:int+) {
+  let $result := 
+    <entry>  
+       <term>{$term}</term>  
+       <frequency>{$data[1]}</frequency>  
+       <documents>{$data[2]}</documents>  
+       <position>{$data[3]}</position>  
+       <rank>{$data[4]}</rank>  
+     </entry>  
+  return $result
+};