zoom: new config element passthru
authorAdam Dickmeiss <adam@indexdata.dk>
Wed, 10 Oct 2012 11:51:01 +0000 (13:51 +0200)
committerAdam Dickmeiss <adam@indexdata.dk>
Wed, 10 Oct 2012 11:51:01 +0000 (13:51 +0200)
This defines an element that is passed verbatim to the backend -
in pz2 mode.

etc/config-zoom.xml
src/filter_zoom.cpp
xml/schema/filter_zoom.rnc

index b472d4f..ea44457 100644 (file)
@@ -14,6 +14,7 @@
             xsldir="."
             element_transform="pz2"
             element_raw="raw"
+            element_passthru="F"
             explain_xsl="torus2zeerex.xsl"
             record_xsl="pz2dc.xsl"
            >
index 95a444b..95e2b36 100644 (file)
@@ -227,6 +227,7 @@ namespace metaproxy_1 {
             CCL_bibset bibset;
             std::string element_transform;
             std::string element_raw;
+            std::string element_passthru;
             std::string proxy;
             xsltStylesheetPtr explain_xsp;
             xsltStylesheetPtr record_xsp;
@@ -473,7 +474,8 @@ void yf::Zoom::Impl::release_frontend(mp::Package &package)
 }
 
 yf::Zoom::Impl::Impl() :
-    apdu_log(false), element_transform("pz2") , element_raw("raw"),
+    apdu_log(false), element_transform("pz2") , element_raw("raw") ,
+    element_passthru("F"),
     zoom_timeout("40"), proxy_timeout(1)
 {
     bibset = ccl_qual_mk();
@@ -700,6 +702,8 @@ void yf::Zoom::Impl::configure(const xmlNode *ptr, bool test_only,
                     element_transform = mp::xml::get_text(attr->children);
                 else if (!strcmp((const char *) attr->name, "element_raw"))
                     element_raw = mp::xml::get_text(attr->children);
+                else if (!strcmp((const char *) attr->name, "element_passthru"))
+                    element_passthru = mp::xml::get_text(attr->children);
                 else if (!strcmp((const char *) attr->name, "proxy"))
                     proxy = mp::xml::get_text(attr->children);
                 else if (!strcmp((const char *) attr->name, "explain_xsl"))
@@ -1503,9 +1507,15 @@ void yf::Zoom::Frontend::prepare_elements(BackendPtr b,
 
     if (enable_pz2_retrieval)
     {
-        element_set_name = 0;
-        if (b->sptr->element_set.length())
-            element_set_name = b->sptr->element_set.c_str();
+        if (element_set_name && !strcmp(element_set_name,
+                                        m_p->element_passthru.c_str()))
+            ;
+        else
+        {
+            element_set_name = 0;
+            if (b->sptr->element_set.length())
+                element_set_name = b->sptr->element_set.c_str();
+        }
     }
 
     b->set_option("elementSetName", element_set_name);
index 8d440e2..28696cf 100644 (file)
@@ -14,6 +14,7 @@ filter_zoom =
     attribute xsldir { xsd:string }?,
     attribute element_transform { xsd:string }?,
     attribute element_raw { xsd:string }?,
+    attribute element_passthru { xsd:string }?,
     attribute proxy { xsd:string }?,
     attribute explain_xsl { xsd:string }?,
     attribute record_xsl { xsd:string }?,