X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=src%2Fcqltransform.c;h=5a4025ee39917b373c13e0625f7233a30422bd5a;hp=3f6586a386f29454cb6a04d981abcdabcb2f45ab;hb=1bb6c593dea33c483d06114ab5fee75c06bc90e1;hpb=c6e47cbbff56f39f6d81b079ebaeac41d793d4d9 diff --git a/src/cqltransform.c b/src/cqltransform.c index 3f6586a..5a4025e 100644 --- a/src/cqltransform.c +++ b/src/cqltransform.c @@ -1,4 +1,4 @@ -/* $Id: cqltransform.c,v 1.1 2003-10-27 12:21:30 adam Exp $ +/* $Id: cqltransform.c,v 1.5 2003-12-18 17:00:55 mike Exp $ Copyright (C) 2002-2003 Index Data Aps @@ -315,7 +315,7 @@ static const char *cql_get_ns(cql_transform_t ct, } return 0; } - /* 4. lookup qualifier.prefix. */ + /* 4. lookup index.prefix. */ cp = cn->u.st.index; cp_dot = strchr(cp, '.'); @@ -345,7 +345,8 @@ void cql_transform_r(cql_transform_t ct, char n_full[64]; sprintf (n_full, "%.20s.%.40s", n_prefix, n_suffix); - if (!strcmp(ns, "http://www.loc.gov/zing/cql/srw-indexes/v1.0/") + if ((!strcmp(ns, "http://www.loc.gov/zing/cql/context-sets/cql/v1.1/") || + !strcmp(ns, "http://www.loc.gov/zing/cql/srw-indexes/v1.0/")) && !strcmp(n_suffix, "resultSet")) { (*pr)("@set \"", client_data); @@ -353,8 +354,15 @@ void cql_transform_r(cql_transform_t ct, (*pr)("\" ", client_data); return ; } - cql_pr_attr(ct, "qualifier.", n_full, "srw.serverChoice", - pr, client_data, 16); + /* ### It would be nice if this could fall back to whichever + of cql.serverChoice and srw.serverChoice is defined */ + if (!cql_pr_attr(ct, "index.", n_full, "cql.serverChoice", + pr, client_data, 16)) { + /* No index.foo; reset error and fall back to qualifier.foo */ + if (ct->error == 16) ct->error = 0; + cql_pr_attr(ct, "qualifier.", n_full, "cql.serverChoice", + pr, client_data, 16); + } } if (cn->u.st.relation && !strcmp(cn->u.st.relation, "="))