was not seen as XML , and, hence, there could be strange matches.
Changed configuration format: schema and backendschema renamed to
name and backendname respectively.
-<!-- $Id: yazgfs.xml,v 1.4 2006-05-08 19:44:18 adam Exp $ -->
+<!-- $Id: yazgfs.xml,v 1.5 2006-05-09 13:39:46 adam Exp $ -->
<!-- sample YAZ GFS config file .. see
http://indexdata.dk/yaz/doc/server.vhosts.tkl -->
<yazgfs>
<stylesheet>xsl/default.xsl</stylesheet>
<retrievalinfo>
<retrieval syntax="grs-1"/>
- <retrieval syntax="usmarc" schema="F"/>
- <retrieval syntax="usmarc" schema="B"/>
- <retrieval syntax="xml" schema="marcxml"
+ <retrieval syntax="usmarc" name="F"/>
+ <retrieval syntax="usmarc" name="B"/>
+ <retrieval syntax="xml" name="marcxml"
identifier="info:srw/schema/1/marcxml-v1.1"
- backendsyntax="usmarc" backendschema="F">
+ backendsyntax="usmarc" backendname="F">
<convert>
<marc inputformat="marc" outputformat="marcxml"
inputcharset="marc-8"/>
</convert>
</retrieval>
- <retrieval syntax="xml" schema="danmarc"
- backendsyntax="usmarc" backendschema="F">
+ <retrieval syntax="xml" name="danmarc"
+ backendsyntax="usmarc" backendname="F">
<convert>
<marc inputformat="marc" outputformat="marcxchange"
inputcharset="marc-8"/>
</convert>
</retrieval>
- <retrieval syntax="xml" schema="dc"
+ <retrieval syntax="xml" name="dc"
identifier="info:srw/schema/1/dc-v1.1"
- backendsyntax="usmarc" backendschema="F">
+ backendsyntax="usmarc" backendname="F">
<convert>
<marc inputformat="marc" outputformat="marcxml"
inputcharset="marc-8"/>
* LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THIS SOFTWARE.
*
- * $Id: retrieval.h,v 1.4 2006-05-08 19:48:26 adam Exp $
+ * $Id: retrieval.h,v 1.5 2006-05-09 13:39:46 adam Exp $
*/
/**
* \file retrieval.h
For retrieval:
\verbatim
<retrievalinfo>
- <retrieval syntax="usmarc" schema="marcxml"
+ <retrieval syntax="usmarc" name="marcxml"
identifier="info:srw/schema/1/marcxml-v1.1"
- backendsyntax="xml" backendschema="dc"
+ backendsyntax="xml" backendname="dc"
>
<title>MARCXML</title>
<convert>
* Copyright (C) 2005-2006, Index Data ApS
* See the file LICENSE for details.
*
- * $Id: retrieval.c,v 1.9 2006-05-09 11:35:28 adam Exp $
+ * $Id: retrieval.c,v 1.10 2006-05-09 13:39:47 adam Exp $
*/
/**
* \file retrieval.c
struct yaz_retrieval_elem {
/** \brief schema identifier */
const char *identifier;
- /** \brief schema short-hand (such sa "dc") */
- const char *schema;
+ /** \brief schema name , short-hand such sa "dc" */
+ const char *name;
/** \brief record syntax */
int *syntax;
- /** \brief backend schema */
- const char *backend_schema;
+ /** \brief backend name */
+ const char *backend_name;
/** \brief backend syntax */
int *backend_syntax;
el->syntax = 0;
el->identifier = 0;
- el->schema = 0;
- el->backend_schema = 0;
+ el->name = 0;
+ el->backend_name = 0;
el->backend_syntax = 0;
el->next = 0;
}
}
else if (!xmlStrcmp(attr->name, BAD_CAST "identifier") &&
- attr->children && attr->children->type == XML_TEXT_NODE)
+ attr->children && attr->children->type == XML_TEXT_NODE)
el->identifier =
nmem_strdup(p->nmem, (const char *) attr->children->content);
else if (!xmlStrcmp(attr->name, BAD_CAST "schema") &&
attr->children && attr->children->type == XML_TEXT_NODE)
- el->schema =
+ {
+ wrbuf_printf(p->wr_error, "Bad attribute 'schema'. "
+ "Use 'name' instead");
+ return -1;
+ }
+ else if (!xmlStrcmp(attr->name, BAD_CAST "name") &&
+ attr->children && attr->children->type == XML_TEXT_NODE)
+ el->name =
nmem_strdup(p->nmem, (const char *) attr->children->content);
else if (!xmlStrcmp(attr->name, BAD_CAST "backendschema") &&
attr->children && attr->children->type == XML_TEXT_NODE)
- el->backend_schema =
+ {
+ wrbuf_printf(p->wr_error, "Bad attribute 'backendschema'. "
+ "Use 'backendname' instead");
+ return -1;
+ }
+ else if (!xmlStrcmp(attr->name, BAD_CAST "backendname") &&
+ attr->children && attr->children->type == XML_TEXT_NODE)
+ el->backend_name =
nmem_strdup(p->nmem, (const char *) attr->children->content);
else if (!xmlStrcmp(attr->name, BAD_CAST "backendsyntax") &&
attr->children && attr->children->type == XML_TEXT_NODE)
int schema_ok = 0;
int syntax_ok = 0;
- if (schema && el->schema && !strcmp(schema, el->schema))
- schema_ok = 1;
- if (schema && el->identifier && !strcmp(schema, el->identifier))
- schema_ok = 1;
if (!schema)
schema_ok = 1;
- if (schema && !el->schema)
- schema_ok = 1;
+ else
+ {
+ if (el->name && !strcmp(schema, el->name))
+ schema_ok = 1;
+ if (el->identifier && !strcmp(schema, el->identifier))
+ schema_ok = 1;
+ if (!el->name && !el->identifier)
+ schema_ok = 1;
+ }
if (syntax && el->syntax && !oid_oidcmp(syntax, el->syntax))
syntax_ok = 1;
if (syntax_ok && schema_ok)
{
*match_syntax = el->syntax;
- *match_schema = el->schema;
+ if (el->identifier)
+ *match_schema = el->identifier;
+ else
+ *match_schema = 0;
if (backend_schema)
- *backend_schema = el->backend_schema;
+ *backend_schema = el->backend_name;
if (backend_syntax)
*backend_syntax = el->backend_syntax;
if (rc)
* Copyright (C) 1995-2005, Index Data ApS
* See the file LICENSE for details.
*
- * $Id: seshigh.c,v 1.79 2006-05-08 19:48:26 adam Exp $
+ * $Id: seshigh.c,v 1.80 2006-05-09 13:39:47 adam Exp $
*/
/**
* \file seshigh.c
const char *match_schema = 0;
int *match_syntax = 0;
+ if (!assoc->server)
+ {
+ yaz_log(YLOG_LOG, "no assoc->server");
+ }
if (assoc->server)
{
int r;
const char *backend_schema = 0;
Odr_oid *backend_syntax = 0;
+ yaz_log(YLOG_LOG, "found assoc->server");
+
r = yaz_retrieval_request(assoc->server->retrieval,
input_schema,
input_syntax_raw,
rr->output_format = oi ? oi->value : VAL_NONE;
rr->output_format_raw = match_syntax;
}
+ yaz_log(YLOG_LOG, "match_scheam=%s", match_schema);
if (match_schema)
rr->schema = odr_strdup(rr->stream, match_schema);
return 0;
rr.referenceId = 0;
rr.request_format = VAL_TEXT_XML;
rr.request_format_raw = yaz_oidval_to_z3950oid(assoc->decode,
- CLASS_TRANSYN,
+ CLASS_RECSYN,
VAL_TEXT_XML);
rr.comp = (Z_RecordComposition *)
odr_malloc(assoc->decode, sizeof(*rr.comp));
rr.len = 0;
rr.record = 0;
rr.last_in_set = 0;
- rr.output_format = VAL_TEXT_XML;
- rr.output_format_raw = 0;
rr.errcode = 0;
rr.errstring = 0;
rr.surrogate_flag = 0;
assoc->init->implementation_name,
odr_prepend(assoc->encode, "GFS", resp->implementationName));
- version = odr_strdup(assoc->encode, "$Revision: 1.79 $");
+ version = odr_strdup(assoc->encode, "$Revision: 1.80 $");
if (strlen(version) > 10) /* check for unexpanded CVS strings */
version[strlen(version)-2] = '\0';
resp->implementationVersion = odr_prepend(assoc->encode,
* Copyright (C) 2005-2006, Index Data ApS
* See the file LICENSE for details.
*
- * $Id: tst_retrieval.c,v 1.4 2006-05-07 17:45:41 adam Exp $
+ * $Id: tst_retrieval.c,v 1.5 2006-05-09 13:39:47 adam Exp $
*
*/
#include <yaz/retrieval.h>
YAZ_CHECK(conv_configure_test("<retrievalinfo>"
"<retrieval"
" syntax=\"usmarc\""
- " schema=\"marcxml\""
+ " name=\"marcxml\""
" identifier=\"info:srw/schema/1/marcxml-v1.1\""
">"
"<convert/>"
YAZ_CHECK(conv_configure_test("<retrievalinfo>"
"<retrieval"
+ " syntax=\"usmarc\""
+ " name=\"marcxml\""
+ " backendsyntax=\"usmarc\""
+ " backendname=\"marcxml\""
+ " identifier=\"info:srw/schema/1/marcxml-v1.1\""
+ ">"
+ "<convert/>"
+ "</retrieval>"
+ "</retrievalinfo>",
+ 0, 0));
+
+ YAZ_CHECK(conv_configure_test("<retrievalinfo>"
+ "<retrieval"
+ " syntax=\"usmarc\""
+ " name=\"marcxml\""
+ " backendsyntax=\"usmarc\""
+ " backendschema=\"marcxml\""
+ " identifier=\"info:srw/schema/1/marcxml-v1.1\""
+ ">"
+ "<convert/>"
+ "</retrieval>"
+ "</retrievalinfo>",
+ "Bad attribute 'backendschema'."
+ " Use 'backendname' instead",
+ 0));
+
+
+ YAZ_CHECK(conv_configure_test("<retrievalinfo>"
+ "<retrieval"
" syntax=\"unknown_synt\""
">"
"<convert/>"