#include <libxml/parser.h>
#include <libxml/tree.h>
#include <assert.h>
-
+#include <yaz/facet.h>
#include "sru-p.h"
static void add_XML_n(xmlNodePtr ptr, const char *elem, char *val, int len,
return add_xsd_string_ns(ptr, elem, val, 0);
}
-static void add_xsd_integer(xmlNodePtr ptr, const char *elem,
+void add_xsd_integer(xmlNodePtr ptr, const char *elem,
const Odr_int *val)
{
if (val)
Z_SRW_searchRetrieveRequest *req;
char *recordPacking = 0;
char *recordXMLEscaping = 0;
+ const char *facetLimit = 0;
(*p)->which = Z_SRW_searchRetrieve_request;
req = (*p)->u.request = (Z_SRW_searchRetrieveRequest *)
else if (match_xsd_string(ptr, "stylesheet", o,
&req->stylesheet))
;
- else
- match_xsd_string(ptr, "database", o, &req->database);
+ else if (match_xsd_string(ptr, "database", o, &req->database))
+ ;
+ else if (match_xsd_string(ptr, "facetLimit", o,
+ (char**) &facetLimit))
+ ;
}
if (!req->query)
{
{
req->recordPacking = recordPacking;
}
+ yaz_sru_facet_request(o, &req->facetList, &facetLimit);
}
else if (!xmlStrcmp(method->name, BAD_CAST "searchRetrieveResponse"))
{
client_data, ns);
else if (match_element(ptr, "facet_analysis"))
yaz_sru_proxy_decode_facets(o, ptr, &res->facetList);
+ else if (match_element(ptr, "facetedResults"))
+ yaz_sru_facet_response(o, &res->facetList, ptr);
}
}
else if (!xmlStrcmp(method->name, BAD_CAST "explainRequest"))
ns_srw = xmlNewNs(ptr, BAD_CAST ns, BAD_CAST "zs");
xmlSetNs(ptr, ns_srw);
- if (!version2)
- add_xsd_string(ptr, "version", (*p)->srw_version);
-
+ add_xsd_string(ptr, "version", (*p)->srw_version);
if (version2)
{
if (queryType)
}
add_xsd_string(ptr, "stylesheet", req->stylesheet);
add_xsd_string(ptr, "database", req->database);
+ {
+ const char *limit = 0;
+ yaz_sru_facet_request(o, &req->facetList, &limit);
+ add_xsd_string(ptr, "facetLimit", limit);
+ }
}
else if ((*p)->which == Z_SRW_searchRetrieve_response)
{
ns_srw = xmlNewNs(ptr, BAD_CAST ns, BAD_CAST "zs");
xmlSetNs(ptr, ns_srw);
- if (!version2)
- add_xsd_string(ptr, "version", (*p)->srw_version);
+ add_xsd_string(ptr, "version", (*p)->srw_version);
add_xsd_integer(ptr, "numberOfRecords", res->numberOfRecords);
add_xsd_string(ptr, "resultSetId", res->resultSetId);
add_xsd_integer(ptr,
if (res->resultCountPrecision)
add_xsd_string(ptr, "resultCountPrecision",
res->resultCountPrecision);
+ yaz_sru_facet_response(o, &res->facetList, ptr);
}
else if ((*p)->which == Z_SRW_explain_request)
{
ns_srw = xmlNewNs(ptr, BAD_CAST ns, BAD_CAST "zs");
xmlSetNs(ptr, ns_srw);
- if (!version2)
- add_xsd_string(ptr, "version", (*p)->srw_version);
+ add_xsd_string(ptr, "version", (*p)->srw_version);
if (version2)
{
add_xsd_string(ptr, "recordXMLEscaping", req->recordPacking);
ns_srw = xmlNewNs(ptr, BAD_CAST ns, BAD_CAST "zs");
xmlSetNs(ptr, ns_srw);
- if (!version2)
- add_xsd_string(ptr, "version", (*p)->srw_version);
+ add_xsd_string(ptr, "version", (*p)->srw_version);
if (version2)
{
ns_srw = xmlNewNs(ptr, BAD_CAST ns, BAD_CAST "zs");
xmlSetNs(ptr, ns_srw);
- if (!version2)
- add_xsd_string(ptr, "version", (*p)->srw_version);
-
+ add_xsd_string(ptr, "version", (*p)->srw_version);
if (res->num_terms)
{
xmlNodePtr rptr = xmlNewChild(ptr, 0, BAD_CAST "terms", 0);