X-Git-Url: http://sru.miketaylor.org.uk/?a=blobdiff_plain;f=src%2Ffilter_zoom.cpp;h=ff73e19ecfcd345d23cf75ba890863292d56124f;hb=d09aef2b0f7bd651a1132750144cb9d1460dca91;hp=533da78eb2c6818f547efef0e412b6336b7c4312;hpb=2ecb988a6ef95fe9d982f50f933626d7695e397e;p=metaproxy-moved-to-github.git diff --git a/src/filter_zoom.cpp b/src/filter_zoom.cpp index 533da78..ff73e19 100644 --- a/src/filter_zoom.cpp +++ b/src/filter_zoom.cpp @@ -66,6 +66,7 @@ namespace metaproxy_1 { std::string element_set; std::string record_encoding; std::string transform_xsl_fname; + std::string transform_xsl_content; std::string urlRecipe; std::string contentConnector; bool use_turbomarc; @@ -466,6 +467,11 @@ yf::Zoom::SearchablePtr yf::Zoom::Impl::parse_torus_record(const xmlNode *ptr) s->transform_xsl_fname = mp::xml::get_text(ptr); } else if (!strcmp((const char *) ptr->name, + "literalTransform")) + { + s->transform_xsl_content = mp::xml::get_text(ptr); + } + else if (!strcmp((const char *) ptr->name, "urlRecipe")) { s->urlRecipe = mp::xml::get_text(ptr); @@ -699,7 +705,29 @@ yf::Zoom::BackendPtr yf::Zoom::Frontend::get_backend_from_databases( } xsltStylesheetPtr xsp = 0; - if (sptr->transform_xsl_fname.length()) + if (sptr->transform_xsl_content.length()) + { + xmlDoc *xsp_doc = xmlParseMemory(sptr->transform_xsl_content.c_str(), + sptr->transform_xsl_content.length()); + if (!xsp_doc) + { + *error = YAZ_BIB1_TEMPORARY_SYSTEM_ERROR; + *addinfo = (char *) odr_malloc(odr, 40); + sprintf(*addinfo, "xmlParseMemory failed"); + BackendPtr b; + return b; + } + xsp = xsltParseStylesheetDoc(xsp_doc); + if (!xsp) + { + *error = YAZ_BIB1_DATABASE_DOES_NOT_EXIST; + *addinfo = odr_strdup(odr, "xsltParseStylesheetDoc failed"); + BackendPtr b; + xmlFreeDoc(xsp_doc); + return b; + } + } + else if (sptr->transform_xsl_fname.length()) { const char *path = 0;