* Copyright (c) 2002-2004, Index Data.
* See the file LICENSE for details.
*
- * $Id: srw.c,v 1.19 2004-01-27 12:15:12 adam Exp $
+ * $Id: srw.c,v 1.25 2004-03-17 18:43:35 adam Exp $
*/
#include <yaz/srw.h>
xmlNodePtr add_xsd_string(xmlNodePtr ptr, const char *elem, const char *val)
{
if (val)
- return xmlNewChild(ptr, 0, elem, val);
+ return xmlNewTextChild(ptr, 0, elem, val);
return 0;
}
{
char str[30];
sprintf(str, "%d", *val);
- xmlNewChild(ptr, 0, elem, str);
+ xmlNewTextChild(ptr, 0, elem, str);
}
}
if (!match_element(ptr, elem))
return 0;
ptr = ptr->children;
- while (ptr && ptr->type != XML_TEXT_NODE && ptr->type != XML_COMMENT_NODE)
+ while (ptr && (ptr->type == XML_TEXT_NODE || ptr->type == XML_COMMENT_NODE))
ptr = ptr->next;
if (!ptr)
return 0;
*recs = odr_malloc(o, *num * sizeof(**recs));
for (i = 0; i < *num; i++)
{
- (*recs)[i].code = 0;
+ (*recs)[i].uri = 0;
(*recs)[i].details = 0;
(*recs)[i].message = 0;
}
!strcmp(ptr->name, "diagnostic"))
{
xmlNodePtr rptr;
- (*recs)[i].code = 0;
+ (*recs)[i].uri = 0;
(*recs)[i].details = 0;
(*recs)[i].message = 0;
for (rptr = ptr->children; rptr; rptr = rptr->next)
{
- if (match_xsd_string(rptr, "code", o,
- &(*recs)[i].code))
+ if (match_xsd_string(rptr, "uri", o,
+ &(*recs)[i].uri))
;
else if (match_xsd_string(rptr, "details", o,
&(*recs)[i].details))
{
int i;
xmlNsPtr ns_diag =
- xmlNewNs(pptr, "http://www.loc.gov/zing/srw/diagnostics/", "diag");
+ xmlNewNs(pptr, "info:srw/schema/1/diagnostic-v1.1", 0);
for (i = 0; i < *num; i++)
{
- const char *std_diag = "info:srw/diagnostic/1/1/";
+ const char *std_diag = "info:srw/diagnostic/1/";
xmlNodePtr rptr = xmlNewChild(pptr, ns_diag, "diagnostic", 0);
- add_xsd_string(rptr, "code", (*recs)[i].code);
+ add_xsd_string(rptr, "uri", (*recs)[i].uri);
if ((*recs)[i].message)
add_xsd_string(rptr, "message", (*recs)[i].message);
- else if ((*recs)[i].code &&
- !strncmp((*recs)[i].code, std_diag, strlen(std_diag)))
+ else if ((*recs)[i].uri &&
+ !strncmp((*recs)[i].uri, std_diag, strlen(std_diag)))
{
- int no = atoi((*recs)[i].code + strlen(std_diag));
+ int no = atoi((*recs)[i].uri + strlen(std_diag));
const char *message = yaz_diag_srw_str(no);
if (message)
add_xsd_string(rptr, "message", message);