* Copyright (c) 2002-2003, Index Data.
* See the file LICENSE for details.
*
- * $Id: srw.c,v 1.12 2003-03-24 22:26:51 adam Exp $
+ * $Id: srw.c,v 1.15 2003-05-12 22:36:10 adam Exp $
*/
#include <yaz/srw.h>
{
return match_xsd_string_n(ptr, elem, o, val, 0);
}
+
+static int match_xsd_XML_n(xmlNodePtr ptr, const char *elem, ODR o,
+ char **val, int *len)
+{
+ xmlBufferPtr buf;
+
+ if (!match_element(ptr, elem))
+ return 0;
+ ptr = ptr->children;
+ if (!ptr)
+ return 0;
+ buf = xmlBufferCreate();
+
+ xmlNodeDump(buf, ptr->doc, ptr, 0, 0);
+
+ *val = odr_malloc(o, buf->use+1);
+ memcpy (*val, buf->content, buf->use);
+ (*val)[buf->use] = '\0';
+
+ if (len)
+ *len = buf->use;
+
+ xmlBufferFree(buf);
+
+ return 1;
+}
+
static int match_xsd_integer(xmlNodePtr ptr, const char *elem, ODR o, int **val)
{
&(*recs)[i].recordData_buf,
&(*recs)[i].recordData_len))
;
+ else if (match_xsd_XML_n(rptr, "recordXML", o,
+ &(*recs)[i].recordData_buf,
+ &(*recs)[i].recordData_len))
+ (*recs)[i].recordPacking = Z_SRW_recordPacking_XML;
else if (match_xsd_integer(rptr, "recordPosition", o,
&(*recs)[i].recordPosition))
;
}
else if ((*p)->which == Z_SRW_explain_request)
{
- Z_SRW_explainRequest *req = (*p)->u.explain_request;
xmlNodePtr ptr = xmlNewChild(pptr, 0, "explainRequest", 0);
xmlNsPtr ns_srw = xmlNewNs(ptr, ns, "zs");