From 4494cb5dd6d79d72f15c41af16833cc373044a36 Mon Sep 17 00:00:00 2001 From: Marc Cromme Date: Wed, 31 May 2006 16:11:58 +0000 Subject: [PATCH] removing the XSLT filter from the build, only keeping the ALVIS filter --- recctrl/Makefile.am | 18 ++++++------- recctrl/alvis.c | 70 +++++++++++++++++++++++++++++++++++++++++---------- recctrl/recctrl.c | 6 +++-- recctrl/xslt.c | 3 ++- test/xslt/xslt1.c | 6 ++--- test/xslt/xslt2.c | 6 ++--- test/xslt/xslt3.c | 6 ++--- test/xslt/xslt4.c | 6 ++--- 8 files changed, 84 insertions(+), 37 deletions(-) diff --git a/recctrl/Makefile.am b/recctrl/Makefile.am index bbe5e6e..dbd155e 100644 --- a/recctrl/Makefile.am +++ b/recctrl/Makefile.am @@ -1,4 +1,4 @@ -## $Id: Makefile.am,v 1.19 2006-05-05 07:34:26 adam Exp $ +## $Id: Makefile.am,v 1.20 2006-05-31 16:11:58 marc Exp $ common_libs = libidzebra-recctrl.la \ ../data1/libidzebra-data1.la \ @@ -42,10 +42,10 @@ mod_alvis_la_LDFLAGS = -rpath $(pkglibdir) -module -avoid-version mod_alvis_la_LADD = $(XSLT_LIBS) mod_alvis_la_LIBADD = $(common_libs) $(mod_alvis_la_LADD) -mod_xslt_la_SOURCES = xslt.c -mod_xslt_la_LDFLAGS = -rpath $(pkglibdir) -module -avoid-version -mod_xslt_la_LADD = $(XSLT_LIBS) -mod_xslt_la_LIBADD = $(common_libs) $(mod_alvis_la_LADD) +#mod_xslt_la_SOURCES = xslt.c +#mod_xslt_la_LDFLAGS = -rpath $(pkglibdir) -module -avoid-version +#mod_xslt_la_LADD = $(XSLT_LIBS) +#mod_xslt_la_LIBADD = $(common_libs) $(mod_alvis_la_LADD) pkglib_LTLIBRARIES = $(SHARED_MODULE_LA) EXTRA_LTLIBRARIES = \ @@ -55,8 +55,8 @@ EXTRA_LTLIBRARIES = \ mod-grs-csv.la \ mod-grs-danbib.la \ mod-safari.la \ - mod-alvis.la \ - mod-xslt.la + mod-alvis.la +# mod-xslt.la # The common library lib_LTLIBRARIES = libidzebra-recctrl.la @@ -77,8 +77,8 @@ EXTRA_libidzebra_recctrl_la_SOURCES = \ $(mod_grs_csv_la_SOURCES) \ $(mod_grs_danbib_la_SOURCES) \ $(mod_safari_la_SOURCES) \ - $(mod_alvis_la_SOURCES) \ - $(mod_xslt_la_SOURCES) + $(mod_alvis_la_SOURCES) +# $(mod_xslt_la_SOURCES) AM_CPPFLAGS = -I$(srcdir)/../include $(YAZINC) $(XSLT_CFLAGS) \ $(TCL_INCLUDE) diff --git a/recctrl/alvis.c b/recctrl/alvis.c index 48de318..194ae19 100644 --- a/recctrl/alvis.c +++ b/recctrl/alvis.c @@ -1,4 +1,4 @@ -/* $Id: alvis.c,v 1.16 2006-05-29 13:48:43 marc Exp $ +/* $Id: alvis.c,v 1.17 2006-05-31 16:11:58 marc Exp $ Copyright (C) 1995-2005 Index Data ApS @@ -25,6 +25,8 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA #include #include +#include + #include #include #include @@ -50,6 +52,8 @@ struct filter_schema { struct filter_info { xmlDocPtr doc; char *fname; + char *full_name; + const char *profile_path; const char *split_level; const char *split_path; ODR odr; @@ -128,6 +132,8 @@ static void *filter_init(Res res, RecType recType) struct filter_info *tinfo = (struct filter_info *) xmalloc(sizeof(*tinfo)); tinfo->reader = 0; tinfo->fname = 0; + tinfo->full_name = 0; + tinfo->profile_path = 0; tinfo->split_level = 0; tinfo->split_path = 0; tinfo->odr = odr_createmem(ODR_ENCODE); @@ -176,21 +182,44 @@ static void destroy_schemas(struct filter_info *tinfo) static ZEBRA_RES create_schemas(struct filter_info *tinfo, const char *fname) { + char tmp_full_name[1024]; xmlNodePtr ptr; tinfo->fname = xstrdup(fname); - tinfo->doc = xmlParseFile(tinfo->fname); - if (!tinfo->doc) + + if (yaz_filepath_resolve(tinfo->fname, tinfo->profile_path, + NULL, tmp_full_name)) + tinfo->full_name = xstrdup(tmp_full_name); + else + tinfo->full_name = xstrdup(tinfo->fname); + + yaz_log(YLOG_LOG, "alvis filter: loading config file %s", tinfo->full_name); + + tinfo->doc = xmlParseFile(tinfo->full_name); + + if (!tinfo->doc){ + yaz_log(YLOG_WARN, "alvis filter: could not parse config file %s", + tinfo->full_name); + return ZEBRA_FAIL; + } + ptr = xmlDocGetRootElement(tinfo->doc); if (!ptr || ptr->type != XML_ELEMENT_NODE || - XML_STRCMP(ptr->name, "schemaInfo")) - return ZEBRA_FAIL; + XML_STRCMP(ptr->name, "schemaInfo")){ + yaz_log(YLOG_WARN, + "alvis filter: config file %s :" + " expected root element ", + tinfo->full_name); + return ZEBRA_FAIL; + } + for (ptr = ptr->children; ptr; ptr = ptr->next) { if (ptr->type != XML_ELEMENT_NODE) continue; if (!XML_STRCMP(ptr->name, "schema")) - { + { + char tmp_xslt_full_name[1024]; struct _xmlAttr *attr; struct filter_schema *schema = xmalloc(sizeof(*schema)); schema->name = 0; @@ -214,11 +243,17 @@ static ZEBRA_RES create_schemas(struct filter_info *tinfo, const char *fname) /* find requested schema */ - if (schema->stylesheet) - schema->stylesheet_xsp = - xsltParseStylesheetFile( - (const xmlChar*) schema->stylesheet); - + if (schema->stylesheet){ + yaz_filepath_resolve(schema->stylesheet, tinfo->profile_path, + NULL, tmp_xslt_full_name); + schema->stylesheet_xsp + = xsltParseStylesheetFile((const xmlChar*) tmp_xslt_full_name); + if (!schema->stylesheet_xsp) + yaz_log(YLOG_WARN, + "alvis filter: could not parse xslt stylesheet %s", + tmp_xslt_full_name); + } + } else if (!XML_STRCMP(ptr->name, "split")) @@ -270,10 +305,19 @@ static struct filter_schema *lookup_schema(struct filter_info *tinfo, static ZEBRA_RES filter_config(void *clientData, Res res, const char *args) { struct filter_info *tinfo = clientData; - if (!args || !*args) - return ZEBRA_FAIL; + if (!args || !*args){ + yaz_log(YLOG_WARN, "alvis filter: need config file"); + return ZEBRA_FAIL; + } + if (tinfo->fname && !strcmp(args, tinfo->fname)) return ZEBRA_OK; + + tinfo->profile_path + /* = res_get_def(res, "profilePath", DEFAULT_PROFILE_PATH); */ + = res_get(res, "profilePath"); + yaz_log(YLOG_LOG, "alvis filter: profilePath %s", tinfo->profile_path); + destroy_schemas(tinfo); create_schemas(tinfo, args); return ZEBRA_OK; diff --git a/recctrl/recctrl.c b/recctrl/recctrl.c index 410effc..6729af6 100644 --- a/recctrl/recctrl.c +++ b/recctrl/recctrl.c @@ -1,4 +1,4 @@ -/* $Id: recctrl.c,v 1.25 2006-05-10 08:13:28 adam Exp $ +/* $Id: recctrl.c,v 1.26 2006-05-31 16:11:58 marc Exp $ Copyright (C) 1995-2006 Index Data ApS @@ -134,15 +134,17 @@ RecTypeClass recTypeClass_create (Res res, NMEM nmem) #endif #endif + #ifdef IDZEBRA_STATIC_XSLT #if HAVE_XSLT - if (1) + if (0) { extern RecType idzebra_filter_xslt[]; recTypeClass_add (&rts, idzebra_filter_xslt, nmem, 0); } #endif #endif + return rts; } diff --git a/recctrl/xslt.c b/recctrl/xslt.c index 846cd79..10354bb 100644 --- a/recctrl/xslt.c +++ b/recctrl/xslt.c @@ -1,4 +1,4 @@ -/* $Id: xslt.c,v 1.26 2006-05-29 13:48:43 marc Exp $ +/* $Id: xslt.c,v 1.27 2006-05-31 16:11:58 marc Exp $ Copyright (C) 1995-2005 Index Data ApS @@ -238,6 +238,7 @@ static ZEBRA_RES create_schemas(struct filter_xslt_info *tinfo, attr_content(attr, "default", &schema->default_schema); attr_content(attr, "snippet", &schema->include_snippet); } + if (schema->stylesheet){ yaz_filepath_resolve(schema->stylesheet, tinfo->profile_path, NULL, tmp_xslt_full_name); diff --git a/test/xslt/xslt1.c b/test/xslt/xslt1.c index af4c73e..c960857 100644 --- a/test/xslt/xslt1.c +++ b/test/xslt/xslt1.c @@ -1,4 +1,4 @@ -/* $Id: xslt1.c,v 1.9 2006-05-10 08:13:42 adam Exp $ +/* $Id: xslt1.c,v 1.10 2006-05-31 16:11:58 marc Exp $ Copyright (C) 1995-2005 Index Data ApS @@ -31,7 +31,7 @@ void tst(int argc, char **argv) ZebraService zs = tl_start_up(0, argc, argv); ZebraHandle zh = zebra_open(zs, 0); - tl_check_filter(zs, "xslt"); + tl_check_filter(zs, "alvis"); YAZ_CHECK(zebra_select_database(zh, "Default") == ZEBRA_OK); @@ -41,7 +41,7 @@ void tst(int argc, char **argv) tl_get_srcdir(), tl_get_srcdir()); zebra_set_resource(zh, "profilePath", profile_path); - zebra_set_resource(zh, "recordType", "xslt.marcschema-col.xml"); + zebra_set_resource(zh, "recordType", "alvis.marcschema-col.xml"); YAZ_CHECK(zebra_begin_trans(zh, 1) == ZEBRA_OK); sprintf(path, "%s/marc-col.xml", tl_get_srcdir()); diff --git a/test/xslt/xslt2.c b/test/xslt/xslt2.c index acbe128..d71ca82 100644 --- a/test/xslt/xslt2.c +++ b/test/xslt/xslt2.c @@ -1,4 +1,4 @@ -/* $Id: xslt2.c,v 1.9 2006-05-10 08:13:42 adam Exp $ +/* $Id: xslt2.c,v 1.10 2006-05-31 16:11:58 marc Exp $ Copyright (C) 1995-2005 Index Data ApS @@ -37,7 +37,7 @@ static void tst(int argc, char **argv) ZebraService zs = tl_start_up(0, argc, argv); ZebraHandle zh = zebra_open(zs, 0); - tl_check_filter(zs, "xslt"); + tl_check_filter(zs, "alvis"); YAZ_CHECK(zebra_select_database(zh, "Default") == ZEBRA_OK); @@ -47,7 +47,7 @@ static void tst(int argc, char **argv) tl_get_srcdir(), tl_get_srcdir()); zebra_set_resource(zh, "profilePath", profile_path); - zebra_set_resource(zh, "recordType", "xslt.marcschema-col.xml"); + zebra_set_resource(zh, "recordType", "alvis.marcschema-col.xml"); sprintf(path, "%.200s/marc-col.xml", tl_get_srcdir()); f = fopen(path, "rb"); diff --git a/test/xslt/xslt3.c b/test/xslt/xslt3.c index a1f0677..64e1a94 100644 --- a/test/xslt/xslt3.c +++ b/test/xslt/xslt3.c @@ -1,4 +1,4 @@ -/* $Id: xslt3.c,v 1.8 2006-05-10 08:13:42 adam Exp $ +/* $Id: xslt3.c,v 1.9 2006-05-31 16:11:58 marc Exp $ Copyright (C) 1995-2005 Index Data ApS @@ -37,7 +37,7 @@ static void tst(int argc, char **argv) ZebraService zs = tl_start_up(0, argc, argv); ZebraHandle zh = zebra_open(zs, 0); - tl_check_filter(zs, "xslt"); + tl_check_filter(zs, "alvis"); YAZ_CHECK(zebra_select_database(zh, "Default") == ZEBRA_OK); @@ -47,7 +47,7 @@ static void tst(int argc, char **argv) tl_get_srcdir(), tl_get_srcdir()); zebra_set_resource(zh, "profilePath", profile_path); - zebra_set_resource(zh, "recordType", "xslt.marcschema-one.xml"); + zebra_set_resource(zh, "recordType", "alvis.marcschema-one.xml"); sprintf(path, "%.200s/marc-one.xml", tl_get_srcdir()); f = fopen(path, "rb"); diff --git a/test/xslt/xslt4.c b/test/xslt/xslt4.c index 97b29a8..b423e25 100644 --- a/test/xslt/xslt4.c +++ b/test/xslt/xslt4.c @@ -1,4 +1,4 @@ -/* $Id: xslt4.c,v 1.6 2006-05-10 08:13:42 adam Exp $ +/* $Id: xslt4.c,v 1.7 2006-05-31 16:11:58 marc Exp $ Copyright (C) 1995-2005 Index Data ApS @@ -31,7 +31,7 @@ static void tst(int argc, char **argv) ZebraService zs = tl_start_up("zebrastaticrank.cfg", argc, argv); ZebraHandle zh = zebra_open(zs, 0); - tl_check_filter(zs, "xslt"); + tl_check_filter(zs, "alvis"); YAZ_CHECK(zebra_select_database(zh, "Default") == ZEBRA_OK); @@ -41,7 +41,7 @@ static void tst(int argc, char **argv) tl_get_srcdir(), tl_get_srcdir()); zebra_set_resource(zh, "profilePath", profile_path); - zebra_set_resource(zh, "recordType", "xslt.marcschema-col.xml"); + zebra_set_resource(zh, "recordType", "alvis.marcschema-col.xml"); zebra_set_resource(zh, "staticrank", "1"); YAZ_CHECK(zebra_begin_trans(zh, 1) == ZEBRA_OK); -- 1.7.10.4