+ if (ptr->type != XML_ELEMENT_NODE)
+ continue;
+ if (strcmp((const char *) ptr->name, "backend")){
+ wrbuf_printf(p->wr_error, "Element <retrieval>: expected"
+ " zero or one element <backend>, got <%s>",
+ (const char *) ptr->name);
+ return -1;
+ }
+
+ else {
+
+ /* parsing attributees */
+ struct _xmlAttr *attr;
+ for (attr = ptr->properties; attr; attr = attr->next){
+
+ if (!xmlStrcmp(attr->name, BAD_CAST "name")
+ && 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 "syntax")
+ && attr->children
+ && attr->children->type == XML_TEXT_NODE){
+ el->backend_syntax
+ = yaz_string_to_oid_odr(
+ yaz_oid_std(),
+ CLASS_RECSYN,
+ (const char *) attr->children->content,
+ p->odr);
+ if (!el->backend_syntax){
+ wrbuf_printf(p->wr_error,
+ "Element <backend syntax='%s'>: "
+ "attribute 'syntax' has invalid "
+ "value '%s'",
+ attr->children->content,
+ attr->children->content);
+ return -1;
+ }
+ }
+ else {
+ wrbuf_printf(p->wr_error, "Element <backend>: expected "
+ "attributes 'syntax' or 'name, got '%s'",
+ attr->name);
+ return -1;
+ }
+ }
+
+
+ /* parsing internal of record conv */