X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=src%2Fcclxmlconfig.c;h=37f0bbe98d0206e6a56045a5617dcce88c536edc;hp=7d205bbfca09ac17efa3cc916c97355259b32a3c;hb=5a3e6fa63181ab4afa8bce5f01c6de016a333334;hpb=ffe862e36b8b60b1197b223cec0b78482cbd7763 diff --git a/src/cclxmlconfig.c b/src/cclxmlconfig.c index 7d205bb..37f0bbe 100644 --- a/src/cclxmlconfig.c +++ b/src/cclxmlconfig.c @@ -2,10 +2,12 @@ * Copyright (C) 1995-2010 Index Data * See the file LICENSE for details. */ - /** \file cclxmlconfig.c \brief XML configuration for CCL */ +#if HAVE_CONFIG_H +#include +#endif #include #include @@ -15,6 +17,35 @@ #if YAZ_HAVE_XML2 +static int ccl_xml_config_combqual(WRBUF wrbuf, + const xmlNode *ptr, + const char **addinfo) +{ + struct _xmlAttr *attr; + const char *name = 0; + for (attr = ptr->properties; attr; attr = attr->next) + { + if (!xmlStrcmp(attr->name, BAD_CAST "name") && + attr->children && attr->children->type == XML_TEXT_NODE) + name = (const char *) attr->children->content; + else + { + *addinfo = "bad attribute for 'attr'. " + "Expecting 'type', 'value', or 'attrset'"; + return 1; + } + } + if (!name) + { + *addinfo = "missing attribute for 'name' for element 'qual'"; + return 1; + } + wrbuf_printf(wrbuf, "%s", name); + return 0; + + +} + static int ccl_xml_config_attr(const char *default_set, WRBUF wrbuf, const xmlNode *ptr, @@ -95,6 +126,13 @@ static int ccl_xml_config_qual(CCL_bibset bibset, const char *default_set, return r; wrbuf_printf(wrbuf, " "); } + else if (!xmlStrcmp(a_ptr->name, BAD_CAST "qual")) + { + int r = ccl_xml_config_combqual(wrbuf, a_ptr, addinfo); + if (r) + return r; + wrbuf_printf(wrbuf, " "); + } else { *addinfo = "bad element: expecting 'attr'";