X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=src%2Fxmlquery.c;h=1c739209cfc292697f8ab4668c234830d3a4b174;hp=a66560b871f2deac9c33ef024edd4216830832a6;hb=ee6ab2ee3a9ee1a8c65d7272ec7fba1d886f5af0;hpb=8d691989077a0addcbd840d769dce6700f3d9622 diff --git a/src/xmlquery.c b/src/xmlquery.c index a66560b..1c73920 100644 --- a/src/xmlquery.c +++ b/src/xmlquery.c @@ -1,8 +1,6 @@ -/* - * Copyright (C) 1995-2007, Index Data ApS - * All rights reserved. - * - * $Id: xmlquery.c,v 1.12 2007-01-03 08:42:15 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 @@ -20,18 +18,19 @@ #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) @@ -228,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); } @@ -452,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); @@ -500,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, @@ -661,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; @@ -711,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, @@ -771,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);