+ add_xsd_string(ptr, "version", (*p)->srw_version);
+ if (1)
+ {
+ xmlNodePtr ptr1 = xmlNewChild(ptr, 0, "record", 0);
+ yaz_srw_record(o, ptr1, &res->record, client_data, ns);
+ }
+ if (res->num_diagnostics)
+ {
+ xmlNodePtr rptr = xmlNewChild(ptr, 0, "diagnostics", 0);
+ yaz_srw_diagnostics(o, rptr, &res->diagnostics,
+ &res->num_diagnostics, client_data, ns);
+ }
+ }
+ else if ((*p)->which == Z_SRW_scan_request)
+ {
+ Z_SRW_scanRequest *req = (*p)->u.scan_request;
+ xmlNodePtr ptr = xmlNewChild(pptr, 0, "scanRequest", 0);
+ ns_srw = xmlNewNs(ptr, ns, "zs");
+ xmlSetNs(ptr, ns_srw);
+
+ add_xsd_string(ptr, "version", (*p)->srw_version);
+ add_xsd_string(ptr, "scanClause", req->scanClause);
+ add_xsd_integer(ptr, "responsePosition", req->responsePosition);
+ add_xsd_integer(ptr, "maximumTerms", req->maximumTerms);
+ add_xsd_string(ptr, "stylesheet", req->stylesheet);
+ }
+ else if ((*p)->which == Z_SRW_scan_response)
+ {
+ Z_SRW_scanResponse *res = (*p)->u.scan_response;
+ xmlNodePtr ptr = xmlNewChild(pptr, 0, "scanResponse", 0);
+ ns_srw = xmlNewNs(ptr, ns, "zs");
+ xmlSetNs(ptr, ns_srw);
+
+ add_xsd_string(ptr, "version", (*p)->srw_version);
+
+ if (res->num_terms)
+ {
+ xmlNodePtr rptr = xmlNewChild(ptr, 0, "terms", 0);
+ yaz_srw_terms(o, rptr, &res->terms, &res->num_terms,
+ client_data, ns);
+ }
+ if (res->num_diagnostics)
+ {
+ xmlNodePtr rptr = xmlNewChild(ptr, 0, "diagnostics", 0);
+ yaz_srw_diagnostics(o, rptr, &res->diagnostics,
+ &res->num_diagnostics, client_data, ns);
+ }