-/* $Id: recgrs.c,v 1.106 2006-02-06 13:34:13 adam Exp $
- Copyright (C) 1995-2005
+/* $Id: recgrs.c,v 1.110 2006-05-19 13:49:35 adam Exp $
+ Copyright (C) 1995-2006
Index Data ApS
This file is part of the Zebra server.
unsigned char c;
for (c = *p++, t = s->trans, i = s->tran_no; --i >= 0; t++)
+ {
if (c >= t->ch[0] && c <= t->ch[1])
{
while (i >= 0)
if (s->rule_no)
return 1;
/* next char */
+ if (!c)
+ return 0;
c = *p++;
for (t = s->trans, i = s->tran_no; --i >= 0; t++)
if (c >= t->ch[0] && c <= t->ch[1])
break;
}
}
+ }
return 0;
}
char *structure, struct recExtractCtrl *p,
RecWord *wrd)
{
-#if NATTR
wrd->index_name = ZEBRA_XPATH_ELM_BEGIN;
-#else
- wrd->attrSet = VAL_IDXPATH;
- wrd->attrUse = 1;
-#endif
wrd->index_type = '0';
wrd->term_buf = tag_path;
wrd->term_len = strlen(tag_path);
(*p->tokenAdd)(wrd);
if (value) {
-#if NATTR
- wrd->index_name = ZEBRA_XPATH_ATTR;
-#else
- wrd->attrUse = 1015;
-#endif
+ wrd->index_name = ZEBRA_XPATH_ATTR_CDATA;
wrd->index_type = 'w';
wrd->term_buf = value;
wrd->term_len = strlen(value);
(*p->tokenAdd)(wrd);
}
-#if NATTR
wrd->index_name = ZEBRA_XPATH_ELM_END;
-#else
- wrd->attrUse = 2;
-#endif
wrd->index_type = '0';
wrd->term_buf = tag_path;
wrd->term_len = strlen(tag_path);
static void index_xpath(struct source_parser *sp, data1_node *n,
struct recExtractCtrl *p,
int level, RecWord *wrd,
-#if NATTR
char *xpath_index,
int xpath_is_start
-#else
- int use
-#endif
)
{
int i;
int termlist_only = 1;
data1_termlist *tl;
int xpdone = 0;
-#if NATTR
-#else
- int xpath_is_start = 0;
- if (use == 1)
- xpath_is_start = 1;
-#endif
-
-#if NATTR
yaz_log(YLOG_DEBUG, "index_xpath level=%d xpath_index=%s",
level, xpath_index);
-#else
- yaz_log(YLOG_DEBUG, "index_xpath level=%d use=%d", level, use);
-#endif
if ((!n->root->u.root.absyn) ||
(n->root->u.root.absyn->enable_xpath_indexing)) {
termlist_only = 0;
memcpy (&wrd_tl, wrd, sizeof(*wrd));
if (tl->source)
sp_parse(sp, n, &wrd_tl, tl->source);
-#if NATTR
if (!tl->index_name)
-#else
- if (!tl->att)
-#endif
{
/* this is the ! case, so structure is for the xpath index */
-#if NATTR
wrd_tl.index_name = xpath_index;
-#else
- wrd_tl.attrSet = VAL_IDXPATH;
- wrd_tl.attrUse = use;
-#endif
if (p->flagShowRecords)
{
int i;
xpdone = 1;
} else {
/* this is just the old fashioned attribute based index */
-#if NATTR
wrd_tl.index_name = tl->index_name;
-#else
- wrd_tl.attrSet = (int) (tl->att->parent->reference);
- wrd_tl.attrUse = tl->att->locals->local;
-#endif
if (p->flagShowRecords)
{
int i;
printf("%*sIdx: [%s]", (level + 1) * 4, "",
tl->structure);
-#if NATTR
printf("%s %s", tl->index_name, tl->source);
-#else
- printf("%s:%s [%d] %s",
- tl->att->parent->name,
- tl->att->name, tl->att->value,
- tl->source);
-#endif
printf (" XData:\"");
for (i = 0; i<wrd_tl.term_len && i < 40; i++)
fputc (wrd_tl.term_buf[i], stdout);
or no ! in the termlist, and default indexing is enabled... */
if (!p->flagShowRecords && !xpdone && !termlist_only)
{
-#if NATTR
wrd->index_name = xpath_index;
-#else
- wrd->attrSet = VAL_IDXPATH;
- wrd->attrUse = use;
-#endif
wrd->index_type = 'w';
(*p->tokenAdd)(wrd);
}
wrd->index_type = '0';
wrd->term_buf = tag_path_full;
wrd->term_len = strlen(tag_path_full);
-#if NATTR
wrd->index_name = xpath_index;
-#else
- wrd->attrSet = VAL_IDXPATH;
- wrd->attrUse = use;
-#endif
if (p->flagShowRecords)
{
printf("%*s tag=", (level + 1) * 4, "");
{
for (; tl; tl = tl->next)
{
-#if NATTR
if (!tl->index_name)
-#else
- if (!tl->att)
-#endif
do_xpindex = 1;
}
}
{
for (; tl; tl = tl->next)
{
-#if NATTR
if (!tl->index_name)
do_xpindex = 1;
-#else
- if (!tl->att)
- do_xpindex = 1;
-#endif
}
}
/* attribute (no value) */
wrd->index_type = '0';
-#if NATTR
- wrd->index_name = ZEBRA_XPATH_ATTR;
-#else
- wrd->attrUse = 3;
-#endif
+ wrd->index_name = ZEBRA_XPATH_ATTR_NAME;
wrd->term_buf = xp->name;
wrd->term_len = strlen(xp->name);
strcat (comb, "=");
strcat (comb, xp->value);
-#if NATTR
- wrd->index_name = ZEBRA_XPATH_ATTR;
-#else
- wrd->attrUse = 3;
-#endif
+ wrd->index_name = ZEBRA_XPATH_ATTR_NAME;
wrd->index_type = '0';
wrd->term_buf = comb;
wrd->term_len = strlen(comb);
/* If there is a termlist given (=xelm directive) */
for (; tl; tl = tl->next)
{
-#if NATTR
if (!tl->index_name)
-#else
- if (!tl->att)
-#endif
{
/* add xpath index for the attribute */
index_xpath_attr (attr_tag_path_full, xp->name,
p, wrd);
xpdone = 1;
} else {
- /* if this fragment is enabled, we index
- attribute values as well. See bug #460 */
- if (0 && xp->value)
+ /* index attribute value (only path/@attr) */
+ if (xp->value)
{
-#if NATTR
wrd->index_name = tl->index_name;
-#else
- wrd->attrSet = (int)
- (tl->att->parent->reference);
- wrd->attrUse = tl->att->locals->local;
-#endif
wrd->index_type = *tl->structure;
wrd->term_buf = xp->value;
wrd->term_len = strlen(xp->value);
int i;
printf("%*sIdx: [%s]", (level + 1) * 4, "",
tlist->structure);
-#if NATTR
printf("%s %s", tlist->index_name, tlist->source);
-#else
- printf("%s:%s [%d] %s",
- tlist->att->parent->name,
- tlist->att->name, tlist->att->value,
- tlist->source);
-#endif
printf (" XData:\"");
for (i = 0; i<wrd->term_len && i < 40; i++)
fputc (wrd->term_buf[i], stdout);
else
{
wrd->index_type = *tlist->structure;
-#if NATTR
wrd->index_name = tlist->index_name;
-#else
- wrd->attrSet = (int) (tlist->att->parent->reference);
- wrd->attrUse = tlist->att->locals->local;
-#endif
(*p->tokenAdd)(wrd);
}
}
{
index_termlist(sp, n, n, p, level, wrd);
/* index start tag */
-#if NATTR
if (n->root->u.root.absyn)
index_xpath(sp, n, p, level, wrd, ZEBRA_XPATH_ELM_BEGIN,
1 /* is start */);
-#else
- if (n->root->u.root.absyn)
- index_xpath(sp, n, p, level, wrd, 1);
-#endif
}
if (n->child)
if (par)
index_termlist(sp, par, n, p, level, wrd);
-#if NATTR
index_xpath(sp, n, p, level, wrd, ZEBRA_XPATH_CDATA,
0 /* is start */);
-#else
- index_xpath(sp, n, p, level, wrd, 1016);
-#endif
}
if (n->which == DATA1N_tag)
{
/* index end tag */
-#if NATTR
index_xpath(sp, n, p, level, wrd, ZEBRA_XPATH_ELM_END,
0 /* is start */);
-#else
- index_xpath(sp, n, p, level, wrd, 2);
-#endif
}
if (p->flagShowRecords && n->which == DATA1N_root)
return 0;
}
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+