1 /* $Id: srw-client.c,v 1.1 2003-01-06 08:20:28 adam Exp $
2 Copyright (C) 2002-2003
5 This file is part of the YAZ toolkit.
7 See file LICENSE for details.
12 #include <yaz/srw-util.h>
14 int main (int argc, char **argv)
19 struct zs__searchRetrieveResponse res;
21 struct xcql__operandType *xQuery = 0;
22 xsd__integer startRecord = 1;
23 xsd__integer maximumRecord = 0;
24 char *recordSchema = "http://www.loc.gov/marcxml/";
25 xsd__string recordPacking = 0;
31 while ((ret = options("er:xs:", argv, argc, &arg)) != -2)
45 sscanf (arg, "%d,%d", &startRecord, &maximumRecord);
56 printf ("usage:\n srw-client");
57 printf (" [-e] [-r start,number] [-x] [-s schema] <service> <query>\n");
58 printf (" http://localhost:8001/indexdata.dk/gils computer\n");
62 soap.namespaces = srw_namespaces;
66 struct zs__explainResponse eres;
67 ret = soap_call_zs__explainRequest(&soap, service, action,
72 printf ("%s\n", eres.Explain);
74 printf ("no record\n");
77 soap_print_fault(&soap, stderr);
80 if (xcql) /* xquery */
81 { /* just a hacked query for testing .. */
82 struct xcql__searchClauseType *sc1, *sc2;
83 struct xcql__relationType *relation;
84 struct xcql__tripleType *triple;
85 xQuery = soap_malloc (&soap, sizeof(*xQuery));
86 sc1 = soap_malloc (&soap, sizeof(*sc1));
88 sc1->index = "dc.title";
89 relation = sc1->relation = soap_malloc(&soap, sizeof(*relation));
90 sc1->term = "computer";
91 relation->value = "=";
92 relation->modifiers = 0;
94 sc2 = soap_malloc (&soap, sizeof(*sc2));
96 sc2->index = "dc.author";
97 relation = sc2->relation = soap_malloc(&soap, sizeof(*relation));
99 relation->value = "=";
100 relation->modifiers =
101 soap_malloc (&soap, sizeof(*relation->modifiers));
102 relation->modifiers->__sizeModifier = 1;
103 relation->modifiers->modifier =
104 soap_malloc (&soap, sizeof(*relation->modifiers->modifier));
105 relation->modifiers->modifier[0] =
106 soap_malloc (&soap, sizeof(**relation->modifiers->modifier));
107 relation->modifiers->modifier[0]->type = 0;
108 relation->modifiers->modifier[0]->value = soap_malloc (&soap, 6);
109 strcpy(relation->modifiers->modifier[0]->value, "fuzzy");
111 triple = soap_malloc (&soap, sizeof(*triple));
112 triple->prefixes = 0;
113 triple->boolean = soap_malloc (&soap, sizeof(*triple->boolean));
114 triple->boolean->value = "and";
115 triple->boolean->modifiers = 0;
116 triple->leftOperand =
117 soap_malloc (&soap, sizeof(*triple->leftOperand));
118 triple->leftOperand->searchClause = sc1;
119 triple->rightOperand =
120 soap_malloc (&soap, sizeof(*triple->rightOperand));
121 triple->rightOperand->searchClause = sc2;
122 xQuery->triple = triple;
126 ret = soap_call_zs__searchRetrieveRequest(&soap, service, action,
137 if (res.diagnostics.__sizeDiagnostics > 0)
141 res.diagnostics.__sizeDiagnostics;
144 int code = res.diagnostics.diagnostic[i]->code;
146 res.diagnostics.diagnostic[i]->details;
147 printf ("error = %d", code);
149 printf (" details = %s", details);
157 printf ("set: %s\n", res.resultSetId);
158 printf ("numberOfRecords: %d\n", res.numberOfRecords);
159 for (i = 0; i<res.records.__sizeRecords;
162 if (res.records.record[i]->recordData)
164 printf ("rec %d schema=%s string:\n%s\n", i+1,
165 res.records.record[i]->recordSchema,
166 res.records.record[i]->recordData);
173 soap_print_fault(&soap, stderr);