}
else if (sr->which == Z_SRW_explain_request)
{
- Z_SRW_PDU *res = yaz_srw_get_pdu(o, Z_SRW_explain_response,
- sr->srw_version);
+ Z_SRW_PDU *res = yaz_srw_get_pdu_e(o, Z_SRW_explain_response, sr);
stylesheet = sr->u.explain_request->stylesheet;
if (num_diagnostic)
{
}
else if (sr->which == Z_SRW_scan_request)
{
- Z_SRW_PDU *res = yaz_srw_get_pdu(o, Z_SRW_scan_response,
- sr->srw_version);
+ Z_SRW_PDU *res = yaz_srw_get_pdu_e(o, Z_SRW_scan_response, sr);
stylesheet = sr->u.scan_request->stylesheet;
if (num_diagnostic)
{
yaz_srw_record(o, ptr1, &res->record, &res->extra_record,
client_data, version2);
}
+ if ((*p)->extra_args)
+ {
+ xmlNode *p1 =
+ xmlNewChild(ptr, 0, BAD_CAST "echoedExplainRequest", 0);
+ Z_SRW_extra_arg *ea = (*p)->extra_args;
+ for (; ea; ea = ea->next)
+ add_xsd_string(p1, ea->name, ea->value);
+ }
if (res->num_diagnostics)
{
xmlNodePtr rptr = xmlNewChild(ptr, 0, BAD_CAST "diagnostics",
operation = "searchRetrieve";
else if (scanClause)
operation = "scan";
+ else
+ operation = "explain";
}
version = yaz_negotiate_sru_version(version);
if (req->u.request->sort_type == Z_SRW_sort_type_sort)
l = append_extra_arg(o, l, "sortKeys",
req->u.request->sort.sortKeys);
+ l = append_extra_arg(o, l, "stylesheet", req->u.request->stylesheet);
+
+ }
+ if (req->which == Z_SRW_explain_request &&
+ which == Z_SRW_explain_response)
+ {
+ Z_SRW_extra_arg **l = &res->extra_args;
+ l = append_extra_arg(o, l, "version", req->srw_version);
+ l = append_extra_arg(o, l, "stylesheet",
+ req->u.explain_request->stylesheet);
}
return res;
}