X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=zutil%2Fsrw.c;h=d77cd653b0dfdcd0336c64cf579433e4f0a45f72;hp=68f79125d312783970767a816d7522911fe70dd4;hb=6bffc65936ba634077acb9f42ace217bc4737539;hpb=a834d92665e792c011e86d5603968ab31237575a diff --git a/zutil/srw.c b/zutil/srw.c index 68f7912..d77cd65 100644 --- a/zutil/srw.c +++ b/zutil/srw.c @@ -2,7 +2,7 @@ * Copyright (c) 2002-2003, Index Data. * See the file LICENSE for details. * - * $Id: srw.c,v 1.11 2003-03-23 20:27:16 adam Exp $ + * $Id: srw.c,v 1.12 2003-03-24 22:26:51 adam Exp $ */ #include @@ -373,6 +373,7 @@ int yaz_srw_codec(ODR o, void * vptr, Z_SRW_PDU **handler_data, { Z_SRW_PDU **p = handler_data; Z_SRW_explainResponse *res; + xmlNodePtr ptr = method->children; *p = odr_malloc(o, sizeof(**p)); (*p)->which = Z_SRW_explain_response; @@ -380,8 +381,12 @@ int yaz_srw_codec(ODR o, void * vptr, Z_SRW_PDU **handler_data, res->explainData_buf = 0; res->explainData_len = 0; res->explainPacking = Z_SRW_recordPacking_string; - match_xsd_string_n(method, "explainResponse", o, - &res->explainData_buf, &res->explainData_len); + for (; ptr; ptr = ptr->next) + { + match_xsd_string_n(ptr, "Explain", o, + &res->explainData_buf, + &res->explainData_len); + } } else return -1; @@ -469,12 +474,8 @@ int yaz_srw_codec(ODR o, void * vptr, Z_SRW_PDU **handler_data, xmlSetNs(ptr, ns_srw); - if (res->explainData_buf) - { - xmlNodePtr t = xmlNewTextLen(res->explainData_buf, - res->explainData_len); - xmlAddChild(ptr, t); - } + add_xsd_string_n(ptr, "Explain", res->explainData_buf, + res->explainData_len); } else return -1;