* Copyright (c) 2002-2003, Index Data.
* See the file LICENSE for details.
*
- * $Id: srw.c,v 1.1 2003-02-12 15:06:44 adam Exp $
+ * $Id: srw.c,v 1.3 2003-02-17 14:35:42 adam Exp $
*/
#include <yaz/srw.h>
+#if HAVE_XSLT
+#include <libxml/parser.h>
+#include <libxml/tree.h>
+
static void add_xsd_string_n(xmlNodePtr ptr, const char *elem, char *val,
int len)
{
struct _xmlAttr *attr;
if (!match_element(ptr, elem))
return 0;
+#if 0
for (attr = ptr->properties; attr; attr = attr->next)
if (!strcmp(attr->name, "type") &&
attr->children && attr->children->type == XML_TEXT_NODE)
}
if (!attr)
return 0;
+#endif
ptr = ptr->children;
if (!ptr || ptr->type != XML_TEXT_NODE)
return 0;
struct _xmlAttr *attr;
if (!match_element(ptr, elem))
return 0;
+#if 0
for (attr = ptr->properties; attr; attr = attr->next)
if (!strcmp(attr->name, "type") &&
attr->children && attr->children->type == XML_TEXT_NODE)
}
if (!attr)
return 0;
+#endif
ptr = ptr->children;
if (!ptr || ptr->type != XML_TEXT_NODE)
return 0;
}
-int yaz_srw_codec(ODR o, xmlNodePtr pptr, Z_SRW_searchRetrieve **handler_data,
+int yaz_srw_codec(ODR o, void * vptr, Z_SRW_searchRetrieve **handler_data,
void *client_data, const char *ns)
{
+ xmlNodePtr pptr = vptr;
if (o->direction == ODR_DECODE)
{
xmlNodePtr method = pptr->children;
req->maximumRecords = 0;
req->recordSchema = 0;
req->recordPacking = 0;
+ req->database = 0;
for (; ptr; ptr = ptr->next)
{
else if (match_xsd_integer(ptr, "maximumRecords", o,
&req->maximumRecords))
;
+ else if (match_xsd_string(ptr, "database", o,
+ &req->database))
+ ;
/* missing is xQuery, xSortKeys .. */
}
}
add_xsd_integer(ptr, "maximumRecords", req->maximumRecords);
add_xsd_string(ptr, "recordSchema", req->recordSchema);
add_xsd_string(ptr, "recordPacking", req->recordPacking);
+ add_xsd_string(ptr, "database", req->database);
}
else if ((*p)->which == Z_SRW_searchRetrieve_response)
{
sr->u.request = odr_malloc(o, sizeof(*sr->u.request));
sr->u.request->query = 0;
sr->u.request->xQuery = 0;
+ sr->u.request->pQuery = 0;
sr->u.request->sortKeys = 0;
sr->u.request->xSortKeys = 0;
sr->u.request->startRecord = 0;
sr->u.request->maximumRecords = 0;
sr->u.request->recordSchema = 0;
sr->u.request->recordPacking = 0;
+ sr->u.request->database = 0;
break;
case Z_SRW_searchRetrieve_response:
sr->u.response = odr_malloc(o, sizeof(*sr->u.response));
}
return sr;
}
+
+#endif
+
+
+const char *yaz_srw_error_str (int code)
+{
+ return "SRW error";
+}
+
+#if 0
+
+1 Permanent system error
+2 System temporarily unavailable
+3 Authentication error
+ /* Diagnostics Relating to CQL */
+Number Description
+10 Illegal query
+11 Unsupported query type (XCQL vs CQL)
+12 Too many characters in query
+13 Unbalanced or illegal use of parentheses
+14 Unbalanced or illegal use of quotes
+15 Illegal or unsupported index set
+16 Illegal or unsupported index
+17 Illegal or unsupported combination of index and index set
+18 Illegal or unsupported combination of indexes
+19 Illegal or unsupported relation
+20 Illegal or unsupported relation modifier
+21 Illegal or unsupported combination of relation modifers
+22 Illegal or unsupported combination of relation and index
+23 Too many characters in term
+24 Illegal combination of relation and term
+25 Special characters not quoted in term
+26 Non special character escaped in term
+27 Empty term unsupported
+28 Masking character not supported
+29 Masked words too short
+30 Too many masking characters in term
+31 Anchoring character not supported
+32 Anchoring character in illegal or unsupported position
+33 Combination of proximity/adjacency and masking characters not supported
+34 Combination of proximity/adjacency and anchoring characters not supported
+35 Terms only exclusion (stop) words
+36 Term in invalid format for index or relation
+37 Illegal or unsupported boolean operator
+38 Too many boolean operators in query
+39 Proximity not supported
+40 Illegal or unsupported proximity relation
+41 Illegal or unsupported proximity distance
+42 Illegal or unsupported proximity unit
+43 Illegal or unsupported proximity ordering
+44 Illegal or unsupported combination of proximity modifiers
+45 Index set name (prefix) assigned to multiple identifiers
+/* Diagnostics Relating to Result Sets */
+Number Description
+50 Result sets not supported
+51 Result set does not exist
+52 Result set temporarily unavailable
+53 Result sets only supported for retrieval
+54 Retrieval may only occur from an existing result set
+55 Combination of result sets with search terms not supported
+56 Only combination of single result set with search terms supported
+57 Result set created but no records available
+58 Result set created with unpredictable partial results available
+59 Result set created with valid partial results available
+/* Diagnostics Relating to Records */
+Number Description
+60 Too many records retrieved
+61 First record position out of range
+62 Negative number of records requested
+63 System error in retrieving records
+64 Record temporarily unavailable
+65 Record does not exist
+66 Unknown schema for retrieval
+67 Record not available in this schema
+68 Not authorised to send record
+69 Not authorised to send record in this schema
+70 Record too large to send
+/* Diagnostics Relating to Sorting */
+Number Description
+80 Sort not supported
+81 Unsupported sort type (sortKeys vs xSortKeys)
+82 Illegal or unsupported sort sequence
+83 Too many records
+84 Too many sort keys
+85 Duplicate sort keys
+86 Incompatible record formats
+87 Unsupported schema for sort
+88 Unsupported tag path for sort
+89 Tag path illegal or unsupported for schema
+90 Illegal or unsupported direction value
+91 Illegal or unsupported case value
+92 Illegal or unsupported missing value action
+/* Diagnostics Relating to Explain */
+Number Description
+100 Explain not supported
+101 Explain request type not supported (SOAP vs GET)
+102 Explain record temporarily unavailable
+
+#endif