X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=src%2Fxmlquery.c;h=1c739209cfc292697f8ab4668c234830d3a4b174;hp=62ebd7fbdfc58cb02efd0ef2a055fb2cc2db97f5;hb=ee6ab2ee3a9ee1a8c65d7272ec7fba1d886f5af0;hpb=fc6d778b923000b5c6ad8e108b0b184178a9d33f diff --git a/src/xmlquery.c b/src/xmlquery.c index 62ebd7f..1c73920 100644 --- a/src/xmlquery.c +++ b/src/xmlquery.c @@ -1,8 +1,6 @@ -/* - * Copyright (C) 1995-2006, Index Data ApS - * All rights reserved. - * - * $Id: xmlquery.c,v 1.10 2006-07-06 10:17:54 adam Exp $ +/* This file is part of the YAZ toolkit. + * Copyright (C) 1995-2008 Index Data + * See the file LICENSE for details. */ /** \file xmlquery.c @@ -19,18 +17,20 @@ #include #include +#include +#include void yaz_query2xml_attribute_element(const Z_AttributeElement *element, xmlNodePtr parent) { char formstr[30]; const char *setname = 0; + char oid_name_str[OID_STR_MAX]; if (element->attributeSet) { - oident *attrset; - attrset = oid_getentbyoid (element->attributeSet); - setname = attrset->desc; + setname = yaz_oid_to_string_buf(element->attributeSet, + 0, oid_name_str); } if (element->which == Z_AttributeValue_numeric) @@ -227,9 +227,14 @@ xmlNodePtr yaz_query2xml_rpnstructure(const Z_RPNStructure *zs, xmlNodePtr yaz_query2xml_rpn(const Z_RPNQuery *rpn, xmlNodePtr parent) { - oident *attrset = oid_getentbyoid (rpn->attributeSetId); - if (attrset && attrset->value) - xmlNewProp(parent, BAD_CAST "set", BAD_CAST attrset->desc); + if (rpn->attributeSetId) + { + char oid_name_str[OID_STR_MAX]; + const char *setname = yaz_oid_to_string_buf(rpn->attributeSetId, + 0, oid_name_str); + if (setname) + xmlNewProp(parent, BAD_CAST "set", BAD_CAST setname); + } return yaz_query2xml_rpnstructure(rpn->RPNStructure, parent); } @@ -451,8 +456,10 @@ void yaz_xml2query_attribute_element(const xmlNode *ptr, *elem = (Z_AttributeElement *) odr_malloc(odr, sizeof(**elem)); if (set) - (*elem)->attributeSet = yaz_str_to_z3950oid(odr, CLASS_ATTSET, - (const char *)set); + (*elem)->attributeSet = yaz_string_to_oid_odr(yaz_oid_std(), + CLASS_ATTSET, + (const char *) set, + odr); else (*elem)->attributeSet = 0; (*elem)->attributeType = intVal(odr, (const char *) type); @@ -499,7 +506,7 @@ void yaz_xml2query_attribute_element(const xmlNode *ptr, char *strVal(const xmlNode *ptr_cdata, ODR odr) { - return nmem_text_node_cdata(ptr_cdata, odr->mem); + return nmem_text_node_cdata(ptr_cdata, odr_getmem(odr)); } void yaz_xml2query_term(const xmlNode *ptr, @@ -660,7 +667,7 @@ void yaz_xml2query_rpnstructure(const xmlNode *ptr, Z_RPNStructure **zs, *zs = (Z_RPNStructure *) odr_malloc(odr, sizeof(Z_RPNStructure)); if (!xmlStrcmp(ptr->name, BAD_CAST "operator")) { - Z_Complex *zc = odr_malloc(odr, sizeof(Z_Complex)); + Z_Complex *zc = (Z_Complex *) odr_malloc(odr, sizeof(Z_Complex)); (*zs)->which = Z_RPNStructure_complex; (*zs)->u.complex = zc; @@ -710,7 +717,8 @@ void yaz_xml2query_rpn(const xmlNode *ptr, Z_RPNQuery **query, ODR odr, *query = (Z_RPNQuery*) odr_malloc(odr, sizeof(Z_RPNQuery)); if (set) - (*query)->attributeSetId = yaz_str_to_z3950oid(odr, CLASS_ATTSET, set); + (*query)->attributeSetId = yaz_string_to_oid_odr(yaz_oid_std(), + CLASS_ATTSET, set, odr); else (*query)->attributeSetId = 0; yaz_xml2query_rpnstructure(ptr->children, &(*query)->RPNStructure, @@ -770,7 +778,7 @@ static void yaz_xml2query_(const xmlNode *ptr, Z_Query **query, ODR odr, } } -void yaz_xml2query(const void *xmlnodep, Z_Query **query, ODR odr, +void yaz_xml2query(const xmlNode *xmlnodep, Z_Query **query, ODR odr, int *error_code, const char **addinfo) { yaz_xml2query_(xmlnodep, query, odr, error_code, addinfo);