-
- node_attributesBySet = data1_mk_tag_uni (zei->dh, zei->nmem,
- "attributesBySet", node_adinfo);
- 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_mk_tag (zei->dh, zei->nmem,
- "attributeSetDetails",
- 0 /* attr */, node_attributesBySet);
-
- 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_mk_tag_data_oid (zei->dh, node_asd, "oid",
- oid, zei->nmem);
-
- node_abt = data1_mk_tag (zei->dh, zei->nmem,
- "attributesByType",
- 0 /*attr */, node_asd);
- node_atd = data1_mk_tag (zei->dh, zei->nmem,
- "attributeTypeDetails",
- 0 /* attr */, node_abt);
- data1_mk_tag_data_int (zei->dh, node_atd,
- "type", 1, zei->nmem);
- node_atvs = data1_mk_tag (zei->dh, zei->nmem,
- "attributeValues",
- 0 /* attr */, node_atd);
- writeAttributeValueDetails (zei, zad, node_atvs, attset);
- }
- }
- }