X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=recctrl%2Frecgrs.c;h=0e44cf2c6a33e300e59b079f1227561768bd6d4f;hb=eb605e77ed5e4cbc21e32adce1888261148bb7b4;hp=58ad1bbfae10eee9d2c6947b696b885e00670a52;hpb=a4abda703eec54c664657d7ad581a47cd2f198a2;p=idzebra-moved-to-github.git diff --git a/recctrl/recgrs.c b/recctrl/recgrs.c index 58ad1bb..0e44cf2 100644 --- a/recctrl/recgrs.c +++ b/recctrl/recgrs.c @@ -1,4 +1,4 @@ -/* $Id: recgrs.c,v 1.65 2002-08-30 12:44:31 adam Exp $ +/* $Id: recgrs.c,v 1.69 2002-11-15 21:57:41 adam Exp $ Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002 Index Data Aps @@ -102,6 +102,9 @@ static void *grs_init(RecType recType) #if HAVE_EXPAT_H grs_add_handler (h, recTypeGrs_xml); #endif +#if HAVE_PERL + grs_add_handler (h, recTypeGrs_perl); +#endif return h; } @@ -592,46 +595,52 @@ static int process_comp(data1_handle dh, data1_node *n, Z_RecordComposition *c) } } -static void add_nice_whitespace (struct recRetrieveCtrl *p, data1_node *top, - NMEM mem) -{ - data1_node *n = top->child; - while (n && n->which == DATA1N_data && n->u.data.what == DATA1I_text) - { - data1_mk_text_n(p->dh, mem, n->u.data.data, n->u.data.len, top); - n = n->next; - } -} +/* Add Zebra info in separate namespace ... + + 359 + 447 + records/genera.xml + + +*/ -static void add_idzebra_info (struct recRetrieveCtrl *p, data1_node *top, - NMEM mem) +static void zebra_xml_metadata (struct recRetrieveCtrl *p, data1_node *top, + NMEM mem) { - const char *idzebra_ns[7]; + const char *idzebra_ns[3]; + const char *i2 = "\n "; + const char *i4 = "\n "; + data1_node *n; - idzebra_ns[0] = "xmlns:idzebra"; + idzebra_ns[0] = "xmlns"; idzebra_ns[1] = "http://www.indexdata.dk/zebra/"; idzebra_ns[2] = 0; - data1_tag_add_attr (p->dh, mem, top, idzebra_ns); + data1_mk_text (p->dh, mem, i2, top); + + n = data1_mk_tag (p->dh, mem, "idzebra", idzebra_ns, top); + + data1_mk_text (p->dh, mem, "\n", top); + + data1_mk_text (p->dh, mem, i4, n); + + data1_mk_tag_data_int (p->dh, n, "size", p->recordSize, mem); - add_nice_whitespace (p, top, mem); - data1_mk_tag_data_int (p->dh, top, "idzebra:size", p->recordSize, - mem); if (p->score != -1) { - add_nice_whitespace (p, top, mem); - data1_mk_tag_data_int (p->dh, top, "idzebra:score", - p->score, mem); + data1_mk_text (p->dh, mem, i4, n); + data1_mk_tag_data_int (p->dh, n, "score", p->score, mem); } - add_nice_whitespace (p, top, mem); - data1_mk_tag_data_int (p->dh, top, "idzebra:localnumber", p->localno, - mem); + data1_mk_text (p->dh, mem, i4, n); + data1_mk_tag_data_int (p->dh, n, "localnumber", p->localno, mem); if (p->fname) { - add_nice_whitespace (p, top, mem); - data1_mk_tag_data_text(p->dh, top, "idzebra:filename", - p->fname, mem); + data1_mk_text (p->dh, mem, i4, n); + data1_mk_tag_data_text(p->dh, n, "filename", p->fname, mem); } + data1_mk_text (p->dh, mem, i2, n); } static int grs_retrieve(void *clientData, struct recRetrieveCtrl *p) @@ -798,9 +807,7 @@ static int grs_retrieve(void *clientData, struct recRetrieveCtrl *p) sprintf(p, "%d", *ii); p += strlen(p); } - *(p++) = '\0'; - - if ((dnew = data1_mk_tag_data_wd(dh, node, + if ((dnew = data1_mk_tag_data_wd(dh, top, "schemaIdentifier", mem))) { dnew->u.data.what = DATA1I_oid; @@ -824,7 +831,7 @@ static int grs_retrieve(void *clientData, struct recRetrieveCtrl *p) else if (p->comp && !res) selected = 1; -#if 1 +#if 0 data1_pr_tree (p->dh, node, stdout); #endif logf (LOG_DEBUG, "grs_retrieve: transfer syntax mapping"); @@ -832,7 +839,11 @@ static int grs_retrieve(void *clientData, struct recRetrieveCtrl *p) p->input_format : VAL_SUTRS)) { case VAL_TEXT_XML: - add_idzebra_info (p, top, mem); + zebra_xml_metadata (p, top, mem); + +#if 0 + data1_pr_tree (p->dh, node, stdout); +#endif if (p->encoding) data1_iconv (p->dh, mem, node, p->encoding, "UTF-8");