-
- node_attributesBySet = data1_make_tag (zei->dh, node_adinfo,
- "attributesBySet", zei->nmem);
- set_min = -1;
- while (1)
- {
- data1_node *node_asd;
- data1_attset *attset;
- int set_ordinal = -1;
- for (zsui = zad->SUInfo; zsui; zsui = zsui->next)
- {
- if ((set_ordinal < 0 || set_ordinal > zsui->info.set)
- && zsui->info.set > set_min)
- set_ordinal = zsui->info.set;
- }
- if (set_ordinal < 0)
- break;
- set_min = set_ordinal;
- node_asd = data1_add_tag (zei->dh, node_attributesBySet,
- "attributeSetDetails", zei->nmem);
-
- attset = data1_attset_search_id (zei->dh, set_ordinal);
- if (!attset)
- {
- zebraExplain_loadAttsets (zei->dh, zei->res);
- attset = data1_attset_search_id (zei->dh, set_ordinal);
- }
- if (attset)
- {
- int oid[OID_SIZE];
- oident oe;
-
- oe.proto = PROTO_Z3950;
- oe.oclass = CLASS_ATTSET;
- oe.value = (enum oid_value) set_ordinal;
-
- if (oid_ent_to_oid (&oe, oid))
- {
- data1_node *node_abt, *node_atd, *node_atvs;
- data1_add_tagdata_oid (zei->dh, node_asd, "oid",
- oid, zei->nmem);
-
- node_abt = data1_add_tag (zei->dh, node_asd,
- "attributesByType", zei->nmem);
- node_atd = data1_add_tag (zei->dh, node_abt,
- "attributeTypeDetails", zei->nmem);
- data1_add_tagdata_int (zei->dh, node_atd,
- "type", 1, zei->nmem);
- node_atvs = data1_add_tag (zei->dh, node_atd,
- "attributeValues", zei->nmem);
- writeAttributeValueDetails (zei, zad, node_atvs, attset);
- }
- }
- }
- /* zebra info (private) */
- node_zebra = data1_make_tag (zei->dh, node_adinfo,
- "zebraInfo", zei->nmem);
- node_list = data1_make_tag (zei->dh, node_zebra,
- "attrlist", zei->nmem);