+ /* writing debug info out */
+ if (extctr && extctr->flagShowRecords)
+ dom_log(YLOG_LOG, tinfo, node,
+ "RECORD id=%s rank=%s type=%s",
+ id_p ? (const char *) id_p : "(null)",
+ rank_p ? (const char *) rank_p : "(null)",
+ type_p ? (const char *) type_p : "(null)");
+
+
+ if (id_p && *id_p)
+ sscanf((const char *)id_p, "%255s", extctr->match_criteria);
+
+ if (rank_p && *rank_p)
+ extctr->staticrank = atozint((const char *)rank_p);
+
+ if (type_p && *type_p)
+ {
+ enum zebra_recctrl_action_t action = action_update;
+ if (!strcmp(type_p, "insert"))
+ action = action_insert;
+ else if (!strcmp(type_p, "delete"))
+ action = action_delete;
+ else if (!strcmp(type_p, "replace"))
+ action = action_replace;
+ else if (!strcmp(type_p, "update"))
+ action = action_update;
+ else
+ dom_log(YLOG_WARN, tinfo, node, "bad @type value: %s", type_p);
+ extctr->action = action;
+ yaz_log(YLOG_LOG, "In mod_dom.c: setting action to %d", action);
+ }
+
+ if (tinfo->record_info_invoked == 1)
+ {
+ /* warn about multiple only once */
+ dom_log(YLOG_WARN, tinfo, node, "multiple record elements");
+ }
+ tinfo->record_info_invoked++;
+
+}
+
+
+/* DOM filter style indexing */
+static void process_xml_element_zebra_node(struct filter_info *tinfo,
+ struct recExtractCtrl *extctr,
+ RecWord* recword,
+ xmlNodePtr node)
+{
+ if (node->type == XML_ELEMENT_NODE && node->ns && node->ns->href
+ && 0 == XML_STRCMP(node->ns->href, zebra_dom_ns))