/* This file is part of the YAZ toolkit.
- * Copyright (C) 1995-2009 Index Data
+ * Copyright (C) 1995-2010 Index Data
* See the file LICENSE for details.
*/
/**
return add_xsd_string_ns(ptr, elem, val, 0);
}
-static void add_xsd_integer(xmlNodePtr ptr, const char *elem, const int *val)
+static void add_xsd_integer(xmlNodePtr ptr, const char *elem,
+ const Odr_int *val)
{
if (val)
{
- char str[30];
- sprintf(str, "%d", *val);
+ char str[40];
+ sprintf(str, ODR_INT_PRINTF, *val);
xmlNewTextChild(ptr, 0, BAD_CAST elem, BAD_CAST str);
}
}
return 1;
}
-static int match_xsd_integer(xmlNodePtr ptr, const char *elem, ODR o, int **val)
+static int match_xsd_integer(xmlNodePtr ptr, const char *elem, ODR o,
+ Odr_int **val)
{
#if CHECK_TYPE
struct _xmlAttr *attr;
ptr = ptr->children;
if (!ptr || ptr->type != XML_TEXT_NODE)
return 0;
- *val = odr_intdup(o, atoi((const char *) ptr->content));
+ *val = odr_intdup(o, odr_atoi((const char *) ptr->content));
return 1;
}
if (match_xsd_string(ptr, "version", o,
&(*p)->srw_version))
;
+ else if (match_xsd_XML_n(ptr, "extraResponseData", o,
+ &(*p)->extraResponseData_buf,
+ &(*p)->extraResponseData_len))
+ ;
else if (match_xsd_integer(ptr, "numberOfRecords", o,
&res->numberOfRecords))
;
if (match_xsd_string(ptr, "version", o,
&(*p)->srw_version))
;
+ else if (match_xsd_XML_n(ptr, "extraResponseData", o,
+ &(*p)->extraResponseData_buf,
+ &(*p)->extraResponseData_len))
+ ;
else if (match_xsd_string(ptr, "stylesheet", o,
&req->stylesheet))
;
if (match_xsd_string(ptr, "version", o,
&(*p)->srw_version))
;
+ else if (match_xsd_XML_n(ptr, "extraResponseData", o,
+ &(*p)->extraResponseData_buf,
+ &(*p)->extraResponseData_len))
+ ;
else if (match_element(ptr, "record"))
yaz_srw_record(o, ptr, &res->record, &res->extra_record,
client_data, ns);
if (match_xsd_string(ptr, "version", o,
&(*p)->srw_version))
;
+ else if (match_xsd_XML_n(ptr, "extraResponseData", o,
+ &(*p)->extraResponseData_buf,
+ &(*p)->extraResponseData_len))
+ ;
else if (match_xsd_string(ptr, "scanClause", o,
&req->scanClause.cql))
;
if (match_xsd_string(ptr, "version", o,
&(*p)->srw_version))
;
+ else if (match_xsd_XML_n(ptr, "extraResponseData", o,
+ &(*p)->extraResponseData_buf,
+ &(*p)->extraResponseData_len))
+ ;
else if (match_element(ptr, "terms"))
yaz_srw_terms(o, ptr, &res->terms,
&res->num_terms, client_data,
{
Z_SRW_PDU **p = handler_data;
xmlNsPtr ns_srw;
+ xmlNodePtr ptr = 0;
if ((*p)->which == Z_SRW_searchRetrieve_request)
{
Z_SRW_searchRetrieveRequest *req = (*p)->u.request;
- xmlNodePtr ptr = xmlNewChild(pptr, 0,
- BAD_CAST "searchRetrieveRequest", 0);
+ ptr = xmlNewChild(pptr, 0, BAD_CAST "searchRetrieveRequest", 0);
ns_srw = xmlNewNs(ptr, BAD_CAST ns, BAD_CAST "zs");
xmlSetNs(ptr, ns_srw);
else if ((*p)->which == Z_SRW_searchRetrieve_response)
{
Z_SRW_searchRetrieveResponse *res = (*p)->u.response;
- xmlNodePtr ptr = xmlNewChild(pptr, 0,
- BAD_CAST "searchRetrieveResponse", 0);
+ ptr = xmlNewChild(pptr, 0, BAD_CAST "searchRetrieveResponse", 0);
ns_srw = xmlNewNs(ptr, BAD_CAST ns, BAD_CAST "zs");
xmlSetNs(ptr, ns_srw);
else if ((*p)->which == Z_SRW_explain_request)
{
Z_SRW_explainRequest *req = (*p)->u.explain_request;
- xmlNodePtr ptr = xmlNewChild(pptr, 0, BAD_CAST "explainRequest",
- 0);
+ ptr = xmlNewChild(pptr, 0, BAD_CAST "explainRequest", 0);
ns_srw = xmlNewNs(ptr, BAD_CAST ns, BAD_CAST "zs");
xmlSetNs(ptr, ns_srw);
else if ((*p)->which == Z_SRW_explain_response)
{
Z_SRW_explainResponse *res = (*p)->u.explain_response;
- xmlNodePtr ptr = xmlNewChild(pptr, 0, BAD_CAST "explainResponse",
- 0);
+ ptr = xmlNewChild(pptr, 0, BAD_CAST "explainResponse", 0);
ns_srw = xmlNewNs(ptr, BAD_CAST ns, BAD_CAST "zs");
xmlSetNs(ptr, ns_srw);
else if ((*p)->which == Z_SRW_scan_request)
{
Z_SRW_scanRequest *req = (*p)->u.scan_request;
- xmlNodePtr ptr = xmlNewChild(pptr, 0, BAD_CAST "scanRequest", 0);
+ ptr = xmlNewChild(pptr, 0, BAD_CAST "scanRequest", 0);
ns_srw = xmlNewNs(ptr, BAD_CAST ns, BAD_CAST "zs");
xmlSetNs(ptr, ns_srw);
else if ((*p)->which == Z_SRW_scan_response)
{
Z_SRW_scanResponse *res = (*p)->u.scan_response;
- xmlNodePtr ptr = xmlNewChild(pptr, 0, BAD_CAST "scanResponse", 0);
+ ptr = xmlNewChild(pptr, 0, BAD_CAST "scanResponse", 0);
ns_srw = xmlNewNs(ptr, BAD_CAST ns, BAD_CAST "zs");
xmlSetNs(ptr, ns_srw);
}
else
return -1;
+ if (ptr && (*p)->extraResponseData_len)
+ add_XML_n(ptr, "extraResponseData",
+ (*p)->extraResponseData_buf,
+ (*p)->extraResponseData_len, ns_srw);
+
}
return 0;
/*
* Local variables:
* c-basic-offset: 4
+ * c-file-style: "Stroustrup"
* indent-tabs-mode: nil
* End:
* vim: shiftwidth=4 tabstop=8 expandtab