Supply marcxml as raw content
authorAdam Dickmeiss <adam@indexdata.dk>
Mon, 16 Jun 2014 10:30:05 +0000 (12:30 +0200)
committerAdam Dickmeiss <adam@indexdata.dk>
Mon, 16 Jun 2014 10:30:05 +0000 (12:30 +0200)
Instead of having to create a (temporary) file.

src/marcxml_raw.patch [new file with mode: 0644]
src/metaproxy_filter_xquery.cpp

diff --git a/src/marcxml_raw.patch b/src/marcxml_raw.patch
new file mode 100644 (file)
index 0000000..57fd0b0
--- /dev/null
@@ -0,0 +1,17 @@
+diff --git a/xbin/zorba3-0.xqy b/xbin/zorba3-0.xqy
+index ba07c2e..481950f 100644
+--- a/xbin/zorba3-0.xqy
++++ b/xbin/zorba3-0.xqy
+@@ -212,7 +212,11 @@ let $marcxml :=
+         let $json := http:get($marcxmluri)
+         return parsexml:parse($json("body")("content"), <parseoptions:options/>)
+     else
+-        let $raw-data as xs:string := file:read-text($marcxmluri)
++        let $raw-data :=
++            if ( fn:starts-with($marcxmluri, "raw:" ) ) then
++                fn:substring($marcxmluri, 5)
++            else
++                file:read-text($marcxmluri)
+         let $mxml := parsexml:parse(
+                     $raw-data, 
+                     <parseoptions:options />
index 994139f..51afacd 100644 (file)
@@ -98,9 +98,8 @@ bool yf::XQuery::convert_one_record(const char *input_buf,
         lItem = lZorba->getItemFactory()->createString(it->second);
         lDynamicContext->setVariable(it->first, lItem);
     }
-    // TODO: Make tmp file here
-    lItem = lZorba->getItemFactory()->createString(
-        "/home/adam/proj/yaz/test/marc7.xml");
+    std::string rec_content = "raw:" + std::string(input_buf, input_len);
+    lItem = lZorba->getItemFactory()->createString(rec_content);
     lDynamicContext->setVariable(zorba_record_variable, lItem);
 
     std::stringstream ss;