From: Adam Dickmeiss Date: Tue, 22 Oct 2002 12:51:18 +0000 (+0000) Subject: data1 moved to zebra X-Git-Tag: YAZ.1.9.1.DEBIAN.5~4 X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=commitdiff_plain;h=95a7ea9b644c520d7d7b7c5d0c71ca44dd58a225 data1 moved to zebra --- diff --git a/CHANGELOG b/CHANGELOG index a34e073..d509bce 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,8 @@ Possible compatibility problems with earlier versions marked with '*'. +Move retrieval (data1) module to Zebra since nobody seems +to be using it. + Add GRS-1 render for ZOOM using same format as yaz-client. --- 1.9.1 2002/10/05 diff --git a/Makefile.am b/Makefile.am index e837609..260c395 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,8 +1,8 @@ -## $Id: Makefile.am,v 1.16 2002-09-25 07:43:29 adam Exp $ +## $Id: Makefile.am,v 1.17 2002-10-22 12:51:18 adam Exp $ AUTOMAKE_OPTIONS = foreign -SUBDIRS = util odr comstack z39.50 ill zutil ccl tab retrieval server include lib client ztest zoom doc +SUBDIRS = util odr comstack z39.50 ill zutil ccl server include lib client ztest zoom doc aclocaldir=$(datadir)/aclocal diff --git a/configure.in b/configure.in index b50c583..efa2af5 100644 --- a/configure.in +++ b/configure.in @@ -1,6 +1,6 @@ dnl YAZ Toolkit, Index Data 1994-2002 dnl See the file LICENSE for details. -dnl $Id: configure.in,v 1.93 2002-09-25 08:11:33 adam Exp $ +dnl $Id: configure.in,v 1.94 2002-10-22 12:51:18 adam Exp $ AC_INIT(include/yaz/yaz-version.h) AM_INIT_AUTOMAKE(yaz, 1.9.1) dnl @@ -337,8 +337,6 @@ ill/Makefile zutil/Makefile comstack/Makefile ccl/Makefile -tab/Makefile -retrieval/Makefile server/Makefile include/Makefile include/yaz/Makefile diff --git a/include/yaz/Makefile.am b/include/yaz/Makefile.am index c9ffa49..22a540e 100644 --- a/include/yaz/Makefile.am +++ b/include/yaz/Makefile.am @@ -1,9 +1,9 @@ -## $Id: Makefile.am,v 1.16 2002-06-04 11:36:11 adam Exp $ +## $Id: Makefile.am,v 1.17 2002-10-22 12:51:18 adam Exp $ pkginclude_HEADERS= backend.h ccl.h comstack.h \ - d1_attset.h d1_map.h data1.h diagbib1.h sortspec.h \ - log.h logrpn.h marcdisp.h nmem.h odr.h oid.h options.h otherinfo.h \ - pquery.h prt-ext.h readconf.h statserv.h tcpip.h unix.h tpath.h wrbuf.h xmalloc.h \ + diagbib1.h sortspec.h log.h logrpn.h marcdisp.h nmem.h odr.h oid.h \ + options.h otherinfo.h pquery.h prt-ext.h readconf.h statserv.h \ + tcpip.h unix.h tpath.h wrbuf.h xmalloc.h \ yaz-ccl.h yaz-util.h yaz-version.h yconfig.h proto.h \ \ ill.h ill-core.h item-req.h z-accdes1.h z-accform1.h \ diff --git a/include/yaz/d1_attset.h b/include/yaz/d1_attset.h deleted file mode 100644 index dfafdd9..0000000 --- a/include/yaz/d1_attset.h +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright (c) 1995-2000, Index Data. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation, in whole or in part, for any purpose, is hereby granted, - * provided that: - * - * 1. This copyright and permission notice appear in all copies of the - * software and its documentation. Notices of copyright or attribution - * which appear at the beginning of any file must remain unchanged. - * - * 2. The names of Index Data or the individual authors may not be used to - * endorse or promote products derived from this software without specific - * prior written permission. - * - * THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT WARRANTY OF ANY KIND, - * EXPRESS, IMPLIED, OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * IN NO EVENT SHALL INDEX DATA BE LIABLE FOR ANY SPECIAL, INCIDENTAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR - * NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - * - */ - -#ifndef D1_ATTSET_H -#define D1_ATTSET_H - -#include - -YAZ_BEGIN_CDECL - -/* - * This structure describes a attset, perhaps made up by inclusion - * (supersetting) of other attribute sets. When indexing and searching, - * we perform a normalisation, where we associate a given tag with - * the set that originally defined it, rather than the superset. This - * allows the most flexible access. Eg, the tags common to GILS and BIB-1 - * should be searchable by both names. - */ - -struct data1_attset; - -typedef struct data1_local_attribute -{ - int local; - struct data1_local_attribute *next; -} data1_local_attribute; - -typedef struct data1_attset data1_attset; -typedef struct data1_att data1_att; -typedef struct data1_attset_child data1_attset_child; - -struct data1_att -{ - data1_attset *parent; /* attribute set */ - char *name; /* symbolic name of this attribute */ - int value; /* attribute value */ - data1_local_attribute *locals; /* local index values */ - data1_att *next; -}; - -struct data1_attset_child { - data1_attset *child; - data1_attset_child *next; -}; - -struct data1_attset -{ - char *name; /* symbolic name */ - oid_value reference; /* external ID of attset */ - data1_att *atts; /* attributes */ - data1_attset_child *children; /* included attset */ - data1_attset *next; /* next in cache */ -}; - -typedef struct data1_handle_info *data1_handle; - -YAZ_EXPORT data1_att *data1_getattbyname(data1_handle dh, data1_attset *s, - char *name); -YAZ_EXPORT data1_attset *data1_read_attset(data1_handle dh, const char *file); - -YAZ_EXPORT data1_attset *data1_empty_attset(data1_handle dh); - -YAZ_END_CDECL - -#endif diff --git a/include/yaz/d1_map.h b/include/yaz/d1_map.h deleted file mode 100644 index bfd3567..0000000 --- a/include/yaz/d1_map.h +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright (c) 1995-2000, Index Data. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation, in whole or in part, for any purpose, is hereby granted, - * provided that: - * - * 1. This copyright and permission notice appear in all copies of the - * software and its documentation. Notices of copyright or attribution - * which appear at the beginning of any file must remain unchanged. - * - * 2. The names of Index Data or the individual authors may not be used to - * endorse or promote products derived from this software without specific - * prior written permission. - * - * THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT WARRANTY OF ANY KIND, - * EXPRESS, IMPLIED, OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * IN NO EVENT SHALL INDEX DATA BE LIABLE FOR ANY SPECIAL, INCIDENTAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR - * NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - * - */ - -#ifndef D1_MAP_H -#define D1_MAP_H - -YAZ_BEGIN_CDECL - -typedef struct data1_maptag -{ - int new_field; - int type; -#define D1_MAPTAG_numeric 1 -#define D1_MAPTAG_string 2 - int which; - union - { - int numeric; - char *string; - } value; - struct data1_maptag *next; -} data1_maptag; - -typedef struct data1_mapunit -{ - int no_data; - char *source_element_name; - data1_maptag *target_path; - struct data1_mapunit *next; -} data1_mapunit; - -typedef struct data1_maptab -{ - char *name; - oid_value target_absyn_ref; - char *target_absyn_name; - data1_mapunit *map; - struct data1_maptab *next; -} data1_maptab; - -YAZ_END_CDECL - -#endif diff --git a/include/yaz/data1.h b/include/yaz/data1.h deleted file mode 100644 index 0db650f..0000000 --- a/include/yaz/data1.h +++ /dev/null @@ -1,497 +0,0 @@ -/* - * Copyright (c) 1995-2002, Index Data. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation, in whole or in part, for any purpose, is hereby granted, - * provided that: - * - * 1. This copyright and permission notice appear in all copies of the - * software and its documentation. Notices of copyright or attribution - * which appear at the beginning of any file must remain unchanged. - * - * 2. The names of Index Data or the individual authors may not be used to - * endorse or promote products derived from this software without specific - * prior written permission. - * - * THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT WARRANTY OF ANY KIND, - * EXPRESS, IMPLIED, OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * IN NO EVENT SHALL INDEX DATA BE LIABLE FOR ANY SPECIAL, INCIDENTAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR - * NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - * - * $Id: data1.h,v 1.18 2002-10-08 20:14:44 adam Exp $ - */ - -#ifndef DATA1_H -#define DATA1_H - -#include - -#include -#include -#include - -#include -#include -#include -#include - -#define d1_isspace(c) strchr(" \r\n\t\f", c) -#define d1_isdigit(c) ((c) <= '9' && (c) >= '0') - -YAZ_BEGIN_CDECL - -#define data1_matchstr(s1, s2) yaz_matchstr(s1, s2) - -#define DATA1_MAX_SYMBOL 31 - -typedef struct data1_name -{ - char *name; - struct data1_name *next; -} data1_name; - -typedef struct data1_absyn_cache_info *data1_absyn_cache; -typedef struct data1_attset_cache_info *data1_attset_cache; - -typedef enum data1_datatype -{ - DATA1K_unknown, - DATA1K_structured, - DATA1K_string, - DATA1K_numeric, - DATA1K_bool, - DATA1K_oid, - DATA1K_generalizedtime, - DATA1K_intunit, - DATA1K_int, - DATA1K_octetstring, - DATA1K_null -} data1_datatype; - -typedef struct data1_marctab -{ - char *name; - oid_value reference; - - char record_status[2]; - char implementation_codes[5]; - int indicator_length; - int identifier_length; - char user_systems[4]; - - int length_data_entry; - int length_starting; - int length_implementation; - char future_use[2]; - - int force_indicator_length; - int force_identifier_length; - struct data1_marctab *next; -} data1_marctab; - -typedef struct data1_esetname -{ - char *name; - Z_Espec1 *spec; - struct data1_esetname *next; -} data1_esetname; - -/* - * Variant set definitions. - */ - -typedef struct data1_vartype -{ - char *name; - struct data1_varclass *zclass; - int type; - data1_datatype datatype; - struct data1_vartype *next; -} data1_vartype; - -typedef struct data1_varclass -{ - char *name; - struct data1_varset *set; - int zclass; - data1_vartype *types; - struct data1_varclass *next; -} data1_varclass; - -typedef struct data1_varset -{ - char *name; - oid_value reference; - data1_varclass *classes; -} data1_varset; - -/* - * Tagset definitions - */ - -struct data1_tagset; - -typedef struct data1_tag -{ - data1_name *names; -#define DATA1T_numeric 1 -#define DATA1T_string 2 - int which; - union - { - int numeric; - char *string; - } value; - data1_datatype kind; - - struct data1_tagset *tagset; - struct data1_tag *next; -} data1_tag; - -typedef struct data1_tagset data1_tagset; - -struct data1_tagset -{ - int type; /* type of tagset in current context */ - char *name; /* symbolic name */ - oid_value reference; - data1_tag *tags; /* tags defined by this set */ - data1_tagset *children; /* children */ - data1_tagset *next; /* sibling */ -}; - -typedef struct data1_termlist -{ - data1_att *att; - char *structure; - char *source; - struct data1_termlist *next; -} data1_termlist; - -/* - * abstract syntax specification - */ - -typedef struct data1_element -{ - char *name; - data1_tag *tag; - data1_termlist *termlists; - char *sub_name; - struct data1_element *children; - struct data1_element *next; -} data1_element; - -typedef struct data1_sub_elements { - char *name; - struct data1_sub_elements *next; - data1_element *elements; -} data1_sub_elements; - -typedef struct data1_xattr { - char *name; - char *value; - struct data1_xattr *next; - unsigned short what; /* DATA1I_text, .. see data1_node.u.data */ -} data1_xattr; - -typedef struct data1_absyn -{ - char *name; - oid_value reference; - data1_tagset *tagset; - data1_attset *attset; - data1_varset *varset; - data1_esetname *esetnames; - data1_maptab *maptabs; - data1_marctab *marc; - data1_sub_elements *sub_elements; - data1_element *main_elements; - char *encoding; - int enable_xpath_indexing; -} data1_absyn; - -/* - * record data node (tag/data/variant) - */ - -typedef struct data1_node -{ - /* the root of a record (containing global data) */ -#define DATA1N_root 1 - /* a tag */ -#define DATA1N_tag 2 - /* some data under a leaf tag or variant */ -#define DATA1N_data 3 - /* variant specification (a triple, actually) */ -#define DATA1N_variant 4 - /* comment (same as data) */ -#define DATA1N_comment 5 - /* preprocessing instruction */ -#define DATA1N_preprocess 6 - int which; - union - { - struct - { - char *type; - data1_absyn *absyn; /* abstract syntax for this type */ - } root; - - struct - { - char *tag; - data1_element *element; - int no_data_requested; - int get_bytes; - unsigned node_selected : 1; - unsigned make_variantlist : 1; - data1_xattr *attributes; - } tag; - - struct - { - char *data; /* filename or data */ - int len; - /* text inclusion */ -#define DATA1I_inctxt 1 - /* binary data inclusion */ -#define DATA1I_incbin 2 - /* text data */ -#define DATA1I_text 3 - /* numerical data */ -#define DATA1I_num 4 - /* object identifier */ -#define DATA1I_oid 5 - /* XML text */ -#define DATA1I_xmltext 6 - unsigned what:7; - unsigned formatted_text : 1; /* newlines are significant */ - } data; - - struct - { - data1_vartype *type; - char *value; - } variant; - - struct - { - char *target; - data1_xattr *attributes; - } preprocess; - } u; - - void (*destroy)(struct data1_node *n); -#define DATA1_LOCALDATA 12 - char lbuf[DATA1_LOCALDATA]; /* small buffer for local data */ - struct data1_node *next; - struct data1_node *child; - struct data1_node *last_child; - struct data1_node *parent; - struct data1_node *root; -} data1_node; - -YAZ_EXPORT data1_handle data1_create (void); - -#define DATA1_FLAG_XML 1 -YAZ_EXPORT data1_handle data1_createx (int flags); - -YAZ_EXPORT void data1_destroy(data1_handle dh); -YAZ_EXPORT data1_node *get_parent_tag(data1_handle dh, data1_node *n); -YAZ_EXPORT data1_node *data1_read_node(data1_handle dh, const char **buf, - NMEM m); -YAZ_EXPORT data1_node *data1_read_nodex (data1_handle dh, NMEM m, - int (*get_byte)(void *fh), void *fh, - WRBUF wrbuf); -YAZ_EXPORT data1_node *data1_read_record(data1_handle dh, - int (*rf)(void *, char *, size_t), - void *fh, NMEM m); -YAZ_EXPORT data1_absyn *data1_read_absyn(data1_handle dh, const char *file, - int file_must_exist); -YAZ_EXPORT data1_tag *data1_gettagbynum(data1_handle dh, - data1_tagset *s, - int type, int value); -YAZ_EXPORT data1_tagset *data1_empty_tagset (data1_handle dh); -YAZ_EXPORT data1_tagset *data1_read_tagset(data1_handle dh, - const char *file, - int type); -YAZ_EXPORT data1_element *data1_getelementbytagname(data1_handle dh, - data1_absyn *abs, - data1_element *parent, - const char *tagname); -YAZ_EXPORT Z_GenericRecord *data1_nodetogr(data1_handle dh, data1_node *n, - int select, ODR o, - int *len); -YAZ_EXPORT data1_tag *data1_gettagbyname(data1_handle dh, data1_tagset *s, - const char *name); -YAZ_EXPORT void data1_free_tree(data1_handle dh, data1_node *t); -YAZ_EXPORT char *data1_nodetobuf(data1_handle dh, data1_node *n, - int select, int *len); -YAZ_EXPORT data1_node *data1_mk_tag_data_wd(data1_handle dh, - data1_node *at, - const char *tagname, NMEM m); -YAZ_EXPORT data1_node *data1_mk_tag_data(data1_handle dh, data1_node *at, - const char *tagname, NMEM m); -YAZ_EXPORT data1_datatype data1_maptype(data1_handle dh, char *t); -YAZ_EXPORT data1_varset *data1_read_varset(data1_handle dh, const char *file); -YAZ_EXPORT data1_vartype *data1_getvartypebyct(data1_handle dh, - data1_varset *set, - char *zclass, char *type); -YAZ_EXPORT Z_Espec1 *data1_read_espec1(data1_handle dh, const char *file); -YAZ_EXPORT int data1_doespec1(data1_handle dh, data1_node *n, Z_Espec1 *e); -YAZ_EXPORT data1_esetname *data1_getesetbyname(data1_handle dh, - data1_absyn *a, - const char *name); -YAZ_EXPORT data1_element *data1_getelementbyname(data1_handle dh, - data1_absyn *absyn, - const char *name); -YAZ_EXPORT data1_node *data1_mk_node2(data1_handle dh, NMEM m, - int type, data1_node *parent); - -YAZ_EXPORT data1_node *data1_mk_tag (data1_handle dh, NMEM nmem, - const char *tag, const char **attr, - data1_node *at); -YAZ_EXPORT data1_node *data1_mk_tag_n (data1_handle dh, NMEM nmem, - const char *tag, size_t len, - const char **attr, - data1_node *at); -YAZ_EXPORT void data1_tag_add_attr (data1_handle dh, NMEM nmem, - data1_node *res, const char **attr); - -YAZ_EXPORT data1_node *data1_mk_text_n (data1_handle dh, NMEM mem, - const char *buf, size_t len, - data1_node *parent); -YAZ_EXPORT data1_node *data1_mk_text_nf (data1_handle dh, NMEM mem, - const char *buf, size_t len, - data1_node *parent); -YAZ_EXPORT data1_node *data1_mk_text (data1_handle dh, NMEM mem, - const char *buf, data1_node *parent); - -YAZ_EXPORT data1_node *data1_mk_comment_n (data1_handle dh, NMEM mem, - const char *buf, size_t len, - data1_node *parent); - -YAZ_EXPORT data1_node *data1_mk_comment (data1_handle dh, NMEM mem, - const char *buf, data1_node *parent); - -YAZ_EXPORT data1_node *data1_mk_preprocess_n (data1_handle dh, NMEM nmem, - const char *target, size_t len, - const char **attr, - data1_node *at); - -YAZ_EXPORT data1_node *data1_mk_preprocess (data1_handle dh, NMEM nmem, - const char *target, - const char **attr, - data1_node *at); - -YAZ_EXPORT data1_node *data1_mk_root (data1_handle dh, NMEM nmem, - const char *name); -YAZ_EXPORT void data1_set_root(data1_handle dh, data1_node *res, - NMEM nmem, const char *name); - -YAZ_EXPORT data1_node *data1_mk_tag_data_int (data1_handle dh, data1_node *at, - const char *tag, int num, - NMEM nmem); -YAZ_EXPORT data1_node *data1_mk_tag_data_oid (data1_handle dh, data1_node *at, - const char *tag, Odr_oid *oid, - NMEM nmem); -YAZ_EXPORT data1_node *data1_mk_tag_data_text (data1_handle dh, data1_node *at, - const char *tag, - const char *str, - NMEM nmem); -YAZ_EXPORT data1_node *data1_mk_tag_data_text_uni (data1_handle dh, - data1_node *at, - const char *tag, - const char *str, - NMEM nmem); - -YAZ_EXPORT data1_absyn *data1_get_absyn (data1_handle dh, const char *name); - -YAZ_EXPORT data1_node *data1_search_tag (data1_handle dh, data1_node *n, - const char *tag); -YAZ_EXPORT data1_node *data1_mk_tag_uni (data1_handle dh, NMEM nmem, - const char *tag, data1_node *at); -YAZ_EXPORT data1_attset *data1_get_attset (data1_handle dh, const char *name); -YAZ_EXPORT data1_maptab *data1_read_maptab(data1_handle dh, const char *file); -YAZ_EXPORT data1_node *data1_map_record(data1_handle dh, data1_node *n, - data1_maptab *map, NMEM m); -YAZ_EXPORT data1_marctab *data1_read_marctab (data1_handle dh, - const char *file); -YAZ_EXPORT char *data1_nodetomarc(data1_handle dh, data1_marctab *p, - data1_node *n, int selected, int *len); -YAZ_EXPORT char *data1_nodetoidsgml(data1_handle dh, data1_node *n, - int select, int *len); -YAZ_EXPORT Z_ExplainRecord *data1_nodetoexplain(data1_handle dh, - data1_node *n, int select, - ODR o); -YAZ_EXPORT Z_BriefBib *data1_nodetosummary(data1_handle dh, - data1_node *n, int select, - ODR o); -YAZ_EXPORT char *data1_nodetosoif(data1_handle dh, data1_node *n, int select, - int *len); -YAZ_EXPORT void data1_set_tabpath(data1_handle dh, const char *path); -YAZ_EXPORT void data1_set_tabroot (data1_handle dp, const char *p); -YAZ_EXPORT const char *data1_get_tabpath(data1_handle dh); -YAZ_EXPORT const char *data1_get_tabroot(data1_handle dh); - -YAZ_EXPORT WRBUF data1_get_wrbuf (data1_handle dp); -YAZ_EXPORT char **data1_get_read_buf (data1_handle dp, int **lenp); -YAZ_EXPORT char **data1_get_map_buf (data1_handle dp, int **lenp); -YAZ_EXPORT data1_absyn_cache *data1_absyn_cache_get (data1_handle dh); -YAZ_EXPORT data1_attset_cache *data1_attset_cache_get (data1_handle dh); -YAZ_EXPORT NMEM data1_nmem_get (data1_handle dh); -YAZ_EXPORT void data1_pr_tree (data1_handle dh, data1_node *n, FILE *out); -YAZ_EXPORT char *data1_insert_string (data1_handle dh, data1_node *res, - NMEM m, const char *str); -YAZ_EXPORT char *data1_insert_string_n (data1_handle dh, data1_node *res, - NMEM m, const char *str, size_t len); -YAZ_EXPORT data1_node *data1_read_sgml (data1_handle dh, NMEM m, - const char *buf); -YAZ_EXPORT data1_node *data1_read_xml (data1_handle dh, - int (*rf)(void *, char *, size_t), - void *fh, NMEM m); -YAZ_EXPORT void data1_absyn_trav (data1_handle dh, void *handle, - void (*fh)(data1_handle dh, - void *h, data1_absyn *a)); - -YAZ_EXPORT data1_attset *data1_attset_search_id (data1_handle dh, int id); - -YAZ_EXPORT char *data1_getNodeValue(data1_node* node, char* pTagPath); -YAZ_EXPORT data1_node *data1_LookupNode(data1_node* node, char* pTagPath); -YAZ_EXPORT int data1_CountOccurences(data1_node* node, char* pTagPath); - -YAZ_EXPORT FILE *data1_path_fopen (data1_handle dh, const char *file, - const char *mode); - -/* obsolete functions ... */ - -YAZ_EXPORT data1_node *data1_mk_node (data1_handle dh, NMEM m); -YAZ_EXPORT data1_node *data1_insert_taggeddata (data1_handle dh, - data1_node *root, - data1_node *at, - const char *tagname, NMEM m); -YAZ_EXPORT data1_node *data1_mk_node_type (data1_handle dh, NMEM m, int type); -YAZ_EXPORT data1_node *data1_add_taggeddata (data1_handle dh, data1_node *root, - data1_node *at, - const char *tagname, - NMEM m); - -YAZ_EXPORT data1_node *data1_get_root_tag (data1_handle dh, data1_node *n); - -YAZ_EXPORT int data1_iconv (data1_handle dh, NMEM m, data1_node *n, - const char *tocode, - const char *fromcode); - -YAZ_EXPORT const char *data1_get_encoding (data1_handle dh, data1_node *n); - -YAZ_EXPORT int data1_is_xmlmode(data1_handle dh); - -YAZ_END_CDECL - -#endif diff --git a/lib/Makefile.am b/lib/Makefile.am index 1965843..ca46b69 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -1,4 +1,4 @@ -## $Id: Makefile.am,v 1.23 2002-09-16 18:45:13 adam Exp $ +## $Id: Makefile.am,v 1.24 2002-10-22 12:51:18 adam Exp $ if ISTHR extra=libyazthread.la @@ -74,7 +74,6 @@ tcpip.o: $(top_srcdir)/comstack/tcpip.c libyaz_la_LIBADD=../odr/libodr.la \ ../comstack/libcomstack.la ../server/libserver.la \ - ../util/libutil.la ../retrieval/libret.la \ - ../ccl/libccl.la ../zutil/libzutil.la \ + ../util/libutil.la ../ccl/libccl.la ../zutil/libzutil.la \ ../ill/libill.la ../z39.50/libz39.50.la diff --git a/retrieval/Makefile.am b/retrieval/Makefile.am deleted file mode 100644 index aff1919..0000000 --- a/retrieval/Makefile.am +++ /dev/null @@ -1,10 +0,0 @@ -## $Id: Makefile.am,v 1.8 2002-09-11 21:25:57 adam Exp $ - -noinst_LTLIBRARIES=libret.la - -libret_la_SOURCES = d1_handle.c d1_read.c d1_attset.c d1_tagset.c d1_absyn.c \ - d1_grs.c d1_sutrs.c d1_varset.c d1_espec.c d1_doespec.c d1_map.c d1_marc.c \ - d1_write.c d1_expout.c d1_sumout.c d1_soif.c d1_prtree.c d1_if.c - -AM_CPPFLAGS=-I$(top_srcdir)/include - diff --git a/retrieval/d1_absyn.c b/retrieval/d1_absyn.c deleted file mode 100644 index 349e4d5..0000000 --- a/retrieval/d1_absyn.c +++ /dev/null @@ -1,700 +0,0 @@ -/* - * Copyright (c) 1995-2002, Index Data. - * See the file LICENSE for details. - * Sebastian Hammer, Adam Dickmeiss - * - * $Id: d1_absyn.c,v 1.34 2002-08-29 21:26:08 mike Exp $ - */ - -#include -#include -#include -#include - -#include -#include -#include - -#define D1_MAX_NESTING 128 - -struct data1_absyn_cache_info -{ - char *name; - data1_absyn *absyn; - data1_absyn_cache next; -}; - -struct data1_attset_cache_info -{ - char *name; - data1_attset *attset; - data1_attset_cache next; -}; - -data1_absyn *data1_absyn_search (data1_handle dh, const char *name) -{ - data1_absyn_cache p = *data1_absyn_cache_get (dh); - - while (p) - { - if (!strcmp (name, p->name)) - return p->absyn; - p = p->next; - } - return NULL; -} - -void data1_absyn_trav (data1_handle dh, void *handle, - void (*fh)(data1_handle dh, void *h, data1_absyn *a)) -{ - data1_absyn_cache p = *data1_absyn_cache_get (dh); - - while (p) - { - (*fh)(dh, handle, p->absyn); - p = p->next; - } -} - -data1_absyn *data1_absyn_add (data1_handle dh, const char *name) -{ - char fname[512]; - NMEM mem = data1_nmem_get (dh); - - data1_absyn_cache p = (data1_absyn_cache)nmem_malloc (mem, sizeof(*p)); - data1_absyn_cache *pp = data1_absyn_cache_get (dh); - - sprintf(fname, "%s.abs", name); - p->absyn = data1_read_absyn (dh, fname, 0); - p->name = nmem_strdup (mem, name); - p->next = *pp; - *pp = p; - return p->absyn; -} - -data1_absyn *data1_get_absyn (data1_handle dh, const char *name) -{ - data1_absyn *absyn; - - if (!(absyn = data1_absyn_search (dh, name))) - absyn = data1_absyn_add (dh, name); - return absyn; -} - -data1_attset *data1_attset_search_name (data1_handle dh, const char *name) -{ - data1_attset_cache p = *data1_attset_cache_get (dh); - - while (p) - { - if (!strcmp (name, p->name)) - return p->attset; - p = p->next; - } - return NULL; -} - -data1_attset *data1_attset_search_id (data1_handle dh, int id) -{ - data1_attset_cache p = *data1_attset_cache_get (dh); - - while (p) - { - if (id == p->attset->reference) - return p->attset; - p = p->next; - } - return NULL; -} - -data1_attset *data1_attset_add (data1_handle dh, const char *name) -{ - char fname[512], aname[512]; - NMEM mem = data1_nmem_get (dh); - data1_attset *attset; - - strcpy (aname, name); - sprintf(fname, "%s.att", name); - attset = data1_read_attset (dh, fname); - if (!attset) - { - char *cp; - attset = data1_read_attset (dh, name); - if (attset && (cp = strrchr (aname, '.'))) - *cp = '\0'; - } - if (!attset) - yaz_log (LOG_WARN|LOG_ERRNO, "Couldn't load attribute set %s", name); - else - { - data1_attset_cache p = (data1_attset_cache) - nmem_malloc (mem, sizeof(*p)); - data1_attset_cache *pp = data1_attset_cache_get (dh); - - attset->name = p->name = nmem_strdup (mem, aname); - p->attset = attset; - p->next = *pp; - *pp = p; - } - return attset; -} - -data1_attset *data1_get_attset (data1_handle dh, const char *name) -{ - data1_attset *attset; - - if (!(attset = data1_attset_search_name (dh, name))) - attset = data1_attset_add (dh, name); - return attset; -} - -data1_esetname *data1_getesetbyname(data1_handle dh, data1_absyn *a, - const char *name) -{ - data1_esetname *r; - - for (r = a->esetnames; r; r = r->next) - if (!data1_matchstr(r->name, name)) - return r; - return 0; -} - -data1_element *data1_getelementbytagname (data1_handle dh, data1_absyn *abs, - data1_element *parent, - const char *tagname) -{ - data1_element *r; - - /* It's now possible to have a data1 tree with no abstract syntax */ - if ( !abs ) - return 0; - - if (!parent) - r = abs->main_elements; - else - r = parent->children; - - for (; r; r = r->next) - { - data1_name *n; - - for (n = r->tag->names; n; n = n->next) - if (!data1_matchstr(tagname, n->name)) - return r; - } - return 0; -} - -data1_element *data1_getelementbyname (data1_handle dh, data1_absyn *absyn, - const char *name) -{ - data1_element *r; - - /* It's now possible to have a data1 tree with no abstract syntax */ - if ( !absyn ) - return 0; - for (r = absyn->main_elements; r; r = r->next) - if (!data1_matchstr(r->name, name)) - return r; - return 0; -} - - -void fix_element_ref (data1_handle dh, data1_absyn *absyn, data1_element *e) -{ - /* It's now possible to have a data1 tree with no abstract syntax */ - if ( !absyn ) - return; - - for (; e; e = e->next) - { - if (!e->sub_name) - { - if (e->children) - fix_element_ref (dh, absyn, e->children); - } - else - { - data1_sub_elements *sub_e = absyn->sub_elements; - while (sub_e && strcmp (e->sub_name, sub_e->name)) - sub_e = sub_e->next; - if (sub_e) - e->children = sub_e->elements; - else - yaz_log (LOG_WARN, "Unresolved reference to sub-elements %s", - e->sub_name); - } - } -} - - -static int parse_termlists (data1_handle dh, data1_termlist ***tpp, - char *p, const char *file, int lineno, - const char *element_name, data1_absyn *res) -{ - data1_termlist **tp = *tpp; - do - { - char attname[512], structure[512]; - char *source; - int r; - - if (!(r = sscanf(p, "%511[^:,]:%511[^,]", attname, - structure))) - { - yaz_log(LOG_WARN, - "%s:%d: Syntax error in termlistspec '%s'", - file, lineno, p); - return -1; - } - if (*attname == '!') - strcpy(attname, element_name); - *tp = (data1_termlist *) - nmem_malloc(data1_nmem_get(dh), sizeof(**tp)); - (*tp)->next = 0; - if (!((*tp)->att = data1_getattbyname(dh, res->attset, - attname))) - { - yaz_log(LOG_WARN, - "%s:%d: Couldn't find att '%s' in attset", - file, lineno, attname); - return -1; - } - if (r == 2 && (source = strchr(structure, ':'))) - *source++ = '\0'; /* cut off structure .. */ - else - source = "data"; /* ok: default is leaf data */ - (*tp)->source = (char *) - nmem_strdup (data1_nmem_get (dh), source); - - if (r < 2) /* is the structure qualified? */ - (*tp)->structure = "w"; - else - (*tp)->structure = (char *) - nmem_strdup (data1_nmem_get (dh), structure); - tp = &(*tp)->next; - } - while ((p = strchr(p, ',')) && *(++p)); - *tpp = tp; - return 0; -} - -data1_absyn *data1_read_absyn (data1_handle dh, const char *file, - int file_must_exist) -{ - data1_sub_elements *cur_elements = NULL; - data1_absyn *res = 0; - FILE *f; - data1_element **ppl[D1_MAX_NESTING]; - data1_esetname **esetpp; - data1_maptab **maptabp; - data1_marctab **marcp; - data1_termlist *all = 0; - data1_attset_child **attset_childp; - data1_tagset **tagset_childp; - int level = 0; - int lineno = 0; - int argc; - char *argv[50], line[512]; - - if (!(f = data1_path_fopen(dh, file, "r"))) - { - yaz_log(LOG_WARN|LOG_ERRNO, "Couldn't open %s", file); - if (file_must_exist) - return 0; - } - - res = (data1_absyn *) nmem_malloc(data1_nmem_get(dh), sizeof(*res)); - res->name = 0; - res->reference = VAL_NONE; - res->tagset = 0; - res->encoding = 0; - res->enable_xpath_indexing = (f ? 0 : 1); - tagset_childp = &res->tagset; - - res->attset = data1_empty_attset (dh); - attset_childp = &res->attset->children; - - res->varset = 0; - res->esetnames = 0; - esetpp = &res->esetnames; - res->maptabs = 0; - maptabp = &res->maptabs; - res->marc = 0; - marcp = &res->marc; - - res->sub_elements = NULL; - res->main_elements = NULL; - - while (f && (argc = readconf_line(f, &lineno, line, 512, argv, 50))) - { - char *cmd = *argv; - if (!strcmp(cmd, "elm") || !strcmp(cmd, "element")) - { - data1_element *new_element; - int i; - char *p, *sub_p, *path, *name, *termlists; - int type, value; - data1_termlist **tp; - - if (argc < 4) - { - yaz_log(LOG_WARN, "%s:%d: Bad # of args to elm", file, lineno); - continue; - } - path = argv[1]; - name = argv[2]; - termlists = argv[3]; - - if (!cur_elements) - { - cur_elements = (data1_sub_elements *) - nmem_malloc(data1_nmem_get(dh), sizeof(*cur_elements)); - cur_elements->next = res->sub_elements; - cur_elements->elements = NULL; - cur_elements->name = "main"; - res->sub_elements = cur_elements; - - level = 0; - ppl[level] = &cur_elements->elements; - } - p = path; - for (i = 1;; i++) - { - char *e; - - if ((e = strchr(p, '/'))) - p = e+1; - else - break; - } - if (i > level+1) - { - yaz_log(LOG_WARN, "%s:%d: Bad level increase", file, lineno); - fclose(f); - return 0; - } - level = i; - new_element = *ppl[level-1] = (data1_element *) - nmem_malloc(data1_nmem_get(dh), sizeof(*new_element)); - new_element->next = new_element->children = 0; - new_element->tag = 0; - new_element->termlists = 0; - new_element->sub_name = 0; - - tp = &new_element->termlists; - ppl[level-1] = &new_element->next; - ppl[level] = &new_element->children; - - /* consider subtree (if any) ... */ - if ((sub_p = strchr (p, ':')) && sub_p[1]) - { - *sub_p++ = '\0'; - new_element->sub_name = - nmem_strdup (data1_nmem_get(dh), sub_p); - } - /* well-defined tag */ - if (sscanf(p, "(%d,%d)", &type, &value) == 2) - { - if (!res->tagset) - { - yaz_log(LOG_WARN, "%s:%d: No tagset loaded", file, lineno); - fclose(f); - return 0; - } - if (!(new_element->tag = data1_gettagbynum (dh, res->tagset, - type, value))) - { - yaz_log(LOG_WARN, "%s:%d: Couldn't find tag %s in tagset", - file, lineno, p); - fclose(f); - return 0; - } - } - /* private tag */ - else if (*p) - { - data1_tag *nt = - new_element->tag = (data1_tag *) - nmem_malloc(data1_nmem_get (dh), - sizeof(*new_element->tag)); - nt->which = DATA1T_string; - nt->value.string = nmem_strdup(data1_nmem_get (dh), p); - nt->names = (data1_name *) - nmem_malloc(data1_nmem_get(dh), - sizeof(*new_element->tag->names)); - nt->names->name = nt->value.string; - nt->names->next = 0; - nt->kind = DATA1K_string; - nt->next = 0; - nt->tagset = 0; - } - else - { - yaz_log(LOG_WARN, "%s:%d: Bad element", file, lineno); - fclose(f); - return 0; - } - /* parse termList definitions */ - p = termlists; - if (*p != '-') - { - assert (res->attset); - - if (parse_termlists (dh, &tp, p, file, lineno, name, res)) - { - fclose (f); - return 0; - } - *tp = all; /* append any ALL entries to the list */ - } - new_element->name = nmem_strdup(data1_nmem_get (dh), name); - } - else if (!strcmp(cmd, "section")) - { - char *name; - - if (argc < 2) - { - yaz_log(LOG_WARN, "%s:%d: Bad # of args to section", - file, lineno); - continue; - } - name = argv[1]; - - cur_elements = (data1_sub_elements *) - nmem_malloc(data1_nmem_get(dh), sizeof(*cur_elements)); - cur_elements->next = res->sub_elements; - cur_elements->elements = NULL; - cur_elements->name = nmem_strdup (data1_nmem_get(dh), name); - res->sub_elements = cur_elements; - - level = 0; - ppl[level] = &cur_elements->elements; - } - else if (!strcmp(cmd, "xpath")) - { - if (argc != 2) - { - yaz_log(LOG_WARN, "%s:%d: Bad # of args to 'xpath' directive", - file, lineno); - continue; - } - if (!strcmp(argv[1], "enable")) - res->enable_xpath_indexing = 1; - else if (!strcmp (argv[1], "disable")) - res->enable_xpath_indexing = 0; - else - { - yaz_log(LOG_WARN, "%s:%d: Expecting disable/enable " - "after 'xpath' directive", file, lineno); - } - } - else if (!strcmp(cmd, "all")) - { - data1_termlist **tp = &all; - if (all) - { - yaz_log(LOG_WARN, "%s:%d: Too many 'all' directives - ignored", - file, lineno); - continue; - } - if (argc != 2) - { - yaz_log(LOG_WARN, "%s:%d: Bad # of args to 'all' directive", - file, lineno); - continue; - } - if (parse_termlists (dh, &tp, argv[1], file, lineno, 0, res)) - { - fclose (f); - return 0; - } - } - else if (!strcmp(cmd, "name")) - { - if (argc != 2) - { - yaz_log(LOG_WARN, "%s:%d: Bad # of args to name directive", - file, lineno); - continue; - } - res->name = nmem_strdup(data1_nmem_get(dh), argv[1]); - } - else if (!strcmp(cmd, "reference")) - { - char *name; - - if (argc != 2) - { - yaz_log(LOG_WARN, "%s:%d: Bad # of args to reference", - file, lineno); - continue; - } - name = argv[1]; - if ((res->reference = oid_getvalbyname(name)) == VAL_NONE) - { - yaz_log(LOG_WARN, "%s:%d: Unknown tagset ref '%s'", - file, lineno, name); - continue; - } - } - else if (!strcmp(cmd, "attset")) - { - char *name; - data1_attset *attset; - - if (argc != 2) - { - yaz_log(LOG_WARN, "%s:%d: Bad # of args to attset", - file, lineno); - continue; - } - name = argv[1]; - if (!(attset = data1_get_attset (dh, name))) - { - yaz_log(LOG_WARN, "%s:%d: Couldn't find attset %s", - file, lineno, name); - continue; - } - *attset_childp = (data1_attset_child *) - nmem_malloc (data1_nmem_get(dh), sizeof(**attset_childp)); - (*attset_childp)->child = attset; - (*attset_childp)->next = 0; - attset_childp = &(*attset_childp)->next; - } - else if (!strcmp(cmd, "tagset")) - { - char *name; - int type = 0; - if (argc < 2) - { - yaz_log(LOG_WARN, "%s:%d: Bad # of args to tagset", - file, lineno); - continue; - } - name = argv[1]; - if (argc == 3) - type = atoi(argv[2]); - *tagset_childp = data1_read_tagset (dh, name, type); - if (!(*tagset_childp)) - { - yaz_log(LOG_WARN, "%s:%d: Couldn't load tagset %s", - file, lineno, name); - continue; - } - tagset_childp = &(*tagset_childp)->next; - } - else if (!strcmp(cmd, "varset")) - { - char *name; - - if (argc != 2) - { - yaz_log(LOG_WARN, "%s:%d: Bad # of args in varset", - file, lineno); - continue; - } - name = argv[1]; - if (!(res->varset = data1_read_varset (dh, name))) - { - yaz_log(LOG_WARN, "%s:%d: Couldn't load Varset %s", - file, lineno, name); - continue; - } - } - else if (!strcmp(cmd, "esetname")) - { - char *name, *fname; - - if (argc != 3) - { - yaz_log(LOG_WARN, "%s:%d: Bad # of args in esetname", - file, lineno); - continue; - } - name = argv[1]; - fname = argv[2]; - - *esetpp = (data1_esetname *) - nmem_malloc(data1_nmem_get(dh), sizeof(**esetpp)); - (*esetpp)->name = nmem_strdup(data1_nmem_get(dh), name); - (*esetpp)->next = 0; - if (*fname == '@') - (*esetpp)->spec = 0; - else if (!((*esetpp)->spec = data1_read_espec1 (dh, fname))) - { - yaz_log(LOG_WARN, "%s:%d: Espec-1 read failed for %s", - file, lineno, fname); - continue; - } - esetpp = &(*esetpp)->next; - } - else if (!strcmp(cmd, "maptab")) - { - char *name; - - if (argc != 2) - { - yaz_log(LOG_WARN, "%s:%d: Bad # of args for maptab", - file, lineno); - continue; - } - name = argv[1]; - if (!(*maptabp = data1_read_maptab (dh, name))) - { - yaz_log(LOG_WARN, "%s:%d: Couldn't load maptab %s", - file, lineno, name); - continue; - } - maptabp = &(*maptabp)->next; - } - else if (!strcmp(cmd, "marc")) - { - char *name; - - if (argc != 2) - { - yaz_log(LOG_WARN, "%s:%d: Bad # or args for marc", - file, lineno); - continue; - } - name = argv[1]; - if (!(*marcp = data1_read_marctab (dh, name))) - { - yaz_log(LOG_WARN, "%s:%d: Couldn't read marctab %s", - file, lineno, name); - continue; - } - marcp = &(*marcp)->next; - } - else if (!strcmp(cmd, "encoding")) - { - if (argc != 2) - { - yaz_log(LOG_WARN, "%s:%d: Bad # or args for encoding", - file, lineno); - continue; - } - res->encoding = nmem_strdup (data1_nmem_get(dh), argv[1]); - } - else - { - yaz_log(LOG_WARN, "%s:%d: Unknown directive '%s'", file, - lineno, cmd); - continue; - } - } - if (f) - fclose(f); - - for (cur_elements = res->sub_elements; cur_elements; - cur_elements = cur_elements->next) - { - if (!strcmp (cur_elements->name, "main")) - res->main_elements = cur_elements->elements; - fix_element_ref (dh, res, cur_elements->elements); - } - yaz_log (LOG_DEBUG, "%s: data1_read_absyn end", file); - return res; -} diff --git a/retrieval/d1_attset.c b/retrieval/d1_attset.c deleted file mode 100644 index 72d271c..0000000 --- a/retrieval/d1_attset.c +++ /dev/null @@ -1,234 +0,0 @@ -/* - * Copyright (c) 1995-1999, Index Data. - * See the file LICENSE for details. - * Sebastian Hammer, Adam Dickmeiss - * - * $Log: d1_attset.c,v $ - * Revision 1.15 2002-04-04 20:49:46 adam - * New functions yaz_is_abspath, yaz_path_fopen_base - * - * Revision 1.14 1999/11/30 13:47:12 adam - * Improved installation. Moved header files to include/yaz. - * - * Revision 1.13 1999/10/21 12:06:29 adam - * Retrieval module no longer uses ctype.h - functions. - * - * Revision 1.12 1999/08/27 09:40:32 adam - * Renamed logf function to yaz_log. Removed VC++ project files. - * - * Revision 1.11 1998/10/14 13:31:56 adam - * Bug fix. Bug introduced by previous commit. - * - * Revision 1.10 1998/10/13 16:09:48 adam - * Added support for arbitrary OID's for tagsets, schemas and attribute sets. - * Added support for multiple attribute set references and tagset references - * from an abstract syntax file. - * Fixed many bad logs-calls in routines that read the various - * specifications regarding data1 (*.abs,*.att,...) and made the messages - * consistent whenever possible. - * Added extra 'lineno' argument to function readconf_line. - * - * Revision 1.9 1998/05/18 13:07:03 adam - * Changed the way attribute sets are handled by the retriaval module. - * Extended Explain conversion / schema. - * Modified server and client to work with ASN.1 compiled protocol handlers. - * - * Revision 1.8 1998/02/11 11:53:35 adam - * Changed code so that it compiles as C++. - * - * Revision 1.7 1997/09/17 12:10:34 adam - * YAZ version 1.4. - * - * Revision 1.6 1997/09/05 09:50:56 adam - * Removed global data1_tabpath - uses data1_get_tabpath() instead. - * - * Revision 1.5 1996/05/09 07:27:43 quinn - * Multiple local attributes values supported. - * - * Revision 1.4 1996/02/21 15:23:36 quinn - * Reversed fclose and return; - * - * Revision 1.3 1995/12/13 17:14:26 quinn - * *** empty log message *** - * - * Revision 1.2 1995/11/01 16:34:55 quinn - * Making data1 look for tables in data1_tabpath - * - * Revision 1.1 1995/11/01 11:56:07 quinn - * Added Retrieval (data management) functions en masse. - * - * - */ - -#include -#include -#include - -#include -#include -#include - -data1_att *data1_getattbyname(data1_handle dh, data1_attset *s, char *name) -{ - data1_att *r; - data1_attset_child *c; - - /* scan local set */ - for (r = s->atts; r; r = r->next) - if (!data1_matchstr(r->name, name)) - return r; - for (c = s->children; c; c = c->next) - { - assert (c->child); - /* scan included sets */ - if ((r = data1_getattbyname (dh, c->child, name))) - return r; - } - return 0; -} - -data1_attset *data1_empty_attset(data1_handle dh) -{ - NMEM mem = data1_nmem_get (dh); - data1_attset *res = (data1_attset*) nmem_malloc(mem,sizeof(*res)); - - res->name = 0; - res->reference = VAL_NONE; - res->atts = 0; - res->children = 0; - res->next = 0; - return res; -} - -data1_attset *data1_read_attset(data1_handle dh, const char *file) -{ - data1_attset *res = 0; - data1_attset_child **childp; - data1_att **attp; - FILE *f; - NMEM mem = data1_nmem_get (dh); - int lineno = 0; - int argc; - char *argv[50], line[512]; - - if (!(f = data1_path_fopen(dh, file, "r"))) - return NULL; - res = data1_empty_attset (dh); - - childp = &res->children; - attp = &res->atts; - - while ((argc = readconf_line(f, &lineno, line, 512, argv, 50))) - { - char *cmd = argv[0]; - if (!strcmp(cmd, "att")) - { - int num; - char *name; - data1_att *t; - data1_local_attribute *locals; - - if (argc < 3) - { - yaz_log(LOG_WARN, "%s:%d: Bad # of args to att", file, lineno); - continue; - } - num = atoi (argv[1]); - name = argv[2]; - - if (argc == 3) /* no local attributes given */ - { - locals = (data1_local_attribute *) - nmem_malloc(mem, sizeof(*locals)); - locals->local = num; - locals->next = 0; - } - else /* parse the string "local{,local}" */ - { - char *p = argv[3]; - data1_local_attribute **ap = &locals; - do - { - *ap = (data1_local_attribute *) - nmem_malloc(mem, sizeof(**ap)); - (*ap)->local = atoi(p); - (*ap)->next = 0; - ap = &(*ap)->next; - } - while ((p = strchr(p, ',')) && *(++p)); - } - t = *attp = (data1_att *)nmem_malloc(mem, sizeof(*t)); - t->parent = res; - t->name = nmem_strdup(mem, name); - t->value = num; - t->locals = locals; - t->next = 0; - attp = &t->next; - } - else if (!strcmp(cmd, "name")) - { - if (argc != 2) - { - yaz_log(LOG_WARN, "%s:%d: Bad # of args to name", file, lineno); - continue; - } - } - else if (!strcmp(cmd, "reference")) - { - char *name; - - if (argc != 2) - { - yaz_log(LOG_WARN, "%s:%d: Bad # of args to reference", - file, lineno); - continue; - } - name = argv[1]; - if ((res->reference = oid_getvalbyname(name)) == VAL_NONE) - { - yaz_log(LOG_WARN, "%s:%d: Unknown reference oid '%s'", - file, lineno, name); - fclose(f); - return 0; - } - } - else if (!strcmp(cmd, "ordinal")) - { - yaz_log (LOG_WARN, "%s:%d: Directive ordinal ignored", - file, lineno); - } - else if (!strcmp(cmd, "include")) - { - char *name; - data1_attset *attset; - - if (argc != 2) - { - yaz_log(LOG_WARN, "%s:%d: Bad # of args to include", - file, lineno); - continue; - } - name = argv[1]; - - if (!(attset = data1_get_attset (dh, name))) - { - yaz_log(LOG_WARN, "%s:%d: Include of attset %s failed", - file, lineno, name); - continue; - - } - *childp = (data1_attset_child *) - nmem_malloc (mem, sizeof(**childp)); - (*childp)->child = attset; - (*childp)->next = 0; - childp = &(*childp)->next; - } - else - { - yaz_log(LOG_WARN, "%s:%d: Unknown directive '%s'", - file, lineno, cmd); - } - } - fclose(f); - return res; -} diff --git a/retrieval/d1_doespec.c b/retrieval/d1_doespec.c deleted file mode 100644 index 19c3aba..0000000 --- a/retrieval/d1_doespec.c +++ /dev/null @@ -1,292 +0,0 @@ -/* - * Copyright (c) 1995-2002, Index Data. - * See the file LICENSE for details. - * Sebastian Hammer, Adam Dickmeiss - * - * $Id: d1_doespec.c,v 1.15 2002-09-24 13:58:13 adam Exp $ - */ - -#include - -#include -#include -#include -#include - -static int match_children(data1_handle dh, data1_node *n, - Z_Espec1 *e, int i, Z_ETagUnit **t, - int num); - -static int match_children_wildpath(data1_handle dh, data1_node *n, - Z_Espec1 *e, int i, - Z_ETagUnit **t, int num) -{ - return 0; -} - -/* - * Locate a specific triple within a variant. - * set is the set to look for, universal set is the set that applies to a - * triple with an unknown set. - */ -static Z_Triple *find_triple(Z_Variant *var, oid_value universalset, - oid_value set, int zclass, int type) -{ - int i; - oident *defaultsetent = oid_getentbyoid(var->globalVariantSetId); - oid_value defaultset = defaultsetent ? defaultsetent->value : - universalset; - - for (i = 0; i < var->num_triples; i++) - { - oident *cursetent = - oid_getentbyoid(var->triples[i]->variantSetId); - oid_value curset = cursetent ? cursetent->value : defaultset; - - if (set == curset && - *var->triples[i]->zclass == zclass && - *var->triples[i]->type == type) - return var->triples[i]; - } - return 0; -} - -static void mark_subtree(data1_node *n, int make_variantlist, int no_data, - int get_bytes, Z_Variant *vreq) -{ - data1_node *c; - -#if 1 - if (n->which == DATA1N_tag) -#else - if (n->which == DATA1N_tag && (!n->child || n->child->which != DATA1N_tag)) - /* - * This seems to cause multi-level elements to fall out when only a - * top-level elementRequest has been given... Problem is, I can't figure - * out what it was supposed to ACHIEVE.... delete when code has been - * verified. - */ -#endif - { - n->u.tag.node_selected = 1; - n->u.tag.make_variantlist = make_variantlist; - n->u.tag.no_data_requested = no_data; - n->u.tag.get_bytes = get_bytes; - } - - for (c = n->child; c; c = c->next) - { - if (c->which == DATA1N_tag && (!n->child || - n->child->which != DATA1N_tag)) - { - c->u.tag.node_selected = 1; - c->u.tag.make_variantlist = make_variantlist; - c->u.tag.no_data_requested = no_data; - c->u.tag.get_bytes = get_bytes; - } - mark_subtree(c, make_variantlist, no_data, get_bytes, vreq); - } -} - - -static void match_triple (data1_handle dh, Z_Variant *vreq, - oid_value defsetval, - oid_value var1, data1_node *n) -{ - data1_node **c; - - if (!(n = n->child)) - return; - if (n->which != DATA1N_variant) - return; - c = &n->child; - while (*c) - { - int remove_flag = 0; - Z_Triple *r; - - assert ((*c)->which == DATA1N_variant); - - if ((*c)->u.variant.type->zclass->zclass == 4 && - (*c)->u.variant.type->type == 1) - { - if ((r = find_triple(vreq, defsetval, var1, 4, 1)) && - (r->which == Z_Triple_internationalString)) - { - const char *string_value = - r->value.internationalString; - if (strcmp ((*c)->u.variant.value, string_value)) - remove_flag = 1; - } - } - if (remove_flag) - { - data1_free_tree (dh, *c); - *c = (*c)->next; - } - else - { - match_triple (dh, vreq, defsetval, var1, *c); - c = &(*c)->next; - } - } -} - -static int match_children_here (data1_handle dh, data1_node *n, - Z_Espec1 *e, int i, - Z_ETagUnit **t, int num) -{ - int counter = 0, hits = 0; - data1_node *c; - Z_ETagUnit *tp = *t; - Z_Occurrences *occur; - - for (c = n->child; c ; c = c->next) - { - data1_tag *tag = 0; - - if (c->which != DATA1N_tag) - continue; - - if (tp->which == Z_ETagUnit_specificTag) - { - Z_SpecificTag *want = tp->u.specificTag; - occur = want->occurrences; - if (c->u.tag.element) - tag = c->u.tag.element->tag; - if (*want->tagType != ((tag && tag->tagset) ? tag->tagset->type : - 3)) - continue; - if (want->tagValue->which == Z_StringOrNumeric_numeric) - { - if (!tag || tag->which != DATA1T_numeric) - continue; - if (*want->tagValue->u.numeric != tag->value.numeric) - continue; - } - else - { - assert(want->tagValue->which == Z_StringOrNumeric_string); - if (tag && tag->which != DATA1T_string) - continue; - if (data1_matchstr(want->tagValue->u.string, - tag ? tag->value.string : c->u.tag.tag)) - continue; - } - } - else - occur = tp->u.wildThing; - - /* - * Ok, so we have a matching tag. Are we within occurrences-range? - */ - counter++; - if (occur && occur->which == Z_Occurrences_last) - { - yaz_log(LOG_WARN, "Can't do occurrences=last (yet)"); - return 0; - } - if (!occur || occur->which == Z_Occurrences_all || - (occur->which == Z_Occurrences_values && counter >= - *occur->u.values->start)) - { - if (match_children(dh, c, e, i, t + 1, num - 1)) - { - c->u.tag.node_selected = 1; - /* - * Consider the variant specification if this is a complete - * match. - */ - if (num == 1) - { - int show_variantlist = 0; - int no_data = 0; - int get_bytes = -1; - - Z_Variant *vreq = - e->elements[i]->u.simpleElement->variantRequest; - oident *defset = oid_getentbyoid(e->defaultVariantSetId); - oid_value defsetval = defset ? defset->value : VAL_NONE; - oid_value var1 = oid_getvalbyname("Variant-1"); - - if (!vreq) - vreq = e->defaultVariantRequest; - - if (vreq) - { - Z_Triple *r; - - /* - * 6,5: meta-data requested, variant list. - */ - if (find_triple(vreq, defsetval, var1, 6, 5)) - show_variantlist = 1; - /* - * 9,1: Miscellaneous, no data requested. - */ - if (find_triple(vreq, defsetval, var1, 9, 1)) - no_data = 1; - - /* howmuch */ - if ((r = find_triple(vreq, defsetval, var1, 5, 5))) - if (r->which == Z_Triple_integer) - get_bytes = *r->value.integer; - - if (!show_variantlist) - match_triple (dh, vreq, defsetval, var1, c); - } - mark_subtree(c, show_variantlist, no_data, get_bytes, vreq); - } - hits++; - /* - * have we looked at enough children? - */ - if (!occur || (occur->which == Z_Occurrences_values && - (!occur->u.values->howMany || - counter - *occur->u.values->start >= - *occur->u.values->howMany - 1))) - return hits; - } - } - } - return hits; -} - -static int match_children(data1_handle dh, data1_node *n, Z_Espec1 *e, - int i, Z_ETagUnit **t, int num) -{ - int res; - - if (!num) - return 1; - switch (t[0]->which) - { - case Z_ETagUnit_wildThing: - case Z_ETagUnit_specificTag: - res = match_children_here(dh, n, e, i, t, num); break; - case Z_ETagUnit_wildPath: - res = match_children_wildpath(dh, n, e, i, t, num); break; - default: - abort(); - } - return res; -} - -int data1_doespec1 (data1_handle dh, data1_node *n, Z_Espec1 *e) -{ - int i; - - n = data1_get_root_tag (dh, n); - if (n && n->which == DATA1N_tag) - n->u.tag.node_selected = 1; - - for (i = 0; i < e->num_elements; i++) - { - if (e->elements[i]->which != Z_ERequest_simpleElement) - return 100; - match_children(dh, n, e, i, - e->elements[i]->u.simpleElement->path->tags, - e->elements[i]->u.simpleElement->path->num_tags); - } - return 0; -} diff --git a/retrieval/d1_espec.c b/retrieval/d1_espec.c deleted file mode 100644 index 0b12c27..0000000 --- a/retrieval/d1_espec.c +++ /dev/null @@ -1,348 +0,0 @@ -/* - * Copyright (c) 1995-2002, Index Data. - * See the file LICENSE for details. - * Sebastian Hammer, Adam Dickmeiss - * - * $Id: d1_espec.c,v 1.22 2002-05-03 13:48:27 adam Exp $ - */ - -#include -#include -#include - -#include -#include -#include -#include - -static Z_Variant *read_variant(int argc, char **argv, NMEM nmem, - const char *file, int lineno) -{ - Z_Variant *r = (Z_Variant *)nmem_malloc(nmem, sizeof(*r)); - oident var1; - int i; - int oid[OID_SIZE]; - - var1.proto = PROTO_Z3950; - var1.oclass = CLASS_VARSET; - var1.value = VAL_VAR1; - r->globalVariantSetId = odr_oiddup_nmem(nmem, oid_ent_to_oid(&var1, oid)); - - if (argc) - r->triples = (Z_Triple **)nmem_malloc(nmem, sizeof(Z_Triple*) * argc); - else - r->triples = 0; - r->num_triples = argc; - for (i = 0; i < argc; i++) - { - int zclass, type; - char value[512]; - Z_Triple *t; - - if (sscanf(argv[i], "(%d,%d,%511[^)])", &zclass, &type, value) < 3) - { - yaz_log(LOG_WARN, "%s:%d: Syntax error in variant component '%s'", - file, lineno, argv[i]); - return 0; - } - t = r->triples[i] = (Z_Triple *)nmem_malloc(nmem, sizeof(Z_Triple)); - t->variantSetId = 0; - t->zclass = (int *)nmem_malloc(nmem, sizeof(int)); - *t->zclass = zclass; - t->type = (int *)nmem_malloc(nmem, sizeof(int)); - *t->type = type; - /* - * This is wrong.. we gotta look up the correct type for the - * variant, I guess... damn this stuff. - */ - if (*value == '@') - { - t->which = Z_Triple_null; - t->value.null = odr_nullval(); - } - else if (d1_isdigit(*value)) - { - t->which = Z_Triple_integer; - t->value.integer = (int *) - nmem_malloc(nmem, sizeof(*t->value.integer)); - *t->value.integer = atoi(value); - } - else - { - t->which = Z_Triple_internationalString; - t->value.internationalString = (char *) - nmem_malloc(nmem, strlen(value)+1); - strcpy(t->value.internationalString, value); - } - } - return r; -} - -static Z_Occurrences *read_occurrences(char *occ, NMEM nmem, - const char *file, int lineno) -{ - Z_Occurrences *op = (Z_Occurrences *)nmem_malloc(nmem, sizeof(*op)); - char *p; - - if (!occ) - { - op->which = Z_Occurrences_values; - op->u.values = (Z_OccurValues *) - nmem_malloc(nmem, sizeof(Z_OccurValues)); - op->u.values->start = (int *)nmem_malloc(nmem, sizeof(int)); - *op->u.values->start = 1; - op->u.values->howMany = 0; - } - else if (!strcmp(occ, "all")) - { - op->which = Z_Occurrences_all; - op->u.all = odr_nullval(); - } - else if (!strcmp(occ, "last")) - { - op->which = Z_Occurrences_last; - op->u.all = odr_nullval(); - } - else - { - Z_OccurValues *ov = (Z_OccurValues *)nmem_malloc(nmem, sizeof(*ov)); - - if (!d1_isdigit(*occ)) - { - yaz_log(LOG_WARN, "%s:%d: Bad occurrences-spec %s", - file, lineno, occ); - return 0; - } - op->which = Z_Occurrences_values; - op->u.values = ov; - ov->start = (int *)nmem_malloc(nmem, sizeof(*ov->start)); - *ov->start = atoi(occ); - if ((p = strchr(occ, '+'))) - { - ov->howMany = (int *)nmem_malloc(nmem, sizeof(*ov->howMany)); - *ov->howMany = atoi(p + 1); - } - else - ov->howMany = 0; - } - return op; -} - - -static Z_ETagUnit *read_tagunit(char *buf, NMEM nmem, - const char *file, int lineno) -{ - Z_ETagUnit *u = (Z_ETagUnit *)nmem_malloc(nmem, sizeof(*u)); - int terms; - int type; - char value[512], occ[512]; - - if (*buf == '*') - { - u->which = Z_ETagUnit_wildPath; - u->u.wildPath = odr_nullval(); - } - else if (*buf == '?') - { - u->which = Z_ETagUnit_wildThing; - if (buf[1] == ':') - u->u.wildThing = read_occurrences(buf+2, nmem, file, lineno); - else - u->u.wildThing = read_occurrences(0, nmem, file, lineno); - } - else if ((terms = sscanf(buf, "(%d,%511[^)]):%511[a-zA-Z0-9+]", - &type, value, occ)) >= 2) - { - int numval; - Z_SpecificTag *t; - char *valp = value; - int force_string = 0; - - if (*valp == '\'') - { - valp++; - force_string = 1; - } - u->which = Z_ETagUnit_specificTag; - u->u.specificTag = t = (Z_SpecificTag *)nmem_malloc(nmem, sizeof(*t)); - t->tagType = (int *)nmem_malloc(nmem, sizeof(*t->tagType)); - *t->tagType = type; - t->tagValue = (Z_StringOrNumeric *) - nmem_malloc(nmem, sizeof(*t->tagValue)); - if (!force_string && (numval = atoi(valp))) - { - t->tagValue->which = Z_StringOrNumeric_numeric; - t->tagValue->u.numeric = (int *)nmem_malloc(nmem, sizeof(int)); - *t->tagValue->u.numeric = numval; - } - else - { - t->tagValue->which = Z_StringOrNumeric_string; - t->tagValue->u.string = (char *)nmem_malloc(nmem, strlen(valp)+1); - strcpy(t->tagValue->u.string, valp); - } - if (terms > 2) /* an occurrences-spec exists */ - t->occurrences = read_occurrences(occ, nmem, file, lineno); - else - t->occurrences = 0; - } - return u; -} - -/* - * Read an element-set specification from a file. - * NOTE: If !o, memory is allocated directly from the heap by nmem_malloc(). - */ -Z_Espec1 *data1_read_espec1 (data1_handle dh, const char *file) -{ - FILE *f; - NMEM nmem = data1_nmem_get (dh); - int lineno = 0; - int argc, size_esn = 0; - char *argv[50], line[512]; - Z_Espec1 *res = (Z_Espec1 *)nmem_malloc(nmem, sizeof(*res)); - - if (!(f = data1_path_fopen(dh, file, "r"))) - { - yaz_log(LOG_WARN|LOG_ERRNO, "%s", file); - return 0; - } - - res->num_elementSetNames = 0; - res->elementSetNames = 0; - res->defaultVariantSetId = 0; - res->defaultVariantRequest = 0; - res->defaultTagType = 0; - res->num_elements = 0; - res->elements = 0; - - while ((argc = readconf_line(f, &lineno, line, 512, argv, 50))) - if (!strcmp(argv[0], "elementsetnames")) - { - int nnames = argc-1, i; - - if (!nnames) - { - yaz_log(LOG_WARN, "%s:%d: Empty elementsetnames directive", - file, lineno); - continue; - } - - res->elementSetNames = - (char **)nmem_malloc(nmem, sizeof(char**)*nnames); - for (i = 0; i < nnames; i++) - { - res->elementSetNames[i] = (char *) - nmem_malloc(nmem, strlen(argv[i+1])+1); - strcpy(res->elementSetNames[i], argv[i+1]); - } - res->num_elementSetNames = nnames; - } - else if (!strcmp(argv[0], "defaultvariantsetid")) - { - if (argc != 2) - { - yaz_log(LOG_WARN, "%s:%d: Bad # of args for %s", - file, lineno, argv[0]); - continue; - } - if (!(res->defaultVariantSetId = - odr_getoidbystr_nmem(nmem, argv[1]))) - { - yaz_log(LOG_WARN, "%s:%d: Bad defaultvariantsetid", - file, lineno); - continue; - } - } - else if (!strcmp(argv[0], "defaulttagtype")) - { - if (argc != 2) - { - yaz_log(LOG_WARN, "%s:%d: Bad # of args for %s", - file, lineno, argv[0]); - continue; - } - res->defaultTagType = (int *)nmem_malloc(nmem, sizeof(int)); - *res->defaultTagType = atoi(argv[1]); - } - else if (!strcmp(argv[0], "defaultvariantrequest")) - { - if (!(res->defaultVariantRequest = - read_variant(argc-1, argv+1, nmem, file, lineno))) - { - yaz_log(LOG_WARN, "%s:%d: Bad defaultvariantrequest", - file, lineno); - continue; - } - } - else if (!strcmp(argv[0], "simpleelement")) - { - Z_ElementRequest *er; - Z_SimpleElement *se; - Z_ETagPath *tp; - char *path = argv[1]; - char *ep; - int num, i = 0; - - if (!res->elements) - res->elements = (Z_ElementRequest **) - nmem_malloc(nmem, size_esn = 24*sizeof(er)); - else if (res->num_elements >= (int) (size_esn/sizeof(er))) - { - Z_ElementRequest **oe = res->elements; - size_esn *= 2; - res->elements = (Z_ElementRequest **) - nmem_malloc (nmem, size_esn*sizeof(er)); - memcpy (res->elements, oe, size_esn/2); - } - if (argc < 2) - { - yaz_log(LOG_WARN, "%s:%d: Bad # of args for %s", - file, lineno, argv[0]); - continue; - } - - res->elements[res->num_elements++] = er = - (Z_ElementRequest *)nmem_malloc(nmem, sizeof(*er)); - er->which = Z_ERequest_simpleElement; - er->u.simpleElement = se = (Z_SimpleElement *) - nmem_malloc(nmem, sizeof(*se)); - se->variantRequest = 0; - se->path = tp = (Z_ETagPath *)nmem_malloc(nmem, sizeof(*tp)); - tp->num_tags = 0; - /* - * Parse the element selector. - */ - for (num = 1, ep = path; (ep = strchr(ep, '/')); num++, ep++) - ; - tp->tags = (Z_ETagUnit **) - nmem_malloc(nmem, sizeof(Z_ETagUnit*)*num); - - for ((ep = strchr(path, '/')) ; path ; - (void)((path = ep) && (ep = strchr(path, '/')))) - { - Z_ETagUnit *tagunit; - if (ep) - ep++; - - assert(itags[tp->num_tags++] = tagunit; - } - - if (argc > 2 && !strcmp(argv[2], "variant")) - se->variantRequest= - read_variant(argc-3, argv+3, nmem, file, lineno); - } - else - yaz_log(LOG_WARN, "%s:%d: Unknown directive '%s'", - file, lineno, argv[0]); - fclose (f); - return res; -} diff --git a/retrieval/d1_expout.c b/retrieval/d1_expout.c deleted file mode 100644 index b6e2bab..0000000 --- a/retrieval/d1_expout.c +++ /dev/null @@ -1,1460 +0,0 @@ -/* - * Copyright (c) 1995-1999, Index Data. - * See the file LICENSE for details. - * Sebastian Hammer, Adam Dickmeiss - * - * $Log: d1_expout.c,v $ - * Revision 1.17 1999-11-30 13:47:12 adam - * Improved installation. Moved header files to include/yaz. - * - * Revision 1.16 1999/08/27 09:40:32 adam - * Renamed logf function to yaz_log. Removed VC++ project files. - * - * Revision 1.15 1998/09/28 12:44:40 adam - * Fixed bug in f_integer. - * - * Revision 1.14 1998/06/08 14:26:41 adam - * Fixed bug in f_queryTypeDetails. - * - * Revision 1.13 1998/06/05 08:58:48 adam - * Fixed un-initialised var in f_rpnCapabilities. - * - * Revision 1.12 1998/05/18 13:07:04 adam - * Changed the way attribute sets are handled by the retriaval module. - * Extended Explain conversion / schema. - * Modified server and client to work with ASN.1 compiled protocol handlers. - * - * Revision 1.11 1998/04/02 08:27:37 adam - * Minor change in definition of Z_TargetInfo. Furhter work on Explain - * schema - added AttributeDetails. - * - * Revision 1.10 1998/03/31 15:13:20 adam - * Development towards compiled ASN.1. - * - * Revision 1.9 1998/03/05 08:07:58 adam - * Make data1 to EXPLAIN ignore local tags in root. - * - * Revision 1.8 1998/02/11 11:53:35 adam - * Changed code so that it compiles as C++. - * - * Revision 1.7 1997/12/09 16:18:16 adam - * Work on EXPLAIN schema. First implementation of sub-schema facility - * in the *.abs files. - * - * Revision 1.6 1997/11/24 11:33:56 adam - * Using function odr_nullval() instead of global ODR_NULLVAL when - * appropriate. - * - * Revision 1.5 1997/11/19 10:30:06 adam - * More explain work. - * - * Revision 1.4 1997/11/18 09:51:08 adam - * Removed element num_children from data1_node. Minor changes in - * data1 to Explain. - * - * Revision 1.3 1997/09/17 12:10:36 adam - * YAZ version 1.4. - * - * Revision 1.2 1995/12/14 16:28:30 quinn - * More explain stuff. - * - * Revision 1.1 1995/12/14 11:09:51 quinn - * Work on Explain - * - * - */ - -#include -#include -#include - -#include -#include -#include - -typedef struct { - data1_handle dh; - ODR o; - int select; - - bool_t *false_value; - bool_t *true_value; -} ExpHandle; - -static int is_numeric_tag (ExpHandle *eh, data1_node *c) -{ - if (!c || c->which != DATA1N_tag) - return 0; - if (!c->u.tag.element) - { - yaz_log(LOG_WARN, "Tag %s is local", c->u.tag.tag); - return 0; - } - if (c->u.tag.element->tag->which != DATA1T_numeric) - { - yaz_log(LOG_WARN, "Tag %s is not numeric", c->u.tag.tag); - return 0; - } - if (eh->select && !c->u.tag.node_selected) - return 0; - return c->u.tag.element->tag->value.numeric; -} - -static int is_data_tag (ExpHandle *eh, data1_node *c) -{ - if (!c || c->which != DATA1N_data) - return 0; - if (eh->select && !c->u.tag.node_selected) - return 0; - return 1; -} - -static int *f_integer(ExpHandle *eh, data1_node *c) -{ - int *r; - char intbuf[64]; - - c = c->child; - if (!is_data_tag (eh, c) || c->u.data.len > 63) - return 0; - r = (int *)odr_malloc(eh->o, sizeof(*r)); - sprintf(intbuf, "%.*s", c->u.data.len, c->u.data.data); - *r = atoi(intbuf); - return r; -} - -static char *f_string(ExpHandle *eh, data1_node *c) -{ - char *r; - - c = c->child; - if (!is_data_tag (eh, c)) - return 0; - r = (char *)odr_malloc(eh->o, c->u.data.len+1); - memcpy(r, c->u.data.data, c->u.data.len); - r[c->u.data.len] = '\0'; - return r; -} - -static bool_t *f_bool(ExpHandle *eh, data1_node *c) -{ - bool_t *tf; - char intbuf[64]; - - c = c->child; - if (!is_data_tag (eh, c) || c->u.data.len > 63) - return 0; - tf = (int *)odr_malloc (eh->o, sizeof(*tf)); - sprintf(intbuf, "%.*s", c->u.data.len, c->u.data.data); - *tf = atoi(intbuf); - return tf; -} - -static Odr_oid *f_oid(ExpHandle *eh, data1_node *c, oid_class oclass) -{ - char oidstr[64]; - int oid_this[20]; - oid_value value_for_this; - - c = c->child; - if (!is_data_tag (eh, c) || c->u.data.len > 63) - return 0; - sprintf(oidstr, "%.*s", c->u.data.len, c->u.data.data); - value_for_this = oid_getvalbyname(oidstr); - if (value_for_this == VAL_NONE) - { - Odr_oid *oid = odr_getoidbystr(eh->o, oidstr); - assert (oid); - return oid; - } - else - { - struct oident ident; - - ident.oclass = oclass; - ident.proto = PROTO_Z3950; - ident.value = value_for_this; - - oid_ent_to_oid (&ident, oid_this); - } - return odr_oiddup (eh->o, oid_this); -} - -static Z_IntUnit *f_intunit(ExpHandle *eh, data1_node *c) -{ - /* fix */ - return 0; -} - -static Z_HumanString *f_humstring(ExpHandle *eh, data1_node *c) -{ - Z_HumanString *r; - Z_HumanStringUnit *u; - - c = c->child; - if (!is_data_tag (eh, c)) - return 0; - r = (Z_HumanString *)odr_malloc(eh->o, sizeof(*r)); - r->num_strings = 1; - r->strings = (Z_HumanStringUnit **)odr_malloc(eh->o, sizeof(Z_HumanStringUnit*)); - r->strings[0] = u = (Z_HumanStringUnit *)odr_malloc(eh->o, sizeof(*u)); - u->language = 0; - u->text = (char *)odr_malloc(eh->o, c->u.data.len+1); - memcpy(u->text, c->u.data.data, c->u.data.len); - u->text[c->u.data.len] = '\0'; - return r; -} - -static Z_CommonInfo *f_commonInfo(ExpHandle *eh, data1_node *n) -{ - Z_CommonInfo *res = (Z_CommonInfo *)odr_malloc(eh->o, sizeof(*res)); - data1_node *c; - - res->dateAdded = 0; - res->dateChanged = 0; - res->expiry = 0; - res->humanStringLanguage = 0; - res->otherInfo = 0; - - for (c = n->child; c; c = c->next) - { - switch (is_numeric_tag (eh, c)) - { - case 601: res->dateAdded = f_string(eh, c); break; - case 602: res->dateChanged = f_string(eh, c); break; - case 603: res->expiry = f_string(eh, c); break; - case 604: res->humanStringLanguage = f_string(eh, c); break; - } - } - return res; -} - -Odr_oid **f_oid_seq (ExpHandle *eh, data1_node *n, int *num, oid_class oclass) -{ - Odr_oid **res; - data1_node *c; - int i; - - *num = 0; - for (c = n->child ; c; c = c->next) - if (is_numeric_tag (eh, c) == 1000) - ++(*num); - if (!*num) - return NULL; - res = (int **)odr_malloc (eh->o, sizeof(*res) * (*num)); - for (c = n->child, i = 0 ; c; c = c->next) - if (is_numeric_tag (eh, c) == 1000) - res[i++] = f_oid (eh, c, oclass); - return res; -} - -char **f_string_seq (ExpHandle *eh, data1_node *n, int *num) -{ - char **res; - data1_node *c; - int i; - - *num = 0; - for (c = n->child ; c; c = c->next) - { - if (is_numeric_tag (eh, c) != 1001) - continue; - ++(*num); - } - if (!*num) - return NULL; - res = (char **)odr_malloc (eh->o, sizeof(*res) * (*num)); - for (c = n->child, i = 0 ; c; c = c->next) - { - if (is_numeric_tag (eh, c) != 1001) - continue; - res[i++] = f_string (eh, c); - } - return res; -} - -Z_ProximitySupport *f_proximitySupport (ExpHandle *eh, data1_node *n) -{ - Z_ProximitySupport *res = (Z_ProximitySupport *) - odr_malloc (eh->o, sizeof(*res)); - res->anySupport = eh->false_value; - res->num_unitsSupported = 0; - res->unitsSupported = 0; - return res; -} - -Z_RpnCapabilities *f_rpnCapabilities (ExpHandle *eh, data1_node *n) -{ - Z_RpnCapabilities *res = (Z_RpnCapabilities *) - odr_malloc (eh->o, sizeof(*res)); - data1_node *c; - - res->num_operators = 0; - res->operators = NULL; - res->resultSetAsOperandSupported = eh->false_value; - res->restrictionOperandSupported = eh->false_value; - res->proximity = NULL; - - for (c = n->child; c; c = c->next) - { - int i = 0; - switch (is_numeric_tag(eh, c)) - { - case 550: - for (n = c->child; n; n = n->next) - { - if (is_numeric_tag(eh, n) != 551) - continue; - (res->num_operators)++; - } - if (res->num_operators) - res->operators = (int **) - odr_malloc (eh->o, res->num_operators - * sizeof(*res->operators)); - for (n = c->child; n; n = n->next) - { - if (is_numeric_tag(eh, n) != 551) - continue; - res->operators[i++] = f_integer (eh, n); - } - break; - case 552: - res->resultSetAsOperandSupported = f_bool (eh, c); - break; - case 553: - res->restrictionOperandSupported = f_bool (eh, c); - break; - case 554: - res->proximity = f_proximitySupport (eh, c); - break; - } - } - return res; -} - -Z_QueryTypeDetails *f_queryTypeDetails (ExpHandle *eh, data1_node *n) -{ - Z_QueryTypeDetails *res = (Z_QueryTypeDetails *) - odr_malloc(eh->o, sizeof(*res)); - data1_node *c; - - res->which = Z_QueryTypeDetails_rpn; - res->u.rpn = 0; - for (c = n->child; c; c = c->next) - { - switch (is_numeric_tag(eh, c)) - { - case 519: - res->which = Z_QueryTypeDetails_rpn; - res->u.rpn = f_rpnCapabilities (eh, c); - break; - case 520: - break; - case 521: - break; - } - } - return res; -} - -static Z_AccessInfo *f_accessInfo(ExpHandle *eh, data1_node *n) -{ - Z_AccessInfo *res = (Z_AccessInfo *)odr_malloc(eh->o, sizeof(*res)); - data1_node *c; - - res->num_queryTypesSupported = 0; - res->queryTypesSupported = 0; - res->num_diagnosticsSets = 0; - res->diagnosticsSets = 0; - res->num_attributeSetIds = 0; - res->attributeSetIds = 0; - res->num_schemas = 0; - res->schemas = 0; - res->num_recordSyntaxes = 0; - res->recordSyntaxes = 0; - res->num_resourceChallenges = 0; - res->resourceChallenges = 0; - res->restrictedAccess = 0; - res->costInfo = 0; - res->num_variantSets = 0; - res->variantSets = 0; - res->num_elementSetNames = 0; - res->elementSetNames = 0; - res->num_unitSystems = 0; - res->unitSystems = 0; - - for (c = n->child; c; c = c->next) - { - int i = 0; - switch (is_numeric_tag (eh, c)) - { - case 501: - for (n = c->child; n; n = n->next) - { - if (is_numeric_tag(eh, n) != 518) - continue; - (res->num_queryTypesSupported)++; - } - if (res->num_queryTypesSupported) - res->queryTypesSupported = - (Z_QueryTypeDetails **) - odr_malloc (eh->o, res->num_queryTypesSupported - * sizeof(*res->queryTypesSupported)); - for (n = c->child; n; n = n->next) - { - if (is_numeric_tag(eh, n) != 518) - continue; - res->queryTypesSupported[i++] = f_queryTypeDetails (eh, n); - } - break; - case 503: - res->diagnosticsSets = - f_oid_seq(eh, c, &res->num_diagnosticsSets, CLASS_DIAGSET); - break; - case 505: - res->attributeSetIds = - f_oid_seq(eh, c, &res->num_attributeSetIds, CLASS_ATTSET); - break; - case 507: - res->schemas = - f_oid_seq(eh, c, &res->num_schemas, CLASS_SCHEMA); - break; - case 509: - res->recordSyntaxes = - f_oid_seq (eh, c, &res->num_recordSyntaxes, CLASS_RECSYN); - break; - case 511: - res->resourceChallenges = - f_oid_seq (eh, c, &res->num_resourceChallenges, CLASS_RESFORM); - break; - case 513: res->restrictedAccess = NULL; break; /* fix */ - case 514: res->costInfo = NULL; break; /* fix */ - case 515: - res->variantSets = - f_oid_seq (eh, c, &res->num_variantSets, CLASS_VARSET); - break; - case 516: - res->elementSetNames = - f_string_seq (eh, c, &res->num_elementSetNames); - break; - case 517: - res->unitSystems = f_string_seq (eh, c, &res->num_unitSystems); - break; - } - } - return res; -} - -static int *f_recordCount(ExpHandle *eh, data1_node *c, int *which) -{ - int *r= (int *)odr_malloc(eh->o, sizeof(*r)); - int *wp = which; - char intbuf[64]; - - c = c->child; - if (!is_numeric_tag (eh, c)) - return 0; - if (c->u.tag.element->tag->value.numeric == 210) - *wp = Z_DatabaseInfo_actualNumber; - else if (c->u.tag.element->tag->value.numeric == 211) - *wp = Z_DatabaseInfo_approxNumber; - else - return 0; - if (!c->child || c->child->which != DATA1N_data) - return 0; - sprintf(intbuf, "%.*s", c->child->u.data.len, c->child->u.data.data); - *r = atoi(intbuf); - return r; -} - -static Z_ContactInfo *f_contactInfo(ExpHandle *eh, data1_node *n) -{ - Z_ContactInfo *res = (Z_ContactInfo *) - odr_malloc (eh->o, sizeof(*res)); - data1_node *c; - - res->name = 0; - res->description = 0; - res->address = 0; - res->email = 0; - res->phone = 0; - - for (c = n->child; c; c = c->next) - { - switch (is_numeric_tag (eh, c)) - { - case 102: res->name = f_string (eh, c); break; - case 113: res->description = f_humstring (eh, c); break; - case 127: res->address = f_humstring (eh, c); break; - case 128: res->email = f_string (eh, c); break; - case 129: res->phone = f_string (eh, c); break; - } - } - return res; -} - -static Z_DatabaseList *f_databaseList(ExpHandle *eh, data1_node *n) -{ - data1_node *c; - Z_DatabaseList *res; - int i = 0; - - for (c = n->child; c; c = c->next) - { - if (!is_numeric_tag (eh, c) != 102) - continue; - ++i; - } - if (!i) - return NULL; - - res = (Z_DatabaseList *)odr_malloc (eh->o, sizeof(*res)); - - res->num_databases = i; - res->databases = (char **)odr_malloc (eh->o, sizeof(*res->databases) * i); - i = 0; - for (c = n->child; c; c = c->next) - { - if (!is_numeric_tag (eh, c) != 102) - continue; - res->databases[i++] = f_string (eh, c); - } - return res; -} - -static Z_NetworkAddressIA *f_networkAddressIA(ExpHandle *eh, data1_node *n) -{ - Z_NetworkAddressIA *res = (Z_NetworkAddressIA *) - odr_malloc (eh->o, sizeof(*res)); - data1_node *c; - - res->hostAddress = 0; - res->port = 0; - - for (c = n->child; c; c = c->next) - { - switch (is_numeric_tag (eh, c)) - { - case 121: res->hostAddress = f_string (eh, c); break; - case 122: res->port = f_integer (eh, c); break; - } - } - return res; -} - -static Z_NetworkAddressOther *f_networkAddressOther(ExpHandle *eh, - data1_node *n) -{ - Z_NetworkAddressOther *res = (Z_NetworkAddressOther *) - odr_malloc (eh->o, sizeof(*res)); - data1_node *c; - - res->type = 0; - res->address = 0; - - for (c = n->child; c; c = c->next) - { - switch (is_numeric_tag (eh, c)) - { - case 124: res->type = f_string (eh, c); break; - case 121: res->address = f_string (eh, c); break; - } - } - return res; -} - -static Z_NetworkAddress **f_networkAddresses(ExpHandle *eh, data1_node *n, - int *num) -{ - Z_NetworkAddress **res = NULL; - data1_node *c; - int i = 0; - - *num = 0; - for (c = n->child; c; c = c->next) - { - switch (is_numeric_tag (eh, c)) - { - case 120: - case 123: - (*num)++; - break; - } - } - - if (*num) - res = (Z_NetworkAddress **) odr_malloc (eh->o, sizeof(*res) * (*num)); - - for (c = n->child; c; c = c->next) - { - switch (is_numeric_tag (eh, c)) - { - case 120: - res[i] = (Z_NetworkAddress *) odr_malloc (eh->o, sizeof(**res)); - res[i]->which = Z_NetworkAddress_iA; - res[i]->u.internetAddress = f_networkAddressIA(eh, c); - i++; - break; - case 123: - res[i] = (Z_NetworkAddress *) odr_malloc (eh->o, sizeof(**res)); - res[i]->which = Z_NetworkAddress_other; - res[i]->u.other = f_networkAddressOther(eh, c); - i++; - break; - } - } - return res; -} - -static Z_CategoryInfo *f_categoryInfo(ExpHandle *eh, data1_node *n) -{ - Z_CategoryInfo *res = (Z_CategoryInfo *)odr_malloc(eh->o, sizeof(*res)); - data1_node *c; - - res->category = 0; - res->originalCategory = 0; - res->description = 0; - res->asn1Module = 0; - for (c = n->child; c; c = c->next) - { - switch (is_numeric_tag (eh, c)) - { - case 102: res->category = f_string(eh, c); break; - case 302: res->originalCategory = f_string(eh, c); break; - case 113: res->description = f_humstring(eh, c); break; - case 303: res->asn1Module = f_string (eh, c); break; - } - } - return res; -} - -static Z_CategoryList *f_categoryList(ExpHandle *eh, data1_node *n) -{ - Z_CategoryList *res = (Z_CategoryList *)odr_malloc(eh->o, sizeof(*res)); - data1_node *c; - - res->commonInfo = 0; - res->num_categories = 0; - res->categories = NULL; - - for (c = n->child; c; c = c->next) - { - int i = 0; - - switch (is_numeric_tag (eh, c)) - { - case 600: res->commonInfo = f_commonInfo(eh, c); break; - case 300: - for (n = c->child; n; n = n->next) - { - if (is_numeric_tag(eh, n) != 301) - continue; - (res->num_categories)++; - } - if (res->num_categories) - res->categories = - (Z_CategoryInfo **)odr_malloc (eh->o, res->num_categories - * sizeof(*res->categories)); - for (n = c->child; n; n = n->next) - { - if (is_numeric_tag(eh, n) != 301) - continue; - res->categories[i++] = f_categoryInfo (eh, n); - } - break; - } - } - assert (res->num_categories && res->categories); - return res; -} - -static Z_TargetInfo *f_targetInfo(ExpHandle *eh, data1_node *n) -{ - Z_TargetInfo *res = (Z_TargetInfo *)odr_malloc(eh->o, sizeof(*res)); - data1_node *c; - - res->commonInfo = 0; - res->name = 0; - res->recentNews = 0; - res->icon = 0; - res->namedResultSets = 0; - res->multipleDBsearch = 0; - res->maxResultSets = 0; - res->maxResultSize = 0; - res->maxTerms = 0; - res->timeoutInterval = 0; - res->welcomeMessage = 0; - res->contactInfo = 0; - res->description = 0; - res->num_nicknames = 0; - res->nicknames = 0; - res->usageRest = 0; - res->paymentAddr = 0; - res->hours = 0; - res->num_dbCombinations = 0; - res->dbCombinations = 0; - res->num_addresses = 0; - res->addresses = 0; - res->num_languages = 0; - res->languages = NULL; - res->commonAccessInfo = 0; - - for (c = n->child; c; c = c->next) - { - int i = 0; - - switch (is_numeric_tag (eh, c)) - { - case 600: res->commonInfo = f_commonInfo(eh, c); break; - case 102: res->name = f_string(eh, c); break; - case 103: res->recentNews = f_humstring(eh, c); break; - case 104: res->icon = NULL; break; /* fix */ - case 105: res->namedResultSets = f_bool(eh, c); break; - case 106: res->multipleDBsearch = f_bool(eh, c); break; - case 107: res->maxResultSets = f_integer(eh, c); break; - case 108: res->maxResultSize = f_integer(eh, c); break; - case 109: res->maxTerms = f_integer(eh, c); break; - case 110: res->timeoutInterval = f_intunit(eh, c); break; - case 111: res->welcomeMessage = f_humstring(eh, c); break; - case 112: res->contactInfo = f_contactInfo(eh, c); break; - case 113: res->description = f_humstring(eh, c); break; - case 114: - res->num_nicknames = 0; - for (n = c->child; n; n = n->next) - { - if (is_numeric_tag(eh, n) != 102) - continue; - (res->num_nicknames)++; - } - if (res->num_nicknames) - res->nicknames = - (char **)odr_malloc (eh->o, res->num_nicknames - * sizeof(*res->nicknames)); - for (n = c->child; n; n = n->next) - { - if (is_numeric_tag(eh, n) != 102) - continue; - res->nicknames[i++] = f_string (eh, n); - } - break; - case 115: res->usageRest = f_humstring(eh, c); break; - case 116: res->paymentAddr = f_humstring(eh, c); break; - case 117: res->hours = f_humstring(eh, c); break; - case 118: - res->num_dbCombinations = 0; - for (n = c->child; n; n = n->next) - { - if (!is_numeric_tag(eh, n) != 605) - continue; - (res->num_dbCombinations)++; - } - if (res->num_dbCombinations) - res->dbCombinations = - (Z_DatabaseList **)odr_malloc (eh->o, res->num_dbCombinations - * sizeof(*res->dbCombinations)); - for (n = c->child; n; n = n->next) - { - if (!is_numeric_tag(eh, n) != 605) - continue; - res->dbCombinations[i++] = f_databaseList (eh, n); - } - break; - case 119: - res->addresses = - f_networkAddresses (eh, c, &res->num_addresses); - break; - case 125: - res->num_languages = 0; - for (n = c->child; n; n = n->next) - { - if (!is_numeric_tag(eh, n) != 126) - continue; - (res->num_languages)++; - } - if (res->num_languages) - res->languages = (char **) - odr_malloc (eh->o, res->num_languages * - sizeof(*res->languages)); - for (n = c->child; n; n = n->next) - { - if (!is_numeric_tag(eh, n) != 126) - continue; - res->languages[i++] = f_string (eh, n); - } - break; - case 500: res->commonAccessInfo = f_accessInfo(eh, c); break; - } - } - if (!res->namedResultSets) - res->namedResultSets = eh->false_value; - if (!res->multipleDBsearch) - res->multipleDBsearch = eh->false_value; - return res; -} - -static Z_DatabaseInfo *f_databaseInfo(ExpHandle *eh, data1_node *n) -{ - Z_DatabaseInfo *res = (Z_DatabaseInfo *)odr_malloc(eh->o, sizeof(*res)); - data1_node *c; - - res->commonInfo = 0; - res->name = 0; - res->explainDatabase = 0; - res->num_nicknames = 0; - res->nicknames = 0; - res->icon = 0; - res->userFee = 0; - res->available = 0; - res->titleString = 0; - res->num_keywords = 0; - res->keywords = 0; - res->description = 0; - res->associatedDbs = 0; - res->subDbs = 0; - res->disclaimers = 0; - res->news = 0; - res->u.actualNumber = 0; - res->defaultOrder = 0; - res->avRecordSize = 0; - res->maxRecordSize = 0; - res->hours = 0; - res->bestTime = 0; - res->lastUpdate = 0; - res->updateInterval = 0; - res->coverage = 0; - res->proprietary = 0; - res->copyrightText = 0; - res->copyrightNotice = 0; - res->producerContactInfo = 0; - res->supplierContactInfo = 0; - res->submissionContactInfo = 0; - res->accessInfo = 0; - - for (c = n->child; c; c = c->next) - { - int i = 0; - - switch (is_numeric_tag (eh, c)) - { - case 600: res->commonInfo = f_commonInfo(eh, c); break; - case 102: res->name = f_string(eh, c); break; - case 226: res->explainDatabase = odr_nullval(); break; - case 114: - res->num_nicknames = 0; - for (n = c->child; n; n = n->next) - { - if (!is_numeric_tag(eh, n) || - n->u.tag.element->tag->value.numeric != 102) - continue; - (res->num_nicknames)++; - } - if (res->num_nicknames) - res->nicknames = - (char **)odr_malloc (eh->o, res->num_nicknames - * sizeof(*res->nicknames)); - for (n = c->child; n; n = n->next) - { - if (!is_numeric_tag(eh, n) || - n->u.tag.element->tag->value.numeric != 102) - continue; - res->nicknames[i++] = f_string (eh, n); - } - break; - case 104: res->icon = 0; break; /* fix */ - case 201: res->userFee = f_bool(eh, c); break; - case 202: res->available = f_bool(eh, c); break; - case 203: res->titleString = f_humstring(eh, c); break; - case 227: - res->num_keywords = 0; - for (n = c->child; n; n = n->next) - { - if (!is_numeric_tag(eh, n) != 1000) - continue; - (res->num_keywords)++; - } - if (res->num_keywords) - res->keywords = - (Z_HumanString **)odr_malloc (eh->o, res->num_keywords - * sizeof(*res->keywords)); - for (n = c->child; n; n = n->next) - { - if (!is_numeric_tag(eh, n) != 1000) - continue; - res->keywords[i++] = f_humstring (eh, n); - } - break; - case 113: res->description = f_humstring(eh, c); break; - case 205: - res->associatedDbs = f_databaseList (eh, c); - break; - case 206: - res->subDbs = f_databaseList (eh, c); - break; - case 207: res->disclaimers = f_humstring(eh, c); break; - case 103: res->news = f_humstring(eh, c); break; - case 209: res->u.actualNumber = - f_recordCount(eh, c, &res->which); break; - case 212: res->defaultOrder = f_humstring(eh, c); break; - case 213: res->avRecordSize = f_integer(eh, c); break; - case 214: res->maxRecordSize = f_integer(eh, c); break; - case 215: res->hours = f_humstring(eh, c); break; - case 216: res->bestTime = f_humstring(eh, c); break; - case 217: res->lastUpdate = f_string(eh, c); break; - case 218: res->updateInterval = f_intunit(eh, c); break; - case 219: res->coverage = f_humstring(eh, c); break; - case 220: res->proprietary = f_bool(eh, c); break; - case 221: res->copyrightText = f_humstring(eh, c); break; - case 222: res->copyrightNotice = f_humstring(eh, c); break; - case 223: res->producerContactInfo = f_contactInfo(eh, c); break; - case 224: res->supplierContactInfo = f_contactInfo(eh, c); break; - case 225: res->submissionContactInfo = f_contactInfo(eh, c); break; - case 500: res->accessInfo = f_accessInfo(eh, c); break; - } - } - if (!res->userFee) - res->userFee = eh->false_value; - if (!res->available) - res->available = eh->true_value; - return res; -} - -Z_StringOrNumeric *f_stringOrNumeric (ExpHandle *eh, data1_node *n) -{ - Z_StringOrNumeric *res = (Z_StringOrNumeric *) - odr_malloc (eh->o, sizeof(*res)); - data1_node *c; - for (c = n->child; c; c = c->next) - { - switch (is_numeric_tag (eh, c)) - { - case 1001: - res->which = Z_StringOrNumeric_string; - res->u.string = f_string (eh, c); - break; - case 1002: - res->which = Z_StringOrNumeric_numeric; - res->u.numeric = f_integer (eh, c); - break; - } - } - return res; -} - -Z_AttributeDescription *f_attributeDescription ( - ExpHandle *eh, data1_node *n) -{ - Z_AttributeDescription *res = (Z_AttributeDescription *) - odr_malloc(eh->o, sizeof(*res)); - data1_node *c; - int i = 0; - - res->name = 0; - res->description = 0; - res->attributeValue = 0; - res->num_equivalentAttributes = 0; - res->equivalentAttributes = 0; - - for (c = n->child; c; c = c->next) - { - switch (is_numeric_tag (eh, c)) - { - case 102: res->name = f_string (eh, c); break; - case 113: res->description = f_humstring (eh, c); break; - case 710: res->attributeValue = f_stringOrNumeric (eh, c); break; - case 752: (res->num_equivalentAttributes++); break; - } - } - if (res->num_equivalentAttributes) - res->equivalentAttributes = (Z_StringOrNumeric **) - odr_malloc (eh->o, sizeof(*res->equivalentAttributes) * - res->num_equivalentAttributes); - for (c = n->child; c; c = c->next) - if (is_numeric_tag (eh, c) == 752) - res->equivalentAttributes[i++] = f_stringOrNumeric (eh, c); - return res; -} - -Z_AttributeType *f_attributeType (ExpHandle *eh, data1_node *n) -{ - Z_AttributeType *res = (Z_AttributeType *) - odr_malloc(eh->o, sizeof(*res)); - data1_node *c; - - res->name = 0; - res->description = 0; - res->attributeType = 0; - res->num_attributeValues = 0; - res->attributeValues = 0; - - for (c = n->child; c; c = c->next) - { - int i = 0; - switch (is_numeric_tag (eh, c)) - { - case 102: res->name = f_string (eh, c); break; - case 113: res->description = f_humstring (eh, c); break; - case 704: res->attributeType = f_integer (eh, c); break; - case 708: - for (n = c->child; n; n = n->next) - { - if (is_numeric_tag(eh, n) != 709) - continue; - (res->num_attributeValues)++; - } - if (res->num_attributeValues) - res->attributeValues = (Z_AttributeDescription **) - odr_malloc (eh->o, res->num_attributeValues - * sizeof(*res->attributeValues)); - for (n = c->child; n; n = n->next) - { - if (is_numeric_tag(eh, n) != 709) - continue; - res->attributeValues[i++] = f_attributeDescription (eh, n); - } - break; - } - } - return res; -} - -Z_AttributeSetInfo *f_attributeSetInfo (ExpHandle *eh, data1_node *n) -{ - Z_AttributeSetInfo *res = (Z_AttributeSetInfo *) - odr_malloc(eh->o, sizeof(*res)); - data1_node *c; - - res->commonInfo = 0; - res->attributeSet = 0; - res->name = 0; - res->num_attributes = 0; - res->attributes = 0; - res->description = 0; - for (c = n->child; c; c = c->next) - { - int i = 0; - switch (is_numeric_tag (eh, c)) - { - case 600: res->commonInfo = f_commonInfo (eh, c); break; - case 1000: res->attributeSet = f_oid (eh, c, CLASS_ATTSET); break; - case 102: res->name = f_string (eh, c); break; - case 750: - for (n = c->child; n; n = n->next) - { - if (is_numeric_tag(eh, n) != 751) - continue; - (res->num_attributes)++; - } - if (res->num_attributes) - res->attributes = (Z_AttributeType **) - odr_malloc (eh->o, res->num_attributes - * sizeof(*res->attributes)); - for (n = c->child; n; n = n->next) - { - if (is_numeric_tag(eh, n) != 751) - continue; - res->attributes[i++] = f_attributeType (eh, n); - } - break; - case 113: res->description = f_humstring (eh, c); break; - } - } - return res; -} - -Z_OmittedAttributeInterpretation *f_omittedAttributeInterpretation ( - ExpHandle *eh, data1_node *n) -{ - Z_OmittedAttributeInterpretation *res = (Z_OmittedAttributeInterpretation*) - odr_malloc (eh->o, sizeof(*res)); - data1_node *c; - - res->defaultValue = 0; - res->defaultDescription = 0; - for (c = n->child; c; c = c->next) - { - switch (is_numeric_tag (eh, c)) - { - case 706: - res->defaultValue = f_stringOrNumeric (eh, c); - break; - case 113: - res->defaultDescription = f_humstring(eh, c); - break; - } - } - return res; -} - -Z_AttributeValue *f_attributeValue (ExpHandle *eh, data1_node *n) -{ - Z_AttributeValue *res = (Z_AttributeValue *) - odr_malloc (eh->o, sizeof(*res)); - data1_node *c; - - res->value = 0; - res->description = 0; - res->num_subAttributes = 0; - res->subAttributes = 0; - res->num_superAttributes = 0; - res->superAttributes = 0; - res->partialSupport = 0; - for (c = n->child; c; c = c->next) - { - int i = 0; - switch (is_numeric_tag (eh, c)) - { - case 710: - res->value = f_stringOrNumeric (eh, c); break; - case 113: - res->description = f_humstring (eh, c); break; - case 712: - for (n = c->child; n; n = n->next) - { - if (is_numeric_tag(eh, n) != 713) - continue; - (res->num_subAttributes)++; - } - if (res->num_subAttributes) - res->subAttributes = - (Z_StringOrNumeric **) - odr_malloc (eh->o, res->num_subAttributes - * sizeof(*res->subAttributes)); - for (n = c->child; n; n = n->next) - { - if (is_numeric_tag(eh, n) != 713) - continue; - res->subAttributes[i++] = f_stringOrNumeric (eh, n); - } - break; - case 714: - for (n = c->child; n; n = n->next) - { - if (is_numeric_tag(eh, n) != 715) - continue; - (res->num_superAttributes)++; - } - if (res->num_superAttributes) - res->superAttributes = - (Z_StringOrNumeric **) - odr_malloc (eh->o, res->num_superAttributes - * sizeof(*res->superAttributes)); - for (n = c->child; n; n = n->next) - { - if (is_numeric_tag(eh, n) != 715) - continue; - res->superAttributes[i++] = f_stringOrNumeric (eh, n); - } - break; - case 711: - res->partialSupport = odr_nullval (); - break; - } - } - return res; -} - -Z_AttributeTypeDetails *f_attributeTypeDetails (ExpHandle *eh, data1_node *n) -{ - Z_AttributeTypeDetails *res = (Z_AttributeTypeDetails *) - odr_malloc(eh->o, sizeof(*res)); - data1_node *c; - res->attributeType = 0; - res->defaultIfOmitted = 0; - res->num_attributeValues = 0; - res->attributeValues = 0; - for (c = n->child; c; c = c->next) - { - int i = 0; - switch (is_numeric_tag (eh, c)) - { - case 704: res->attributeType = f_integer (eh, c); break; - case 705: - res->defaultIfOmitted = f_omittedAttributeInterpretation (eh, c); - break; - case 708: - for (n = c->child; n; n = n->next) - { - if (is_numeric_tag(eh, n) != 709) - continue; - (res->num_attributeValues)++; - } - if (res->num_attributeValues) - res->attributeValues = - (Z_AttributeValue **) - odr_malloc (eh->o, res->num_attributeValues - * sizeof(*res->attributeValues)); - for (n = c->child; n; n = n->next) - { - if (is_numeric_tag(eh, n) != 709) - continue; - res->attributeValues[i++] = f_attributeValue (eh, n); - } - break; - } - } - return res; -} - -Z_AttributeSetDetails *f_attributeSetDetails (ExpHandle *eh, data1_node *n) -{ - Z_AttributeSetDetails *res = (Z_AttributeSetDetails *) - odr_malloc(eh->o, sizeof(*res)); - data1_node *c; - - res->attributeSet = 0; - res->num_attributesByType = 0; - res->attributesByType = 0; - for (c = n->child; c; c = c->next) - { - int i = 0; - switch (is_numeric_tag (eh, c)) - { - case 1000: res->attributeSet = f_oid(eh, c, CLASS_ATTSET); break; - case 702: - for (n = c->child; n; n = n->next) - { - if (is_numeric_tag(eh, n) != 703) - continue; - (res->num_attributesByType)++; - } - if (res->num_attributesByType) - res->attributesByType = - (Z_AttributeTypeDetails **) - odr_malloc (eh->o, res->num_attributesByType - * sizeof(*res->attributesByType)); - for (n = c->child; n; n = n->next) - { - if (is_numeric_tag(eh, n) != 703) - continue; - res->attributesByType[i++] = f_attributeTypeDetails (eh, n); - } - break; - } - } - return res; -} - -Z_AttributeValueList *f_attributeValueList (ExpHandle *eh, data1_node *n) -{ - Z_AttributeValueList *res = (Z_AttributeValueList *) - odr_malloc (eh->o, sizeof(*res)); - data1_node *c; - int i = 0; - - res->num_attributes = 0; - res->attributes = 0; - for (c = n->child; c; c = c->next) - if (is_numeric_tag (eh, c) == 710) - (res->num_attributes)++; - if (res->num_attributes) - { - res->attributes = (Z_StringOrNumeric **) - odr_malloc (eh->o, res->num_attributes * sizeof(*res->attributes)); - } - for (c = n->child; c; c = c->next) - if (is_numeric_tag(eh, c) == 710) - res->attributes[i++] = f_stringOrNumeric (eh, c); - return res; -} - -Z_AttributeOccurrence *f_attributeOccurrence (ExpHandle *eh, data1_node *n) -{ - Z_AttributeOccurrence *res = (Z_AttributeOccurrence *) - odr_malloc (eh->o, sizeof(*res)); - data1_node *c; - - res->attributeSet = 0; - res->attributeType = 0; - res->mustBeSupplied = 0; - res->which = Z_AttributeOcc_any_or_none; - res->attributeValues.any_or_none = odr_nullval (); - - for (c = n->child; c; c = c->next) - { - switch (is_numeric_tag (eh, c)) - { - case 1000: - res->attributeSet = f_oid (eh, c, CLASS_ATTSET); break; - case 704: - res->attributeType = f_integer (eh, c); break; - case 720: - res->mustBeSupplied = odr_nullval (); break; - case 721: - res->which = Z_AttributeOcc_any_or_none; - res->attributeValues.any_or_none = odr_nullval (); - break; - case 722: - res->which = Z_AttributeOcc_specific; - res->attributeValues.specific = f_attributeValueList (eh, c); - break; - } - } - return res; -} - -Z_AttributeCombination *f_attributeCombination (ExpHandle *eh, data1_node *n) -{ - Z_AttributeCombination *res = (Z_AttributeCombination *) - odr_malloc (eh->o, sizeof(*res)); - data1_node *c; - int i = 0; - - res->num_occurrences = 0; - res->occurrences = 0; - for (c = n->child; c; c = c->next) - if (is_numeric_tag (eh, c) == 719) - (res->num_occurrences)++; - if (res->num_occurrences) - { - res->occurrences = (Z_AttributeOccurrence **) - odr_malloc (eh->o, res->num_occurrences * sizeof(*res->occurrences)); - } - for (c = n->child; c; c = c->next) - if (is_numeric_tag(eh, c) == 719) - res->occurrences[i++] = f_attributeOccurrence (eh, c); - assert (res->num_occurrences); - return res; -} - -Z_AttributeCombinations *f_attributeCombinations (ExpHandle *eh, data1_node *n) -{ - Z_AttributeCombinations *res = (Z_AttributeCombinations *) - odr_malloc (eh->o, sizeof(*res)); - data1_node *c; - res->defaultAttributeSet = 0; - res->num_legalCombinations = 0; - res->legalCombinations = 0; - - for (c = n->child; c; c = c->next) - { - int i = 0; - switch (is_numeric_tag (eh, c)) - { - case 1000: - res->defaultAttributeSet = f_oid (eh, c, CLASS_ATTSET); - break; - case 717: - for (n = c->child; n; n = n->next) - { - if (is_numeric_tag(eh, n) != 718) - continue; - (res->num_legalCombinations)++; - } - if (res->num_legalCombinations) - res->legalCombinations = - (Z_AttributeCombination **) - odr_malloc (eh->o, res->num_legalCombinations - * sizeof(*res->legalCombinations)); - for (n = c->child; n; n = n->next) - { - if (is_numeric_tag(eh, n) != 718) - continue; - res->legalCombinations[i++] = f_attributeCombination (eh, n); - } - break; - } - } - assert (res->num_legalCombinations); - return res; -} - -Z_AttributeDetails *f_attributeDetails (ExpHandle *eh, data1_node *n) -{ - Z_AttributeDetails *res = (Z_AttributeDetails *) - odr_malloc(eh->o, sizeof(*res)); - data1_node *c; - - res->commonInfo = 0; - res->databaseName = 0; - res->num_attributesBySet = 0; - res->attributesBySet = NULL; - res->attributeCombinations = NULL; - - for (c = n->child; c; c = c->next) - { - int i = 0; - switch (is_numeric_tag (eh, c)) - { - case 600: res->commonInfo = f_commonInfo(eh, c); break; - case 102: res->databaseName = f_string (eh, c); break; - case 700: - for (n = c->child; n; n = n->next) - { - if (is_numeric_tag(eh, n) != 701) - continue; - (res->num_attributesBySet)++; - } - if (res->num_attributesBySet) - res->attributesBySet = - (Z_AttributeSetDetails **) - odr_malloc (eh->o, res->num_attributesBySet - * sizeof(*res->attributesBySet)); - for (n = c->child; n; n = n->next) - { - if (is_numeric_tag(eh, n) != 701) - continue; - res->attributesBySet[i++] = f_attributeSetDetails (eh, n); - } - break; - case 716: - res->attributeCombinations = f_attributeCombinations (eh, c); - break; - } - } - return res; -} - -Z_ExplainRecord *data1_nodetoexplain (data1_handle dh, data1_node *n, - int select, ODR o) -{ - ExpHandle eh; - Z_ExplainRecord *res = (Z_ExplainRecord *)odr_malloc(o, sizeof(*res)); - - eh.dh = dh; - eh.select = select; - eh.o = o; - eh.false_value = (int *)odr_malloc(eh.o, sizeof(eh.false_value)); - *eh.false_value = 0; - eh.true_value = (int *)odr_malloc(eh.o, sizeof(eh.true_value)); - *eh.true_value = 1; - - assert(n->which == DATA1N_root); - if (strcmp(n->u.root.type, "explain")) - { - yaz_log(LOG_WARN, "Attempt to convert a non-Explain record"); - return 0; - } - for (n = n->child; n; n = n->next) - { - switch (is_numeric_tag (&eh, n)) - { - case 1: - res->which = Z_Explain_categoryList; - if (!(res->u.categoryList = f_categoryList(&eh, n))) - return 0; - return res; - case 2: - res->which = Z_Explain_targetInfo; - if (!(res->u.targetInfo = f_targetInfo(&eh, n))) - return 0; - return res; - case 3: - res->which = Z_Explain_databaseInfo; - if (!(res->u.databaseInfo = f_databaseInfo(&eh, n))) - return 0; - return res; - case 7: - res->which = Z_Explain_attributeSetInfo; - if (!(res->u.attributeSetInfo = f_attributeSetInfo(&eh, n))) - return 0; - return res; - case 10: - res->which = Z_Explain_attributeDetails; - if (!(res->u.attributeDetails = f_attributeDetails(&eh, n))) - return 0; - return res; - } - } - yaz_log(LOG_WARN, "No category in Explain record"); - return 0; -} diff --git a/retrieval/d1_grs.c b/retrieval/d1_grs.c deleted file mode 100644 index 393a77f..0000000 --- a/retrieval/d1_grs.c +++ /dev/null @@ -1,363 +0,0 @@ -/* - * Copyright (c) 1995-2002, Index Data. - * See the file LICENSE for details. - * Sebastian Hammer, Adam Dickmeiss - * - * $Id: d1_grs.c,v 1.26 2002-10-08 22:18:22 adam Exp $ - * - */ - -#include -#include - -#include -#include -#include - -#define D1_VARIANTARRAY 20 /* fixed max length on sup'd variant-list. Lazy me */ - -static Z_ElementMetaData *get_ElementMetaData(ODR o) -{ - Z_ElementMetaData *r = (Z_ElementMetaData *)odr_malloc(o, sizeof(*r)); - - r->seriesOrder = 0; - r->usageRight = 0; - r->num_hits = 0; - r->hits = 0; - r->displayName = 0; - r->num_supportedVariants = 0; - r->supportedVariants = 0; - r->message = 0; - r->elementDescriptor = 0; - r->surrogateFor = 0; - r->surrogateElement = 0; - r->other = 0; - - return r; -} - -/* - * N should point to the *last* (leaf) triple in a sequence. Construct a variant - * from each of the triples beginning (ending) with 'n', up to the - * nearest parent tag. num should equal the number of triples in the - * sequence. - */ -static Z_Variant *make_variant(data1_node *n, int num, ODR o) -{ - Z_Variant *v = (Z_Variant *)odr_malloc(o, sizeof(*v)); - data1_node *p; - - v->globalVariantSetId = 0; - v->num_triples = num; - v->triples = (Z_Triple **)odr_malloc(o, sizeof(Z_Triple*) * num); - - /* - * cycle back up through the tree of variants - * (traversing exactly 'level' variants). - */ - for (p = n, num--; p && num >= 0; p = p->parent, num--) - { - Z_Triple *t; - - assert(p->which == DATA1N_variant); - t = v->triples[num] = (Z_Triple *)odr_malloc(o, sizeof(*t)); - t->variantSetId = 0; - t->zclass = (int *)odr_malloc(o, sizeof(int)); - *t->zclass = p->u.variant.type->zclass->zclass; - t->type = (int *)odr_malloc(o, sizeof(int)); - *t->type = p->u.variant.type->type; - - switch (p->u.variant.type->datatype) - { - case DATA1K_string: - t->which = Z_Triple_internationalString; - t->value.internationalString = - odr_strdup(o, p->u.variant.value); - break; - default: - yaz_log(LOG_WARN, "Unable to handle value for variant %s", - p->u.variant.type->name); - return 0; - } - } - return v; -} - -/* - * Traverse the variant children of n, constructing a supportedVariant list. - */ -static int traverse_triples(data1_node *n, int level, Z_ElementMetaData *m, - ODR o) -{ - data1_node *c; - - for (c = n->child; c; c = c->next) - if (c->which == DATA1N_data && level) - { - if (!m->supportedVariants) - m->supportedVariants = (Z_Variant **)odr_malloc(o, sizeof(Z_Variant*) * - D1_VARIANTARRAY); - else if (m->num_supportedVariants >= D1_VARIANTARRAY) - { - yaz_log(LOG_WARN, "Too many variants (D1_VARIANTARRAY==%d)", - D1_VARIANTARRAY); - return -1; - } - - if (!(m->supportedVariants[m->num_supportedVariants++] = - make_variant(n, level, o))) - return -1; - } - else if (c->which == DATA1N_variant) - if (traverse_triples(c, level+1, m, o) < 0) - return -1; - return 0; -} - -/* - * Locate some data under this node. This routine should handle variants - * prettily. - */ -static char *get_data(data1_node *n, int *len) -{ - char *r; - data1_node *np = 0; - - while (n) - { - if (n->which == DATA1N_data) - { - int i; - *len = n->u.data.len; - - for (i = 0; i<*len; i++) - if (!d1_isspace(n->u.data.data[i])) - break; - while (*len && d1_isspace(n->u.data.data[*len - 1])) - (*len)--; - *len = *len - i; - if (*len > 0) - return n->u.data.data + i; - } - if (n->which == DATA1N_tag) - np = n->child; - n = n->next; - if (!n) - { - n = np; - np = 0; - } - } - r = ""; - *len = strlen(r); - return r; -} - -static Z_ElementData *nodetoelementdata(data1_handle dh, data1_node *n, - int select, int leaf, - ODR o, int *len) -{ - Z_ElementData *res = (Z_ElementData *)odr_malloc(o, sizeof(*res)); - - if (!n) - { - res->which = Z_ElementData_elementNotThere; - res->u.elementNotThere = odr_nullval(); - } - else if (n->which == DATA1N_data && leaf) - { - char str[64], *cp; - int toget = n->u.data.len; - - cp = get_data (n, &toget); - - switch (n->u.data.what) - { - case DATA1I_num: - res->which = Z_ElementData_numeric; - res->u.numeric = (int *)odr_malloc(o, sizeof(int)); - *res->u.numeric = atoi_n (cp, toget); - *len += 4; - break; - case DATA1I_text: - case DATA1I_xmltext: - res->which = Z_ElementData_string; - res->u.string = (char *)odr_malloc(o, toget+1); - if (toget) - memcpy(res->u.string, cp, toget); - res->u.string[toget] = '\0'; - *len += toget; - break; - case DATA1I_oid: - res->which = Z_ElementData_oid; - if (toget > 63) - toget = 63; - memcpy (str, cp, toget); - str[toget] = '\0'; - res->u.oid = odr_getoidbystr(o, str); - *len += oid_oidlen(res->u.oid) * sizeof(int); - break; - default: - yaz_log(LOG_WARN, "Can't handle datatype."); - return 0; - } - } - else - { - res->which = Z_ElementData_subtree; - if (!(res->u.subtree = data1_nodetogr (dh, n->parent, select, o, len))) - return 0; - } - return res; -} - -static int is_empty_data (data1_node *n) -{ - if (n && n->which == DATA1N_data && (n->u.data.what == DATA1I_text - || n->u.data.what == DATA1I_xmltext)) - { - int i = n->u.data.len; - - while (i > 0 && strchr("\n ", n->u.data.data[i-1])) - i--; - if (i == 0) - return 1; - } - return 0; -} - - -static Z_TaggedElement *nodetotaggedelement(data1_handle dh, data1_node *n, - int select, ODR o, - int *len) -{ - Z_TaggedElement *res = (Z_TaggedElement *)odr_malloc(o, sizeof(*res)); - data1_tag *tag = 0; - data1_node *data; - int leaf = 0; - - if (n->which == DATA1N_tag) - { - if (n->u.tag.element) - tag = n->u.tag.element->tag; - data = n->child; - - /* skip empty data children */ - while (is_empty_data(data)) - data = data->next; - if (!data) - data = n->child; - else - { /* got one. see if this is the only non-empty one */ - data1_node *sub = data->next; - while (sub && is_empty_data(sub)) - sub = sub->next; - if (!sub) - leaf = 1; /* all empty. 'data' is the only child */ - } - } - /* - * If we're a data element at this point, we need to insert a - * wellKnown tag to wrap us up. - */ - else if (n->which == DATA1N_data || n->which == DATA1N_variant) - { - if (n->root->u.root.absyn && - !(tag = data1_gettagbyname (dh, n->root->u.root.absyn->tagset, - "wellKnown"))) - { - yaz_log(LOG_WARN, "Unable to locate tag for 'wellKnown'"); - return 0; - } - data = n; - leaf = 1; - if (is_empty_data(data)) - return 0; - } - else - { - yaz_log(LOG_WARN, "Bad data."); - return 0; - } - - res->tagType = (int *)odr_malloc(o, sizeof(int)); - *res->tagType = (tag && tag->tagset) ? tag->tagset->type : 3; - res->tagValue = (Z_StringOrNumeric *)odr_malloc(o, sizeof(Z_StringOrNumeric)); - if (tag && tag->which == DATA1T_numeric) - { - res->tagValue->which = Z_StringOrNumeric_numeric; - res->tagValue->u.numeric = (int *)odr_malloc(o, sizeof(int)); - *res->tagValue->u.numeric = tag->value.numeric; - } - else - { - char *tagstr; - - if (n->which == DATA1N_tag) - tagstr = n->u.tag.tag; /* tag at node */ - else if (tag) - tagstr = tag->value.string; /* no take from well-known */ - else - return 0; - res->tagValue->which = Z_StringOrNumeric_string; - res->tagValue->u.string = odr_strdup(o, tagstr); - } - res->tagOccurrence = 0; - res->appliedVariant = 0; - res->metaData = 0; - if (n->which == DATA1N_variant || (data && data->which == - DATA1N_variant && data->next == NULL)) - { - int nvars = 0; - - res->metaData = get_ElementMetaData(o); - if (n->which == DATA1N_tag && n->u.tag.make_variantlist) - if (traverse_triples(data, 0, res->metaData, o) < 0) - return 0; - while (data && data->which == DATA1N_variant) - { - nvars++; - data = data->child; - } - if (n->which != DATA1N_tag || !n->u.tag.no_data_requested) - res->appliedVariant = make_variant(data->parent, nvars-1, o); - } - if (n->which == DATA1N_tag && n->u.tag.no_data_requested) - { - res->content = (Z_ElementData *)odr_malloc(o, sizeof(*res->content)); - res->content->which = Z_ElementData_noDataRequested; - res->content->u.noDataRequested = odr_nullval(); - } - else if (!(res->content = nodetoelementdata (dh, data, select, leaf, - o, len))) - return 0; - *len += 10; - return res; -} - -Z_GenericRecord *data1_nodetogr(data1_handle dh, data1_node *n, - int select, ODR o, int *len) -{ - Z_GenericRecord *res = (Z_GenericRecord *)odr_malloc(o, sizeof(*res)); - data1_node *c; - int num_children = 0; - - if (n->which == DATA1N_root) - n = data1_get_root_tag (dh, n); - - for (c = n->child; c; c = c->next) - num_children++; - - res->elements = (Z_TaggedElement **) - odr_malloc(o, sizeof(Z_TaggedElement *) * num_children); - res->num_elements = 0; - for (c = n->child; c; c = c->next) - { - if (c->which == DATA1N_tag && select && !c->u.tag.node_selected) - continue; - if ((res->elements[res->num_elements] = - nodetotaggedelement (dh, c, select, o, len))) - res->num_elements++; - } - return res; -} diff --git a/retrieval/d1_handle.c b/retrieval/d1_handle.c deleted file mode 100644 index 51cf971..0000000 --- a/retrieval/d1_handle.c +++ /dev/null @@ -1,144 +0,0 @@ -/* - * Copyright (c) 1995-2002, Index Data. - * See the file LICENSE for details. - * - * $Id: d1_handle.c,v 1.9 2002-07-29 20:04:08 adam Exp $ - */ - -#include -#include - -#include -#include - -struct data1_handle_info { - WRBUF wrbuf; - char *tab_path; - char *tab_root; - - char *read_buf; - int read_len; - - data1_absyn_cache absyn_cache; - data1_attset_cache attset_cache; - - char *map_buf; - int map_len; - - NMEM mem; - int flags; -}; - -data1_handle data1_create (void) -{ - return data1_createx(0); -} - -data1_handle data1_createx (int flags) -{ - data1_handle p = (data1_handle)xmalloc (sizeof(*p)); - if (!p) - return NULL; - p->tab_path = NULL; - p->tab_root = NULL; - p->wrbuf = wrbuf_alloc(); - p->read_buf = NULL; - p->read_len = 0; - p->map_buf = NULL; - p->map_len = 0; - p->absyn_cache = NULL; - p->attset_cache = NULL; - p->mem = nmem_create (); - p->flags = flags; - return p; -} - -NMEM data1_nmem_get (data1_handle dh) -{ - return dh->mem; -} - -data1_absyn_cache *data1_absyn_cache_get (data1_handle dh) -{ - return &dh->absyn_cache; -} - -data1_attset_cache *data1_attset_cache_get (data1_handle dh) -{ - return &dh->attset_cache; -} - -void data1_destroy (data1_handle dh) -{ - if (!dh) - return; - wrbuf_free (dh->wrbuf, 1); - if (dh->tab_path) - xfree (dh->tab_path); - if (dh->tab_root) - xfree (dh->tab_root); - if (dh->read_buf) - xfree (dh->read_buf); - if (dh->map_buf) - xfree (dh->map_buf); - nmem_destroy (dh->mem); - - xfree (dh); -} - -WRBUF data1_get_wrbuf (data1_handle dp) -{ - return dp->wrbuf; -} - -char **data1_get_read_buf (data1_handle dp, int **lenp) -{ - *lenp = &dp->read_len; - yaz_log (LOG_DEBUG, "data1_get_read_buf lenp=%u", **lenp); - return &dp->read_buf; -} - -char **data1_get_map_buf (data1_handle dp, int **lenp) -{ - *lenp = &dp->map_len; - yaz_log (LOG_DEBUG, "data1_get_map_buf lenp=%u", **lenp); - return &dp->map_buf; -} - -void data1_set_tabpath (data1_handle dp, const char *p) -{ - xfree (dp->tab_path); - dp->tab_path = NULL; - if (p) - dp->tab_path = xstrdup (p); -} - -void data1_set_tabroot (data1_handle dp, const char *p) -{ - xfree (dp->tab_root); - dp->tab_root = NULL; - if (p) - dp->tab_root = xstrdup (p); -} - -const char *data1_get_tabpath (data1_handle dp) -{ - return dp->tab_path; -} - -const char *data1_get_tabroot (data1_handle dp) -{ - return dp->tab_root; -} - -FILE *data1_path_fopen (data1_handle dh, const char *file, const char *mode) -{ - const char *path = data1_get_tabpath(dh); - const char *root = data1_get_tabroot(dh); - return yaz_fopen (path, file, "r", root); -} - -int data1_is_xmlmode(data1_handle dh) -{ - return dh->flags & DATA1_FLAG_XML; -} diff --git a/retrieval/d1_if.c b/retrieval/d1_if.c deleted file mode 100644 index 62facc3..0000000 --- a/retrieval/d1_if.c +++ /dev/null @@ -1,305 +0,0 @@ -/* - * Copyright (c) 1995-2000, Index Data. - * See the file LICENSE for details. - * - * d1_if.c : A simple interface for extracting strings from data1_node - * tree structures - * - * $Log: d1_if.c,v $ - * Revision 1.5 2000-02-10 13:42:43 adam - * Removed C++ comment. - * - * Revision 1.4 2000/01/06 14:30:56 adam - * Minor change - to prevent warnings. - * - * Revision 1.3 2000/01/06 11:27:02 adam - * Minor fix so that this source compiles using Visual C++. - * - * Revision 1.2 2000/01/04 17:46:17 ian - * Added function to count occurences of a tag spec in a data1 tree. - * - * Revision 1.1 1999/12/21 14:16:19 ian - * Changed retrieval module to allow data1 trees with no associated absyn. - * Also added a simple interface for extracting values from data1 trees using - * a string based tagpath. - * - */ - -#include -#include -#include -#include - -#include -#include - -#include - - -/* - * Search for a token in the supplied string up to the supplied list of stop characters or EOL - * At the end, return the character causing the break and fill pTokenBuffer with the token string so far - * After the scan, *pPosInBuffer will point to the next character after the one causing the break and - * pTokenBuffer will contain the actual token - */ -char data1_ScanNextToken(char* pBuffer, - char** pPosInBuffer, - char* pBreakChars, - char* pWhitespaceChars, - char* pTokenBuffer) -{ - char* pBuff = pTokenBuffer; - *pBuff = '\0'; - - while ( **pPosInBuffer ) - { - if ( strchr(pBreakChars,**pPosInBuffer) != NULL ) - { - /* Current character is a break character */ - *pBuff++ = '\0'; - return *((*pPosInBuffer)++); - } - else - { - if ( strchr(pWhitespaceChars, **pPosInBuffer) != NULL ) - (*pPosInBuffer)++; - else - *pBuff++ = *((*pPosInBuffer)++); - } - } - - *pBuff++ = *((*pPosInBuffer)++); - return(**pPosInBuffer); -} - -/* - * Attempt to find a string value given the specified tagpath - * - * Need to make this safe by passing in a buffer..... - * - */ -char *data1_getNodeValue(data1_node* node, char* pTagPath) -{ - data1_node* n = NULL; - - n = data1_LookupNode(node, pTagPath ); - - if ( n ) - { - /* n should be a tag node with some data under it.... */ - if ( n->child ) - { - if ( n->child->which == DATA1N_data ) - { - return n->child->u.data.data; - } - else - { - yaz_log(LOG_WARN,"Attempting to lookup data for tagpath: Child node is not a data node"); - } - } - else - { - yaz_log(LOG_WARN,"Found a node matching the tagpath, but it has no child data nodes"); - } - } - else - { - yaz_log(LOG_WARN,"Unable to lookup a node on the specified tag path"); - } - - return ""; -} - - -/* Max length of a tag */ -#define MAX_TAG_SIZE 50 - -/* - * data1_LookupNode : Try and find a node as specified by a tagpath - */ -data1_node *data1_LookupNode(data1_node* node, char* pTagPath) -{ - /* Node matching the pattern in the tagpath */ - data1_node* matched_node = NULL; - - /* Current Child node as we search for nodes matching the pattern in the tagpath */ - data1_node* current_child = node->child; - - /* Current position in string */ - char* pCurrCharInPath = pTagPath; - - /* Work buffer */ - char Buffer[MAX_TAG_SIZE]; - - /* The tag type of this node */ - int iTagType = 0; - - /* for non string tags, the tag value */ - int iTagValue = 0; - - /* for string tags, the tag value */ - char StringTagVal[MAX_TAG_SIZE]; - - /* Which occurence of that tag under this node */ - int iOccurences=0; - - /* Character causing a break */ - char sepchr = '\0'; - Buffer[0] = '\0'; - StringTagVal[0] = '\0'; - - sepchr = data1_ScanNextToken(pTagPath, &pCurrCharInPath, ",[(."," ", Buffer); - - if ( sepchr == '[' ) - { - /* Next component in node value is [ TagType, TagVal, TagOccurence ] */ - sepchr = data1_ScanNextToken(pTagPath, &pCurrCharInPath, ","," ", Buffer); - iTagType = atoi(Buffer); - - /* Occurence is optional... */ - sepchr = data1_ScanNextToken(pTagPath, &pCurrCharInPath, ",]."," ", Buffer); - - if ( iTagType == 3 ) - strcpy(StringTagVal,Buffer); - else - iTagValue = atoi(Buffer); - - /* If sepchar was a ',' there should be an instance */ - if ( sepchr == ',' ) - { - sepchr = data1_ScanNextToken(pTagPath, &pCurrCharInPath, "]."," ", Buffer); - iOccurences = atoi(Buffer); - } - - if ( sepchr == ']' ) - { - /* See if we can scan the . for the next component or the end of the line... */ - sepchr = data1_ScanNextToken(pTagPath, &pCurrCharInPath, "."," ", Buffer); - } - else - { - yaz_log(LOG_FATAL,"Node does not end with a ]"); - /* Fatal Error */ - return(NULL); - } - } - else - { - /* We have a TagName so Read up to ( or . or EOL */ - iTagType = 3; - strcpy(StringTagVal,Buffer); - - if ( sepchr == '(' ) - { - /* Read the occurence */ - sepchr = data1_ScanNextToken(pTagPath, &pCurrCharInPath, ")"," ", Buffer); - iOccurences = atoi(Buffer); - - /* See if we can find the . at the end of this clause */ - sepchr = data1_ScanNextToken(pTagPath, &pCurrCharInPath, "."," ", Buffer); - } - - } - - yaz_log(LOG_DEBUG,"search node for child like [%d,%d,%s,%d]",iTagType,iTagValue,StringTagVal,iOccurences); - - - /* OK.. We have extracted tagtype, Value and Occurence, see if we can find a node */ - /* Under the current parent matching that description */ - - while ( ( current_child ) && ( matched_node == NULL ) ) - { - if ( current_child->which == DATA1N_tag ) - { - if ( iTagType == 3 ) - { - if ( ( current_child->u.tag.element == NULL ) && - ( strcmp(current_child->u.tag.tag, StringTagVal) == 0 ) ) - { - if ( iOccurences ) - { - /* Everything matched, but not yet found the - right occurence of the given tag */ - iOccurences--; - } - else - { - /* We have matched a string tag... Is there more to - process? */ - matched_node = current_child; - } - } - } - else /* Attempt to match real element */ - { - yaz_log(LOG_WARN,"Non string tag matching not yet implemented"); - } - } - current_child = current_child->next; - } - - - /* If there is more... Continue */ - if ( ( sepchr == '.' ) && ( matched_node ) ) - { - return data1_LookupNode(matched_node, pCurrCharInPath); - } - else - { - return matched_node; - } -} - -/** - -data1_CountOccurences - -Count the number of occurences of the last instance on a tagpath. - -@param data1_node* node : The root of the tree we wish to look for occurences in -@param const char* pTagPath : The tagpath we want to count the occurences of... - -*/ -int data1_CountOccurences(data1_node* node, char* pTagPath) -{ - int iRetVal = 0; - data1_node* n = NULL; - data1_node* pParent = NULL; - - n = data1_LookupNode(node, pTagPath ); - - - if ( ( n ) && - ( n->which == DATA1N_tag ) && - ( n->parent ) ) - { - data1_node* current_child; - pParent = n->parent; - - for ( current_child = pParent->child; - current_child; - current_child = current_child->next ) - { - if ( current_child->which == DATA1N_tag ) - { - if ( current_child->u.tag.element == NULL ) - { - if ( ( n->u.tag.tag ) && - ( current_child->u.tag.tag ) && - ( strcmp(current_child->u.tag.tag, n->u.tag.tag) == 0 ) ) - { - iRetVal++; - } - } - else if ( current_child->u.tag.element == n->u.tag.element ) - { - /* Hmmm... Is the above right for non string tags???? */ - iRetVal++; - } - } - } - } - - return iRetVal; -} diff --git a/retrieval/d1_map.c b/retrieval/d1_map.c deleted file mode 100644 index d3c79e5..0000000 --- a/retrieval/d1_map.c +++ /dev/null @@ -1,322 +0,0 @@ -/* - * Copyright (c) 1995-2002, Index Data. - * See the file LICENSE for details. - * Sebastian Hammer, Adam Dickmeiss - * - * $Id: d1_map.c,v 1.25 2002-09-24 08:05:41 adam Exp $ - */ - -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -data1_maptab *data1_read_maptab (data1_handle dh, const char *file) -{ - NMEM mem = data1_nmem_get (dh); - data1_maptab *res = (data1_maptab *)nmem_malloc(mem, sizeof(*res)); - FILE *f; - int lineno = 0; - int argc; - char *argv[50], line[512]; - data1_mapunit **mapp; - int local_numeric = 0; - - if (!(f = data1_path_fopen(dh, file, "r"))) - { - yaz_log(LOG_WARN|LOG_ERRNO, "%s", file); - return 0; - } - - res->name = 0; - res->target_absyn_ref = VAL_NONE; - res->map = 0; - mapp = &res->map; - res->next = 0; - - while ((argc = readconf_line(f, &lineno, line, 512, argv, 50))) - if (!strcmp(argv[0], "targetref")) - { - if (argc != 2) - { - yaz_log(LOG_WARN, "%s:%d: Bad # args for targetref", - file, lineno); - continue; - } - if ((res->target_absyn_ref = oid_getvalbyname(argv[1])) - == VAL_NONE) - { - yaz_log(LOG_WARN, "%s:%d: Unknown reference '%s'", - file, lineno, argv[1]); - continue; - } - } - else if (!strcmp(argv[0], "targetname")) - { - if (argc != 2) - { - yaz_log(LOG_WARN, "%s:%d: Bad # args for targetname", - file, lineno); - continue; - } - res->target_absyn_name = - (char *)nmem_malloc(mem, strlen(argv[1])+1); - strcpy(res->target_absyn_name, argv[1]); - } - else if (!yaz_matchstr(argv[0], "localnumeric")) - local_numeric = 1; - else if (!strcmp(argv[0], "name")) - { - if (argc != 2) - { - yaz_log(LOG_WARN, "%s:%d: Bad # args for name", file, lineno); - continue; - } - res->name = (char *)nmem_malloc(mem, strlen(argv[1])+1); - strcpy(res->name, argv[1]); - } - else if (!strcmp(argv[0], "map")) - { - data1_maptag **mtp; - char *ep, *path = argv[2]; - - if (argc < 3) - { - yaz_log(LOG_WARN, "%s:%d: Bad # of args for map", - file, lineno); - continue; - } - *mapp = (data1_mapunit *)nmem_malloc(mem, sizeof(**mapp)); - (*mapp)->next = 0; - if (argc > 3 && !data1_matchstr(argv[3], "nodata")) - (*mapp)->no_data = 1; - else - (*mapp)->no_data = 0; - (*mapp)->source_element_name = - (char *)nmem_malloc(mem, strlen(argv[1])+1); - strcpy((*mapp)->source_element_name, argv[1]); - mtp = &(*mapp)->target_path; - if (*path == '/') - path++; - for (ep = strchr(path, '/'); path; (void)((path = ep) && - (ep = strchr(path, '/')))) - { - int type, np; - char valstr[512], parm[512]; - - if (ep) - ep++; - if ((np = sscanf(path, "(%d,%511[^)]):%511[^/]", &type, valstr, - parm)) < 2) - { - yaz_log(LOG_WARN, "%s:%d: Syntax error in map " - "directive: %s", file, lineno, argv[2]); - fclose(f); - return 0; - } - *mtp = (data1_maptag *)nmem_malloc(mem, sizeof(**mtp)); - (*mtp)->next = 0; - (*mtp)->type = type; - if (np > 2 && !data1_matchstr(parm, "new")) - (*mtp)->new_field = 1; - else - (*mtp)->new_field = 0; - if ((type != 3 || local_numeric) && d1_isdigit(*valstr)) - { - (*mtp)->which = D1_MAPTAG_numeric; - (*mtp)->value.numeric = atoi(valstr); - } - else - { - (*mtp)->which = D1_MAPTAG_string; - (*mtp)->value.string = - (char *)nmem_malloc(mem, strlen(valstr)+1); - strcpy((*mtp)->value.string, valstr); - } - mtp = &(*mtp)->next; - } - mapp = &(*mapp)->next; - } - else - yaz_log(LOG_WARN, "%s:%d: Unknown directive '%s'", - file, lineno, argv[0]); - - fclose(f); - return res; -} - -/* - * Locate node with given elementname. - * NOTE: This is stupid - we don't find repeats this way. - */ -static data1_node *find_node(data1_node *p, char *elementname) -{ - data1_node *c, *r; - - for (c = p->child; c; c = c->next) - if (c->which == DATA1N_tag && c->u.tag.element && - !data1_matchstr(c->u.tag.element->name, elementname)) - return c; - else if ((r = find_node(c, elementname))) - return r; - return 0; -} - -/* - * See if the node n is equivalent to the tag t. - */ -static int tagmatch(data1_node *n, data1_maptag *t) -{ - if (n->which != DATA1N_tag) - return 0; - if (n->u.tag.element) - { - if (n->u.tag.element->tag->tagset) - { - if (n->u.tag.element->tag->tagset->type != t->type) - return 0; - } - else if (t->type != 3) - return 0; - if (n->u.tag.element->tag->which == DATA1T_numeric) - { - if (t->which != D1_MAPTAG_numeric) - return 0; - if (n->u.tag.element->tag->value.numeric != t->value.numeric) - return 0; - } - else - { - if (t->which != D1_MAPTAG_string) - return 0; - if (data1_matchstr(n->u.tag.element->tag->value.string, - t->value.string)) - return 0; - } - } - else /* local tag */ - { - char str[10]; - - if (t->type != 3) - return 0; - if (t->which == D1_MAPTAG_numeric) - sprintf(str, "%d", t->value.numeric); - else - strcpy(str, t->value.string); - if (data1_matchstr(n->u.tag.tag, str)) - return 0; - } - return 1; -} - -static data1_node *dup_child (data1_handle dh, data1_node *n, - data1_node **last, NMEM mem, - data1_node *parent) -{ - data1_node *first = 0; - data1_node **m = &first; - - for (; n; n = n->next) - { - *last = *m = (data1_node *) nmem_malloc (mem, sizeof(**m)); - memcpy (*m, n, sizeof(**m)); - - (*m)->parent = parent; - (*m)->root = parent->root; - (*m)->child = dup_child(dh, n->child, &(*m)->last_child, mem, *m); - m = &(*m)->next; - } - *m = 0; - return first; -} - -static int map_children(data1_handle dh, data1_node *n, data1_maptab *map, - data1_node *res, NMEM mem) -{ - data1_node *c; - data1_mapunit *m; - /* - * locate each source element in turn. - */ - for (c = n->child; c; c = c->next) - if (c->which == DATA1N_tag && c->u.tag.element) - { - for (m = map->map; m; m = m->next) - { - if (!data1_matchstr(m->source_element_name, - c->u.tag.element->name)) - { - data1_node *pn = res; - data1_node *cur = pn->last_child; - data1_maptag *mt; - - /* - * process the target path specification. - */ - for (mt = m->target_path; mt; mt = mt->next) - { - if (!cur || mt->new_field || !tagmatch(cur, mt)) - { - cur = data1_mk_node2 (dh, mem, DATA1N_tag, pn); - cur->u.tag.tag = mt->value.string; - } - - if (mt->next) - pn = cur; - else if (!m->no_data) - { - cur->child = - dup_child (dh, c->child, - &cur->last_child, mem, cur); - } - } - } - } - if (map_children(dh, c, map, res, mem) < 0) - return -1; - } - return 0; -} - -/* - * Create a (possibly lossy) copy of the given record based on the - * table. The new copy will refer back to the data of the original record, - * which should not be discarded during the lifetime of the copy. - */ -data1_node *data1_map_record (data1_handle dh, data1_node *n, - data1_maptab *map, NMEM m) -{ - data1_node *res1, *res = data1_mk_node2 (dh, m, DATA1N_root, 0); - - res->which = DATA1N_root; - res->u.root.type = map->target_absyn_name; - if (!(res->u.root.absyn = data1_get_absyn(dh, map->target_absyn_name))) - { - yaz_log(LOG_WARN, "%s: Failed to load target absyn '%s'", - map->name, map->target_absyn_name); - } - if (data1_is_xmlmode(dh)) - { - n = n->child; - if (!n) - return 0; - res1 = data1_mk_tag (dh, m, map->target_absyn_name, 0, res); - } - else - res1 = res; - - if (map_children(dh, n, map, res1, m) < 0) - { - data1_free_tree(dh, res); - return 0; - } - return res; -} - diff --git a/retrieval/d1_marc.c b/retrieval/d1_marc.c deleted file mode 100644 index e410b7c..0000000 --- a/retrieval/d1_marc.c +++ /dev/null @@ -1,367 +0,0 @@ -/* - * Copyright (c) 1995-2002, Index Data. - * See the file LICENSE for details. - * Sebastian Hammer, Adam Dickmeiss - * - * $Id: d1_marc.c,v 1.27 2002-08-28 19:34:50 adam Exp $ - */ - - -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -data1_marctab *data1_read_marctab (data1_handle dh, const char *file) -{ - FILE *f; - NMEM mem = data1_nmem_get (dh); - data1_marctab *res = (data1_marctab *)nmem_malloc(mem, sizeof(*res)); - char line[512], *argv[50]; - int lineno = 0; - int argc; - - if (!(f = data1_path_fopen(dh, file, "r"))) - { - yaz_log(LOG_WARN|LOG_ERRNO, "%s", file); - return 0; - } - - res->name = 0; - res->reference = VAL_NONE; - res->next = 0; - res->length_data_entry = 4; - res->length_starting = 5; - res->length_implementation = 0; - strcpy(res->future_use, "4"); - - strcpy(res->record_status, "n"); - strcpy(res->implementation_codes, " "); - res->indicator_length = 2; - res->identifier_length = 2; - res->force_indicator_length = -1; - res->force_identifier_length = -1; - strcpy(res->user_systems, "z "); - - while ((argc = readconf_line(f, &lineno, line, 512, argv, 50))) - if (!strcmp(*argv, "name")) - { - if (argc != 2) - { - yaz_log(LOG_WARN, "%s:%d:Missing arg for %s", file, lineno, - *argv); - continue; - } - res->name = nmem_strdup(mem, argv[1]); - } - else if (!strcmp(*argv, "reference")) - { - if (argc != 2) - { - yaz_log(LOG_WARN, "%s:%d: Missing arg for %s", file, lineno, - *argv); - continue; - } - if ((res->reference = oid_getvalbyname(argv[1])) == VAL_NONE) - { - yaz_log(LOG_WARN, "%s:%d: Unknown tagset reference '%s'", - file, lineno, argv[1]); - continue; - } - } - else if (!strcmp(*argv, "length-data-entry")) - { - if (argc != 2) - { - yaz_log(LOG_WARN, "%s:%d: Missing arg for %s", file, lineno, - *argv); - continue; - } - res->length_data_entry = atoi(argv[1]); - } - else if (!strcmp(*argv, "length-starting")) - { - if (argc != 2) - { - yaz_log(LOG_WARN, "%s:%d: Missing arg for %s", file, lineno, - *argv); - continue; - } - res->length_starting = atoi(argv[1]); - } - else if (!strcmp(*argv, "length-implementation")) - { - if (argc != 2) - { - yaz_log(LOG_WARN, "%s:%d: Missing arg for %s", file, lineno, - *argv); - continue; - } - res->length_implementation = atoi(argv[1]); - } - else if (!strcmp(*argv, "future-use")) - { - if (argc != 2) - { - yaz_log(LOG_WARN, "%s:%d: Missing arg for %s", file, lineno, - *argv); - continue; - } - strncpy(res->future_use, argv[1], 2); - } - else if (!strcmp(*argv, "force-indicator-length")) - { - if (argc != 2) - { - yaz_log(LOG_WARN, "%s:%d: Missing arg for %s", file, lineno, - *argv); - continue; - } - res->force_indicator_length = atoi(argv[1]); - } - else if (!strcmp(*argv, "force-identifier-length")) - { - if (argc != 2) - { - yaz_log(LOG_WARN, "%s:%d: Missing arg for %s", file, lineno, - *argv); - continue; - } - res->force_identifier_length = atoi(argv[1]); - } - else - yaz_log(LOG_WARN, "%s:%d: Unknown directive '%s'", file, lineno, - *argv); - - fclose(f); - return res; -} - - -/* - * Locate some data under this node. This routine should handle variants - * prettily. - */ -static char *get_data(data1_node *n, int *len) -{ - char *r; - - while (n) - { - if (n->which == DATA1N_data) - { - int i; - *len = n->u.data.len; - - for (i = 0; i<*len; i++) - if (!d1_isspace(n->u.data.data[i])) - break; - while (*len && d1_isspace(n->u.data.data[*len - 1])) - (*len)--; - *len = *len - i; - if (*len > 0) - return n->u.data.data + i; - } - if (n->which == DATA1N_tag) - n = n->child; - else if (n->which == DATA1N_data) - n = n->next; - else - break; - } - r = ""; - *len = strlen(r); - return r; -} - -static void memint (char *p, int val, int len) -{ - char buf[10]; - - if (len == 1) - *p = val + '0'; - else - { - sprintf (buf, "%08d", val); - memcpy (p, buf+8-len, len); - } -} - -static int is_indicator (data1_marctab *p, data1_node *subf) -{ -#if 1 - if (p->indicator_length != 2 || - (subf && subf->which == DATA1N_tag && strlen(subf->u.tag.tag) == 2)) - return 1; -#else - if (subf && subf->which == DATA1N_tag && subf->child->which == DATA1N_tag) - return 1; -#endif - return 0; -} - -static int nodetomarc(data1_handle dh, - data1_marctab *p, data1_node *n, int selected, - char **buf, int *size) -{ - int len = 26; - int dlen; - int base_address = 25; - int entry_p, data_p; - char *op; - data1_node *field, *subf; - - yaz_log (LOG_DEBUG, "nodetomarc"); - - for (field = n->child; field; field = field->next) - { - int is00X = 0; - - if (field->which != DATA1N_tag) - { - yaz_log(LOG_WARN, "Malformed field composition for marc output."); - return -1; - } - if (selected && !field->u.tag.node_selected) - continue; - - subf = field->child; - if (!subf) - continue; - - len += 4 + p->length_data_entry + p->length_starting - + p->length_implementation; - base_address += 3 + p->length_data_entry + p->length_starting - + p->length_implementation; - - if (subf->which == DATA1N_data) - is00X = 1; - if (!data1_is_xmlmode(dh)) - { - if (subf->which == DATA1N_tag && !strcmp(subf->u.tag.tag, "@")) - is00X = 1; - } - - - if (!is00X) - len += p->indicator_length; - /* we'll allow no indicator if length is not 2 */ - if (is_indicator (p, subf)) - subf = subf->child; - - for (; subf; subf = subf->next) - { - if (!is00X) - len += p->identifier_length; - get_data(subf, &dlen); - len += dlen; - } - } - - if (!*buf) - *buf = (char *)xmalloc(*size = len); - else if (*size <= len) - *buf = (char *)xrealloc(*buf, *size = len); - - op = *buf; - memint (op, len, 5); - memcpy (op+5, p->record_status, 1); - memcpy (op+6, p->implementation_codes, 4); - memint (op+10, p->indicator_length, 1); - memint (op+11, p->identifier_length, 1); - memint (op+12, base_address, 5); - memcpy (op+17, p->user_systems, 3); - memint (op+20, p->length_data_entry, 1); - memint (op+21, p->length_starting, 1); - memint (op+22, p->length_implementation, 1); - memcpy (op+23, p->future_use, 1); - - entry_p = 24; - data_p = base_address; - - for (field = n->child; field; field = field->next) - { - int is00X = 0; - - int data_0 = data_p; - char *indicator_data = " "; - if (selected && !field->u.tag.node_selected) - continue; - - subf = field->child; - if (!subf) - continue; - - if (subf->which == DATA1N_data) - is00X = 1; - if (!data1_is_xmlmode(dh)) - { - if (subf->which == DATA1N_tag && !strcmp(subf->u.tag.tag, "@")) - is00X = 1; - } - - if (is_indicator (p, subf)) - { - indicator_data = subf->u.tag.tag; - subf = subf->child; - } - if (!is00X) - { - memcpy (op + data_p, indicator_data, p->indicator_length); - data_p += p->indicator_length; - } - for (; subf; subf = subf->next) - { - char *data; - - if (!is00X) - { - const char *identifier = "a"; - if (subf->which != DATA1N_tag) - yaz_log(LOG_WARN, "Malformed fields for marc output."); - else - identifier = subf->u.tag.tag; - op[data_p] = ISO2709_IDFS; - memcpy (op + data_p+1, identifier, p->identifier_length-1); - data_p += p->identifier_length; - } - data = get_data(subf, &dlen); - memcpy (op + data_p, data, dlen); - data_p += dlen; - } - op[data_p++] = ISO2709_FS; - - memcpy (op + entry_p, field->u.tag.tag, 3); - entry_p += 3; - memint (op + entry_p, data_p - data_0, p->length_data_entry); - entry_p += p->length_data_entry; - memint (op + entry_p, data_0 - base_address, p->length_starting); - entry_p += p->length_starting; - entry_p += p->length_implementation; - } - op[entry_p++] = ISO2709_FS; - assert (entry_p == base_address); - op[data_p++] = ISO2709_RS; - assert (data_p == len); - return len; -} - -char *data1_nodetomarc(data1_handle dh, data1_marctab *p, data1_node *n, - int selected, int *len) -{ - int *size; - char **buf = data1_get_map_buf (dh, &size); - - n = data1_get_root_tag (dh, n); - if (!n) - return 0; - *len = nodetomarc(dh, p, n, selected, buf, size); - return *buf; -} diff --git a/retrieval/d1_prtree.c b/retrieval/d1_prtree.c deleted file mode 100644 index 4354b30..0000000 --- a/retrieval/d1_prtree.c +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Copyright (c) 1995-2002, Index Data. - * See the file LICENSE for details. - * Sebastian Hammer, Adam Dickmeiss - * - * $Id: d1_prtree.c,v 1.11 2002-10-08 20:14:44 adam Exp $ - */ - -#include -#include - -static void pr_string (FILE *out, const char *str, int len) -{ - int i; - for (i = 0; i126) - fprintf (out, "\\x%02x", c & 255); - else - fputc (c, out); - } -} - -static void pr_tree (data1_handle dh, data1_node *n, FILE *out, int level) -{ - fprintf (out, "%*s", level, ""); - switch (n->which) - { - case DATA1N_root: - fprintf (out, "root abstract syntax=%s\n", n->u.root.type); - break; - case DATA1N_tag: - fprintf (out, "tag type=%s sel=%d\n", n->u.tag.tag, - n->u.tag.node_selected); - if (n->u.tag.attributes) - { - data1_xattr *xattr = n->u.tag.attributes; - fprintf (out, "%*s attr", level, ""); - for (; xattr; xattr = xattr->next) - fprintf (out, " %s=%s ", xattr->name, xattr->value); - fprintf (out, "\n"); - } - break; - case DATA1N_data: - case DATA1N_comment: - if (n->which == DATA1N_data) - fprintf (out, "data type="); - else - fprintf (out, "comment type="); - switch (n->u.data.what) - { - case DATA1I_inctxt: - fprintf (out, "inctxt\n"); - break; - case DATA1I_incbin: - fprintf (out, "incbin\n"); - break; - case DATA1I_text: - fprintf (out, "text '"); - pr_string (out, n->u.data.data, n->u.data.len); - fprintf (out, "'\n"); - break; - case DATA1I_num: - fprintf (out, "num '"); - pr_string (out, n->u.data.data, n->u.data.len); - fprintf (out, "'\n"); - break; - case DATA1I_oid: - fprintf (out, "oid '"); - pr_string (out, n->u.data.data, n->u.data.len); - fprintf (out, "'\n"); - break; - case DATA1I_xmltext: - fprintf (out, "xml text '"); - pr_string (out, n->u.data.data, n->u.data.len); - fprintf (out, "'\n"); - break; - default: - fprintf (out, "unknown(%d)\n", n->u.data.what); - break; - } - break; - case DATA1N_preprocess: - fprintf (out, "preprocess target=%s\n", n->u.preprocess.target); - if (n->u.preprocess.attributes) - { - data1_xattr *xattr = n->u.preprocess.attributes; - fprintf (out, "%*s attr", level, ""); - for (; xattr; xattr = xattr->next) - fprintf (out, " %s=%s ", xattr->name, xattr->value); - fprintf (out, "\n"); - } - break; - case DATA1N_variant: - fprintf (out, "variant\n"); -#if 0 - if (n->u.variant.type->name) - fprintf (out, " class=%s type=%d value=%s\n", - n->u.variant.type->name, n->u.variant.type->type, - n->u.variant.value); -#endif - break; - default: - fprintf (out, "unknown(%d)\n", n->which); - } - if (n->child) - pr_tree (dh, n->child, out, level+4); - if (n->next) - pr_tree (dh, n->next, out, level); -} - - -void data1_pr_tree (data1_handle dh, data1_node *n, FILE *out) -{ - pr_tree (dh, n, out, 0); -} diff --git a/retrieval/d1_read.c b/retrieval/d1_read.c deleted file mode 100644 index 281f7ca..0000000 --- a/retrieval/d1_read.c +++ /dev/null @@ -1,1092 +0,0 @@ -/* - * Copyright (c) 1995-2002, Index Data. - * See the file LICENSE for details. - * Sebastian Hammer, Adam Dickmeiss - * - * $Id: d1_read.c,v 1.54 2002-10-08 23:00:09 adam Exp $ - */ - -#include -#include -#include - -#include -#include -#include -#include - -data1_node *data1_get_root_tag (data1_handle dh, data1_node *n) -{ - if (!n) - return 0; - if (data1_is_xmlmode(dh)) - { - n = n->child; - while (n && n->which != DATA1N_tag) - n = n->next; - } - return n; -} - -/* - * get the tag which is the immediate parent of this node (this may mean - * traversing intermediate things like variants and stuff. - */ -data1_node *get_parent_tag (data1_handle dh, data1_node *n) -{ - if (data1_is_xmlmode(dh)) - { - for (; n && n->which != DATA1N_root; n = n->parent) - if (n->which == DATA1N_tag && n->parent && - n->parent->which != DATA1N_root) - return n; - } - else - { - for (; n && n->which != DATA1N_root; n = n->parent) - if (n->which == DATA1N_tag) - return n; - } - return 0; -} - -data1_node *data1_mk_node (data1_handle dh, NMEM m) -{ - return data1_mk_node2 (dh, m, DATA1N_root, 0); -} - -data1_node *data1_mk_node_type (data1_handle dh, NMEM m, int type) -{ - return data1_mk_node2 (dh, m, type, 0); -} - -static void data1_init_node (data1_handle dh, data1_node *r, int type) -{ - r->which = type; - switch(type) - { - case DATA1N_tag: - r->u.tag.tag = 0; - r->u.tag.element = 0; - r->u.tag.no_data_requested = 0; - r->u.tag.node_selected = 0; - r->u.tag.make_variantlist = 0; - r->u.tag.get_bytes = -1; - r->u.tag.attributes = 0; - break; - case DATA1N_root: - r->u.root.type = 0; - r->u.root.absyn = 0; - break; - case DATA1N_data: - r->u.data.data = 0; - r->u.data.len = 0; - r->u.data.what = 0; - r->u.data.formatted_text = 0; - break; - case DATA1N_comment: - r->u.data.data = 0; - r->u.data.len = 0; - r->u.data.what = 0; - r->u.data.formatted_text = 1; - break; - case DATA1N_variant: - r->u.variant.type = 0; - r->u.variant.value = 0; - break; - case DATA1N_preprocess: - r->u.preprocess.target = 0; - r->u.preprocess.attributes = 0; - break; - default: - logf (LOG_WARN, "data_mk_node_type. bad type = %d\n", type); - } -} - -data1_node *data1_append_node (data1_handle dh, NMEM m, int type, - data1_node *parent) -{ - data1_node *r = (data1_node *)nmem_malloc(m, sizeof(*r)); - r->next = r->child = r->last_child = 0; - r->destroy = 0; - - if (!parent) - r->root = r; - else - { - r->root = parent->root; - r->parent = parent; - if (!parent->child) - parent->child = parent->last_child = r; - else - parent->last_child->next = r; - parent->last_child = r; - } - data1_init_node(dh, r, type); - return r; -} - -data1_node *data1_mk_node2 (data1_handle dh, NMEM m, int type, - data1_node *parent) -{ - return data1_append_node (dh, m, type, parent); -} - -data1_node *data1_insert_node (data1_handle dh, NMEM m, int type, - data1_node *parent) -{ - data1_node *r = (data1_node *)nmem_malloc(m, sizeof(*r)); - r->next = r->child = r->last_child = 0; - r->destroy = 0; - - if (!parent) - r->root = r; - else - { - r->root = parent->root; - r->parent = parent; - if (!parent->child) - parent->last_child = r; - else - r->next = parent->child; - parent->child = r; - } - data1_init_node(dh, r, type); - return r; -} - -void data1_free_tree (data1_handle dh, data1_node *t) -{ - data1_node *p = t->child, *pn; - - while (p) - { - pn = p->next; - data1_free_tree (dh, p); - p = pn; - } - if (t->destroy) - (*t->destroy)(t); -} - -data1_node *data1_mk_root (data1_handle dh, NMEM nmem, const char *name) -{ - data1_absyn *absyn = data1_get_absyn (dh, name); - data1_node *res; - if (!absyn) - { - yaz_log(LOG_WARN, "Unable to acquire abstract syntax " "for '%s'", - name); - /* It's now OK for a record not to have an absyn */ - } - res = data1_mk_node2 (dh, nmem, DATA1N_root, 0); - res->u.root.type = data1_insert_string (dh, res, nmem, name); - res->u.root.absyn = absyn; - return res; -} - -void data1_set_root(data1_handle dh, data1_node *res, - NMEM nmem, const char *name) -{ - data1_absyn *absyn = data1_get_absyn (dh, name); - - res->u.root.type = data1_insert_string (dh, res, nmem, name); - res->u.root.absyn = absyn; -} - -data1_node *data1_mk_preprocess (data1_handle dh, NMEM nmem, - const char *target, - const char **attr, data1_node *at) -{ - return data1_mk_preprocess_n (dh, nmem, target, strlen(target), - attr, at); -} - -data1_node *data1_mk_preprocess_n (data1_handle dh, NMEM nmem, - const char *target, size_t len, - const char **attr, data1_node *at) -{ - data1_xattr **p; - data1_node *res = data1_mk_node2 (dh, nmem, DATA1N_preprocess, at); - res->u.preprocess.target = data1_insert_string_n (dh, res, nmem, - target, len); - - p = &res->u.preprocess.attributes; - while (attr && *attr) - { - *p = (data1_xattr*) nmem_malloc (nmem, sizeof(**p)); - (*p)->name = nmem_strdup (nmem, *attr++); - (*p)->value = nmem_strdup (nmem, *attr++); - (*p)->what = DATA1I_text; - - p = &(*p)->next; - } - *p = 0; - return res; -} - -data1_node *data1_mk_tag_n (data1_handle dh, NMEM nmem, - const char *tag, size_t len, const char **attr, - data1_node *at) -{ - data1_node *partag = get_parent_tag(dh, at); - data1_node *res = data1_mk_node2 (dh, nmem, DATA1N_tag, at); - data1_xattr **p; - data1_element *e = 0; - - res->u.tag.tag = data1_insert_string_n (dh, res, nmem, tag, len); - - if (!partag) /* top tag? */ - e = data1_getelementbytagname (dh, at->root->u.root.absyn, - 0 /* index as local */, - res->u.tag.tag); - else - { - /* only set element for known tags */ - e = partag->u.tag.element; - if (e) - e = data1_getelementbytagname (dh, at->root->u.root.absyn, - e, res->u.tag.tag); - } - res->u.tag.element = e; - p = &res->u.tag.attributes; - while (attr && *attr) - { - *p = (data1_xattr*) nmem_malloc (nmem, sizeof(**p)); - (*p)->name = nmem_strdup (nmem, *attr++); - (*p)->value = nmem_strdup (nmem, *attr++); - (*p)->what = DATA1I_text; - p = &(*p)->next; - } - *p = 0; - return res; -} - -void data1_tag_add_attr (data1_handle dh, NMEM nmem, - data1_node *res, const char **attr) -{ - data1_xattr **p; - - if (res->which != DATA1N_tag) - return; - - p = &res->u.tag.attributes; - while (*p) - p = &(*p)->next; - - while (attr && *attr) - { - *p = (data1_xattr*) nmem_malloc (nmem, sizeof(**p)); - (*p)->name = nmem_strdup (nmem, *attr++); - (*p)->value = nmem_strdup (nmem, *attr++); - (*p)->what = DATA1I_text; - p = &(*p)->next; - } - *p = 0; -} - -data1_node *data1_mk_tag (data1_handle dh, NMEM nmem, - const char *tag, const char **attr, data1_node *at) -{ - return data1_mk_tag_n (dh, nmem, tag, strlen(tag), attr, at); -} - -data1_node *data1_search_tag (data1_handle dh, data1_node *n, - const char *tag) -{ - if (*tag == '/') - { - n = data1_get_root_tag (dh, n); - if (n) - n = n->child; - tag++; - } - for (; n; n = n->next) - if (n->which == DATA1N_tag && n->u.tag.tag && - !yaz_matchstr (tag, n->u.tag.tag)) - { - return n; - } - return 0; -} - -data1_node *data1_mk_tag_uni (data1_handle dh, NMEM nmem, - const char *tag, data1_node *at) -{ - data1_node *node = data1_search_tag (dh, at->child, tag); - if (!node) - node = data1_mk_tag (dh, nmem, tag, 0 /* attr */, at); - else - node->child = node->last_child = 0; - return node; -} - -data1_node *data1_mk_text_n (data1_handle dh, NMEM mem, - const char *buf, size_t len, data1_node *parent) -{ - data1_node *res = data1_mk_node2 (dh, mem, DATA1N_data, parent); - res->u.data.what = DATA1I_text; - res->u.data.len = len; - - res->u.data.data = data1_insert_string_n (dh, res, mem, buf, len); - return res; -} - -data1_node *data1_mk_text_nf (data1_handle dh, NMEM mem, - const char *buf, size_t len, data1_node *parent) -{ - data1_node *res = data1_mk_text_n (dh, mem, buf, len, parent); - res->u.data.formatted_text = 1; - return res; -} - -data1_node *data1_mk_text (data1_handle dh, NMEM mem, - const char *buf, data1_node *parent) -{ - return data1_mk_text_n (dh, mem, buf, strlen(buf), parent); -} - -data1_node *data1_mk_comment_n (data1_handle dh, NMEM mem, - const char *buf, size_t len, - data1_node *parent) -{ - data1_node *res = data1_mk_node2 (dh, mem, DATA1N_comment, parent); - res->u.data.what = DATA1I_text; - res->u.data.len = len; - - res->u.data.data = data1_insert_string_n (dh, res, mem, buf, len); - return res; -} - -data1_node *data1_mk_comment (data1_handle dh, NMEM mem, - const char *buf, data1_node *parent) -{ - return data1_mk_comment_n (dh, mem, buf, strlen(buf), parent); -} - -char *data1_insert_string_n (data1_handle dh, data1_node *res, - NMEM m, const char *str, size_t len) -{ - char *b; - if (len >= DATA1_LOCALDATA) - b = (char *) nmem_malloc (m, len+1); - else - b = res->lbuf; - memcpy (b, str, len); - b[len] = 0; - return b; -} - -char *data1_insert_string (data1_handle dh, data1_node *res, - NMEM m, const char *str) -{ - return data1_insert_string_n (dh, res, m, str, strlen(str)); -} - -static data1_node *data1_add_insert_taggeddata(data1_handle dh, - data1_node *at, - const char *tagname, NMEM m, - int local_allowed, - int insert_mode) -{ - data1_node *root = at->root; - data1_node *partag = get_parent_tag (dh, at); - data1_element *e = NULL; - data1_node *datn = 0; - data1_node *tagn = 0; - - if (!partag) - e = data1_getelementbytagname (dh, root->u.root.absyn, 0, tagname); - else - { - e = partag->u.tag.element; - if (e) - e = data1_getelementbytagname (dh, root->u.root.absyn, e, tagname); - } - if (local_allowed || e) - { - if (insert_mode) - tagn = data1_insert_node (dh, m, DATA1N_tag, at); - else - tagn = data1_append_node (dh, m, DATA1N_tag, at); - tagn->u.tag.tag = data1_insert_string (dh, tagn, m, tagname); - tagn->u.tag.element = e; - datn = data1_mk_node2 (dh, m, DATA1N_data, tagn); - } - return datn; -} - -data1_node *data1_mk_tag_data(data1_handle dh, data1_node *at, - const char *tagname, NMEM m) -{ - return data1_add_insert_taggeddata (dh, at, tagname, m, 1, 0); -} - - -/* - * Insert a tagged node into the record root as first child of the node at - * which should be root or tag itself). Returns pointer to the data node, - * which can then be modified. - */ -data1_node *data1_mk_tag_data_wd(data1_handle dh, data1_node *at, - const char *tagname, NMEM m) -{ - return data1_add_insert_taggeddata (dh, at, tagname, m, 0, 1); -} - -data1_node *data1_insert_taggeddata (data1_handle dh, data1_node *root, - data1_node *at, const char *tagname, - NMEM m) -{ - return data1_add_insert_taggeddata (dh, at, tagname, m, 0, 1); -} - -data1_node *data1_add_taggeddata (data1_handle dh, data1_node *root, - data1_node *at, const char *tagname, - NMEM m) -{ - return data1_add_insert_taggeddata (dh, at, tagname, m, 1, 0); -} - -data1_node *data1_mk_tag_data_int (data1_handle dh, data1_node *at, - const char *tag, int num, - NMEM nmem) -{ - data1_node *node_data; - - node_data = data1_mk_tag_data (dh, at, tag, nmem); - if (!node_data) - return 0; - node_data->u.data.what = DATA1I_num; - node_data->u.data.data = node_data->lbuf; - sprintf (node_data->u.data.data, "%d", num); - node_data->u.data.len = strlen (node_data->u.data.data); - return node_data; -} - -data1_node *data1_mk_tag_data_oid (data1_handle dh, data1_node *at, - const char *tag, Odr_oid *oid, - NMEM nmem) -{ - data1_node *node_data; - char str[128], *p = str; - Odr_oid *ii; - - node_data = data1_mk_tag_data (dh, at, tag, nmem); - if (!node_data) - return 0; - - for (ii = oid; *ii >= 0; ii++) - { - if (ii != oid) - *p++ = '.'; - sprintf (p, "%d", *ii); - p += strlen (p); - } - node_data->u.data.what = DATA1I_oid; - node_data->u.data.len = strlen (str); - node_data->u.data.data = data1_insert_string (dh, node_data, nmem, str); - return node_data; -} - - -data1_node *data1_mk_tag_data_text (data1_handle dh, data1_node *at, - const char *tag, const char *str, - NMEM nmem) -{ - data1_node *node_data; - - node_data = data1_mk_tag_data (dh, at, tag, nmem); - if (!node_data) - return 0; - node_data->u.data.what = DATA1I_text; - node_data->u.data.len = strlen (str); - node_data->u.data.data = data1_insert_string (dh, node_data, nmem, str); - return node_data; -} - - -data1_node *data1_mk_tag_data_text_uni (data1_handle dh, data1_node *at, - const char *tag, const char *str, - NMEM nmem) -{ - data1_node *node = data1_search_tag (dh, at->child, tag); - if (!node) - return data1_mk_tag_data_text (dh, at, tag, str, nmem); - else - { - data1_node *node_data = node->child; - node_data->u.data.what = DATA1I_text; - node_data->u.data.len = strlen (str); - node_data->u.data.data = data1_insert_string (dh, node_data, - nmem, str); - node_data->child = node_data->last_child = 0; - return node_data; - } -} - -static int ampr (int (*get_byte)(void *fh), void *fh, int *amp) -{ -#if 1 - int c = (*get_byte)(fh); - *amp = 0; - return c; -#else - int c = (*get_byte)(fh); - *amp = 0; - if (c == '&') - { - char ent[20]; - int i = 0; - - while (1) - { - c = (*get_byte)(fh); - if (c == ';') - { - ent[i] = 0; - - c = ' '; - if (!strcmp (ent, "quot")) - c = '"'; - if (!strcmp (ent, "apos")) - c = '\''; - if (!strcmp (ent, "gt")) - c = '>'; - if (!strcmp (ent, "lt")) - c = '<'; - if (!strcmp (ent, "amp")) - c = '&'; - *amp = 1; - break; - } - else if (c == 0 || d1_isspace(c)) - break; - if (i < 19) - ent[i++] = c; - } - } - return c; -#endif -} - -data1_xattr *data1_read_xattr (data1_handle dh, NMEM m, - int (*get_byte)(void *fh), void *fh, - WRBUF wrbuf, int *ch, int *amp) -{ - data1_xattr *p_first = 0; - data1_xattr **pp = &p_first; - int c = *ch; - for (;;) - { - data1_xattr *p; - int len; - while (*amp || (c && d1_isspace(c))) - c = ampr (get_byte, fh, amp); - if (*amp == 0 && (c == 0 || c == '>' || c == '/')) - break; - *pp = p = (data1_xattr *) nmem_malloc (m, sizeof(*p)); - p->next = 0; - pp = &p->next; - p->value = 0; - p->what = DATA1I_xmltext; - - wrbuf_rewind(wrbuf); - while (c && c != '=' && c != '>' && c != '/' && !d1_isspace(c)) - { - wrbuf_putc (wrbuf, c); - c = ampr (get_byte, fh, amp); - } - wrbuf_putc (wrbuf, '\0'); - len = wrbuf_len(wrbuf); - p->name = (char*) nmem_malloc (m, len); - strcpy (p->name, wrbuf_buf(wrbuf)); - if (c == '=') - { - c = ampr (get_byte, fh, amp); - if (*amp == 0 && c == '"') - { - c = ampr (get_byte, fh, amp); - wrbuf_rewind(wrbuf); - while (*amp || (c && c != '"')) - { - wrbuf_putc (wrbuf, c); - c = ampr (get_byte, fh, amp); - } - if (c) - c = ampr (get_byte, fh, amp); - } - else if (*amp == 0 && c == '\'') - { - c = ampr (get_byte, fh, amp); - wrbuf_rewind(wrbuf); - while (*amp || (c && c != '\'')) - { - wrbuf_putc (wrbuf, c); - c = ampr (get_byte, fh, amp); - } - if (c) - c = ampr (get_byte, fh, amp); - } - else - { - wrbuf_rewind(wrbuf); - while (*amp || (c && c != '>' && c != '/')) - { - wrbuf_putc (wrbuf, c); - c = ampr (get_byte, fh, amp); - } - } - wrbuf_putc (wrbuf, '\0'); - len = wrbuf_len(wrbuf); - p->value = (char*) nmem_malloc (m, len); - strcpy (p->value, wrbuf_buf(wrbuf)); - } - } - *ch = c; - return p_first; -} - -/* - * Ugh. Sometimes functions just grow and grow on you. This one reads a - * 'node' and its children. - */ -data1_node *data1_read_nodex (data1_handle dh, NMEM m, - int (*get_byte)(void *fh), void *fh, WRBUF wrbuf) -{ - data1_node *d1_stack[256]; - data1_node *res; - int c, amp; - int level = 0; - int line = 1; - - d1_stack[level] = 0; - c = ampr (get_byte, fh, &); - while (c != '\0') - { - data1_node *parent = level ? d1_stack[level-1] : 0; - - if (amp == 0 && c == '<') /* beginning of tag */ - { - data1_xattr *xattr; - - char tag[64]; - char args[256]; - int null_tag = 0; - int end_tag = 0; - size_t i = 0; - - c = ampr (get_byte, fh, &); - if (amp == 0 && c == '/') - { - end_tag = 1; - c = ampr (get_byte, fh, &); - } - else if (amp == 0 && c == '!') - { - int c0, amp0; - - wrbuf_rewind(wrbuf); - - c0 = ampr (get_byte, fh, &0); - if (amp0 == 0 && c0 == '\0') - break; - c = ampr (get_byte, fh, &); - - if (amp0 == 0 && c0 == '-' && amp == 0 && c == '-') - { - /* COMMENT: */ - int no_dash = 0; - - c = ampr (get_byte, fh, &); - while (amp || c) - { - if (amp == 0 && c == '-') - no_dash++; - else if (amp == 0 && c == '>' && no_dash >= 2) - { - if (level > 0) - d1_stack[level] = - data1_mk_comment_n ( - dh, m, - wrbuf_buf(wrbuf), wrbuf_len(wrbuf)-2, - d1_stack[level-1]); - c = ampr (get_byte, fh, &); /* skip > */ - break; - } - else - no_dash = 0; - wrbuf_putc (wrbuf, c); - c = ampr (get_byte, fh, &); - } - continue; - } - else - { /* DIRECTIVE: */ - - int blevel = 0; - while (amp || c) - { - if (amp == 0 && c == '>' && blevel == 0) - { - c = ampr (get_byte, fh, &); - break; - } - if (amp == 0 && c == '[') - blevel++; - if (amp == 0 && c == ']' && blevel > 0) - blevel--; - c = ampr (get_byte, fh, &); - } - continue; - } - } - while (amp || (c && c != '>' && c != '/' && !d1_isspace(c))) - { - if (i < (sizeof(tag)-1)) - tag[i++] = c; - c = ampr (get_byte, fh, &); - } - tag[i] = '\0'; - xattr = data1_read_xattr (dh, m, get_byte, fh, wrbuf, &c, &); - args[0] = '\0'; - if (amp == 0 && c == '/') - { /* or */ - null_tag = 1; - c = ampr (get_byte, fh, &); - } - if (amp || c != '>') - { - yaz_log(LOG_WARN, "d1: %d: Malformed tag", line); - return 0; - } - else - c = ampr (get_byte, fh, &); - - /* End tag? */ - if (end_tag) - { - if (*tag == '\0') - --level; /* */ - else - { /* */ - int i = level; - while (i > 0) - { - parent = d1_stack[--i]; - if ((parent->which == DATA1N_root && - !strcmp(tag, parent->u.root.type)) || - (parent->which == DATA1N_tag && - !strcmp(tag, parent->u.tag.tag))) - { - level = i; - break; - } - } - if (i != level) - { - yaz_log (LOG_WARN, "%d: no begin tag for %s", - line, tag); - break; - } - } - if (data1_is_xmlmode(dh)) - { - if (level <= 1) - return d1_stack[0]; - } - else - { - if (level <= 0) - return d1_stack[0]; - } - continue; - } - else if (!strcmp(tag, "var")) - { - char tclass[DATA1_MAX_SYMBOL], type[DATA1_MAX_SYMBOL]; - data1_vartype *tp; - int val_offset; - - if (sscanf(args, "%s %s %n", tclass, type, &val_offset) != 2) - { - yaz_log(LOG_WARN, "Malformed variant triple at '%s'", tag); - continue; - } - if (!(tp = - data1_getvartypebyct(dh, - parent->root->u.root.absyn->varset, - tclass, type))) - continue; - /* - * If we're the first variant in this group, create a parent - * variant, and insert it before the current variant. - */ - if (parent->which != DATA1N_variant) - { - res = data1_mk_node2 (dh, m, DATA1N_variant, parent); - } - else - { - /* - * now determine if one of our ancestor triples is of - * same type. If so, we break here. - */ - int i; - for (i = level-1; d1_stack[i]->which==DATA1N_variant; --i) - if (d1_stack[i]->u.variant.type == tp) - { - level = i; - break; - } - res = data1_mk_node2 (dh, m, DATA1N_variant, parent); - res->u.variant.type = tp; - res->u.variant.value = - data1_insert_string (dh, res, m, args + val_offset); - } - } - else - { - - /* tag .. acquire our element in the abstract syntax */ - if (level == 0) - { - parent = data1_mk_root (dh, m, tag); - res = d1_stack[level] = parent; - - if (data1_is_xmlmode(dh)) - { - level++; - res = data1_mk_tag (dh, m, tag, 0 /* attr */, parent); - res->u.tag.attributes = xattr; - } - } - else - { - res = data1_mk_tag (dh, m, tag, 0 /* attr */, parent); - res->u.tag.attributes = xattr; - } - } - d1_stack[level] = res; - d1_stack[level+1] = 0; - if (level < 250 && !null_tag) - ++level; - } - else /* != '<'... this is a body of text */ - { - int len; - - if (level == 0) - { - c = ampr (get_byte, fh, &); - continue; - } - res = data1_mk_node2 (dh, m, DATA1N_data, parent); - res->u.data.what = DATA1I_xmltext; - res->u.data.formatted_text = 0; - d1_stack[level] = res; - - wrbuf_rewind(wrbuf); - - while (amp || (c && c != '<')) - { - wrbuf_putc (wrbuf, c); - c = ampr (get_byte, fh, &); - } - len = wrbuf_len(wrbuf); - - /* use local buffer of nmem if too large */ - if (len >= DATA1_LOCALDATA) - res->u.data.data = (char*) nmem_malloc (m, len); - else - res->u.data.data = res->lbuf; - - if (len) - memcpy (res->u.data.data, wrbuf_buf(wrbuf), len); - else - res->u.data.data = 0; - res->u.data.len = len; - } - } - return 0; -} - -int getc_mem (void *fh) -{ - const char **p = (const char **) fh; - if (**p) - return *(*p)++; - return 0; -} - -data1_node *data1_read_node (data1_handle dh, const char **buf, NMEM m) -{ - WRBUF wrbuf = wrbuf_alloc(); - data1_node *node; - - node = data1_read_nodex(dh, m, getc_mem, (void *) (buf), wrbuf); - wrbuf_free (wrbuf, 1); - return node; -} - -/* - * Read a record in the native syntax. - */ -data1_node *data1_read_record(data1_handle dh, - int (*rf)(void *, char *, size_t), void *fh, - NMEM m) -{ - int *size; - char **buf = data1_get_read_buf (dh, &size); - const char *bp; - int rd = 0, res; - - if (!*buf) - *buf = (char *)xmalloc(*size = 4096); - - for (;;) - { - if (rd + 2048 >= *size && !(*buf =(char *)xrealloc(*buf, *size *= 2))) - abort(); - if ((res = (*rf)(fh, *buf + rd, 2048)) <= 0) - { - if (!res) - { - bp = *buf; - (*buf)[rd] = '\0'; - return data1_read_node(dh, &bp, m); - } - else - return 0; - } - rd += res; - } -} - -data1_node *data1_read_sgml (data1_handle dh, NMEM m, const char *buf) -{ - const char *bp = buf; - return data1_read_node (dh, &bp, m); -} - - -static int conv_item (NMEM m, yaz_iconv_t t, - WRBUF wrbuf, char *inbuf, size_t inlen) -{ - wrbuf_rewind (wrbuf); - if (wrbuf->size < 10) - wrbuf_grow (wrbuf, 10); - for (;;) - { - char *outbuf = wrbuf->buf + wrbuf->pos; - size_t outlen = wrbuf->size - wrbuf->pos; - if (yaz_iconv (t, &inbuf, &inlen, &outbuf, &outlen) == - (size_t)(-1) && yaz_iconv_error(t) != YAZ_ICONV_E2BIG) - { - /* bad data. stop and skip conversion entirely */ - return -1; - } - else if (inlen == 0) - { /* finished converting */ - wrbuf->pos = wrbuf->size - outlen; - break; - } - else - { - /* buffer too small: make sure we expand buffer */ - wrbuf->pos = wrbuf->size - outlen; - wrbuf_grow(wrbuf, 20); - } - } - return 0; -} - -static void data1_iconv_s (data1_handle dh, NMEM m, data1_node *n, - yaz_iconv_t t, WRBUF wrbuf, const char *tocode) -{ - for (; n; n = n->next) - { - switch (n->which) - { - case DATA1N_data: - case DATA1N_comment: - if (conv_item (m, t, wrbuf, n->u.data.data, n->u.data.len) == 0) - { - n->u.data.data = - data1_insert_string_n (dh, n, m, wrbuf->buf, - wrbuf->pos); - n->u.data.len = wrbuf->pos; - } - break; - case DATA1N_tag: - if (conv_item (m, t, wrbuf, n->u.tag.tag, strlen(n->u.tag.tag)) - == 0) - { - n->u.tag.tag = - data1_insert_string_n (dh, n, m, - wrbuf->buf, wrbuf->pos); - } - if (n->u.tag.attributes) - { - data1_xattr *p; - for (p = n->u.tag.attributes; p; p = p->next) - { - if (p->value && - conv_item(m, t, wrbuf, p->value, strlen(p->value)) - == 0) - { - wrbuf_puts (wrbuf, ""); - p->value = nmem_strdup (m, wrbuf->buf); - } - } - } - break; - case DATA1N_preprocess: - if (strcmp(n->u.preprocess.target, "xml") == 0) - { - data1_xattr *p = n->u.preprocess.attributes; - for (; p; p = p->next) - if (strcmp (p->name, "encoding") == 0) - p->value = nmem_strdup (m, tocode); - } - break; - } - data1_iconv_s (dh, m, n->child, t, wrbuf, tocode); - } -} - -const char *data1_get_encoding (data1_handle dh, data1_node *n) -{ - /* see if we have an xml header that specifies encoding */ - if (n && n->child && n->child->which == DATA1N_preprocess && - strcmp (n->child->u.preprocess.target, "xml") == 0) - { - data1_xattr *xp = n->child->u.preprocess.attributes; - for (; xp; xp = xp->next) - if (!strcmp (xp->name, "encoding") == 0) - return xp->value; - } - /* no encoding in header, so see if "encoding" was specified for abs */ - if (n && n->which == DATA1N_root && - n->u.root.absyn && n->u.root.absyn->encoding) - return n->u.root.absyn->encoding; - /* none of above, return a hard coded default */ - return "ISO-8859-1"; -} - -int data1_iconv (data1_handle dh, NMEM m, data1_node *n, - const char *tocode, - const char *fromcode) -{ - if (strcmp (tocode, fromcode)) - { - WRBUF wrbuf = wrbuf_alloc(); - yaz_iconv_t t = yaz_iconv_open (tocode, fromcode); - if (!t) - return -1; - data1_iconv_s (dh, m, n, t, wrbuf, tocode); - yaz_iconv_close (t); - wrbuf_free (wrbuf, 1); - } - return 0; -} diff --git a/retrieval/d1_soif.c b/retrieval/d1_soif.c deleted file mode 100644 index 9737a32..0000000 --- a/retrieval/d1_soif.c +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright (c) 1995-1999, Index Data. - * See the file LICENSE for details. - * Sebastian Hammer, Adam Dickmeiss - * - * $Log: d1_soif.c,v $ - * Revision 1.4 1999-11-30 13:47:12 adam - * Improved installation. Moved header files to include/yaz. - * - * Revision 1.3 1997/09/17 12:10:37 adam - * YAZ version 1.4. - * - * Revision 1.2 1997/04/30 08:52:11 quinn - * Null - * - * Revision 1.1 1996/10/08 10:43:20 quinn - * Added SOIF syntax. - * - * - */ - -#include -#include - -/* - * This module generates SOIF (Simple Object Interchange Format) records - * from d1-nodes. nested elements are flattened out, depth first, by - * concatenating the tag names at each level. - */ - -static int nodetoelement(data1_node *n, int select, char *prefix, WRBUF b) -{ - data1_node *c; - char tmp[1024]; - - for (c = n->child; c; c = c->next) - { - char *tag; - - if (c->which == DATA1N_tag) - { - if (select && !c->u.tag.node_selected) - continue; - if (c->u.tag.element && c->u.tag.element->tag) - tag = c->u.tag.element->tag->names->name; /* first name */ - else - tag = c->u.tag.tag; /* local string tag */ - - if (*prefix) - sprintf(tmp, "%s-%s", prefix, tag); - else - strcpy(tmp, tag); - - if (nodetoelement(c, select, tmp, b) < 0) - return 0; - } - else if (c->which == DATA1N_data) - { - char *p = c->u.data.data; - int l = c->u.data.len; - - wrbuf_write(b, prefix, strlen(prefix)); - - sprintf(tmp, "{%d}:\t", l); - wrbuf_write(b, tmp, strlen(tmp)); - wrbuf_write(b, p, l); - wrbuf_putc(b, '\n'); - } - } - return 0; -} - -char *data1_nodetosoif (data1_handle dh, data1_node *n, int select, int *len) -{ - WRBUF b = data1_get_wrbuf (dh); - char buf[128]; - - wrbuf_rewind(b); - - if (n->which != DATA1N_root) - return 0; - sprintf(buf, "@%s{\n", n->u.root.type); - wrbuf_write(b, buf, strlen(buf)); - if (nodetoelement(n, select, "", b)) - return 0; - wrbuf_write(b, "}\n", 2); - *len = wrbuf_len(b); - return wrbuf_buf(b); -} diff --git a/retrieval/d1_sumout.c b/retrieval/d1_sumout.c deleted file mode 100644 index 4c477d6..0000000 --- a/retrieval/d1_sumout.c +++ /dev/null @@ -1,118 +0,0 @@ -/* - * Copyright (c) 1995-1999, Index Data. - * See the file LICENSE for details. - * Sebastian Hammer, Adam Dickmeiss - * - * $Log: d1_sumout.c,v $ - * Revision 1.5 1999-11-30 13:47:12 adam - * Improved installation. Moved header files to include/yaz. - * - * Revision 1.4 1999/08/27 09:40:32 adam - * Renamed logf function to yaz_log. Removed VC++ project files. - * - * Revision 1.3 1998/02/11 11:53:35 adam - * Changed code so that it compiles as C++. - * - * Revision 1.2 1997/09/17 12:10:38 adam - * YAZ version 1.4. - * - * Revision 1.1 1996/06/10 08:56:03 quinn - * Work on Summary. - * - * - */ - -#include -#include -#include - -#include -#include -#include - -static int *f_integer(data1_node *c, ODR o) -{ - int *r; - char intbuf[64]; - - if (!c->child || c->child->which != DATA1N_data || - c->child->u.data.len > 63) - return 0; - r = (int *)odr_malloc(o, sizeof(*r)); - sprintf(intbuf, "%.*s", 63, c->child->u.data.data); - *r = atoi(intbuf); - return r; -} - -static char *f_string(data1_node *c, ODR o) -{ - char *r; - - if (!c->child || c->child->which != DATA1N_data) - return 0; - r = (char *)odr_malloc(o, c->child->u.data.len+1); - memcpy(r, c->child->u.data.data, c->child->u.data.len); - r[c->child->u.data.len] = '\0'; - return r; -} - -Z_BriefBib *data1_nodetosummary (data1_handle dh, data1_node *n, - int select, ODR o) -{ - Z_BriefBib *res = (Z_BriefBib *)odr_malloc(o, sizeof(*res)); - data1_node *c; - - assert(n->which == DATA1N_root); - if (strcmp(n->u.root.type, "summary")) - { - yaz_log(LOG_WARN, "Attempt to convert a non-summary record"); - return 0; - } - - res->title = "[UNKNOWN]"; - res->author = 0; - res->callNumber = 0; - res->recordType = 0; - res->bibliographicLevel = 0; - res->num_format = 0; - res->format = 0; - res->publicationPlace = 0; - res->publicationDate = 0; - res->targetSystemKey = 0; - res->satisfyingElement = 0; - res->rank = 0; - res->documentId = 0; - res->abstract = 0; - res->otherInfo = 0; - - for (c = n->child; c; c = c->next) - { - if (c->which != DATA1N_tag || !c->u.tag.element) - { - yaz_log(LOG_WARN, "Malformed element in Summary record"); - return 0; - } - if (select && !c->u.tag.node_selected) - continue; - switch (c->u.tag.element->tag->value.numeric) - { - case 0: res->title = f_string(c, o); break; - case 1: res->author = f_string(c, o); break; - case 2: res->callNumber = f_string(c, o); break; - case 3: res->recordType = f_string(c, o); break; - case 4: res->bibliographicLevel = f_string(c, o); break; - case 5: abort(); /* TODO */ - case 10: res->publicationPlace = f_string(c, o); break; - case 11: res->publicationDate = f_string(c, o); break; - case 12: res->targetSystemKey = f_string(c, o); break; - case 13: res->satisfyingElement = f_string(c, o); break; - case 14: res->rank = f_integer(c, o); break; - case 15: res->documentId = f_string(c, o); break; - case 16: res->abstract = f_string(c, o); break; - case 17: abort(); /* TODO */ - default: - yaz_log(LOG_WARN, "Unknown element in Summary record."); - } - } - return res; -} diff --git a/retrieval/d1_sutrs.c b/retrieval/d1_sutrs.c deleted file mode 100644 index ade87d0..0000000 --- a/retrieval/d1_sutrs.c +++ /dev/null @@ -1,136 +0,0 @@ -/* - * Copyright (c) 1995-2002, Index Data. - * See the file LICENSE for details. - * Sebastian Hammer, Adam Dickmeiss - * - * $Id: d1_sutrs.c,v 1.8 2002-10-08 22:18:23 adam Exp $ - * - */ - -#include - -#define NTOBUF_INDENT 2 -#define NTOBUF_MARGIN 75 - -static int wordlen(char *b, int i) -{ - int l = 0; - - while (i && !d1_isspace(*b)) - l++, b++, i--; - return l; -} - -static int nodetobuf(data1_node *n, int select, WRBUF b, int indent, int col) -{ - data1_node *c; - char line[1024]; - - for (c = n->child; c; c = c->next) - { - char *tag; - - if (c->which == DATA1N_tag) - { - if (select && !c->u.tag.node_selected) - continue; - if (c->u.tag.element && c->u.tag.element->tag) - tag = c->u.tag.element->tag->names->name; /* first name */ - else - tag = c->u.tag.tag; /* local string tag */ - if (data1_matchstr(tag, "wellknown")) /* skip wellknown */ - { - if (col) - wrbuf_putc(b, '\n'); - sprintf(line, "%*s%s:", indent * NTOBUF_INDENT, "", tag); - wrbuf_write(b, line, strlen(line)); - col = strlen(line); - } - if (nodetobuf(c, select, b, indent+1, col) < 0) - return 0; - } - else if (c->which == DATA1N_data) - { - char *p = c->u.data.data; - int l = c->u.data.len; - int first = 0; - - if ((c->u.data.what == DATA1I_text || - c->u.data.what == DATA1I_xmltext) && c->u.data.formatted_text) - { - wrbuf_putc(b, '\n'); - wrbuf_write(b, c->u.data.data, c->u.data.len); - sprintf(line, "%*s", indent * NTOBUF_INDENT, ""); - wrbuf_write(b, line, strlen(line)); - col = indent * NTOBUF_INDENT; - } - else if (c->u.data.what == DATA1I_text || - c->u.data.what == DATA1I_xmltext) - { - while (l) - { - int wlen; - - while (l && d1_isspace(*p)) - p++, l--; - if (!l) - break; - /* break if we'll cross margin and word is not too long */ - if (col + (wlen = wordlen(p, l)) > NTOBUF_MARGIN && wlen < - NTOBUF_MARGIN - indent * NTOBUF_INDENT) - { - sprintf(line, "\n%*s", indent * NTOBUF_INDENT, ""); - wrbuf_write(b, line, strlen(line)); - col = indent * NTOBUF_INDENT; - first = 1; - } - if (!first) - { - wrbuf_putc(b, ' '); - col++; - } - while (l && !d1_isspace(*p)) - { - if (col > NTOBUF_MARGIN) - { - wrbuf_putc(b, '='); - wrbuf_putc(b, '\n'); - sprintf(line, "%*s", indent * NTOBUF_INDENT, ""); - wrbuf_write(b, line, strlen(line)); - col = indent * NTOBUF_INDENT; - } - wrbuf_putc(b, *p); - p++; - l--; - col++; - } - first = 0; - } - } - else if (c->u.data.what == DATA1I_num) - { - wrbuf_putc(b, ' '); - wrbuf_write(b, c->u.data.data, c->u.data.len); - } - } - } - return 0; -} - -/* - * Return area containing SUTRS-formatted data. Ownership of this data - * remains in this module, and the buffer is reused on next call. This may - * need changing. - */ - -char *data1_nodetobuf (data1_handle dh, data1_node *n, int select, int *len) -{ - WRBUF b = data1_get_wrbuf (dh); - - wrbuf_rewind(b); - if (nodetobuf(n, select, b, 0, 0)) - return 0; - wrbuf_putc(b, '\n'); - *len = wrbuf_len(b); - return wrbuf_buf(b); -} diff --git a/retrieval/d1_tagset.c b/retrieval/d1_tagset.c deleted file mode 100644 index 1abd9fe..0000000 --- a/retrieval/d1_tagset.c +++ /dev/null @@ -1,303 +0,0 @@ -/* - * Copyright (c) 1995-1999, Index Data. - * See the file LICENSE for details. - * Sebastian Hammer, Adam Dickmeiss - * - * $Log: d1_tagset.c,v $ - * Revision 1.15 2002-04-04 20:49:46 adam - * New functions yaz_is_abspath, yaz_path_fopen_base - * - * Revision 1.14 1999/11/30 13:47:12 adam - * Improved installation. Moved header files to include/yaz. - * - * Revision 1.13 1999/10/21 12:06:29 adam - * Retrieval module no longer uses ctype.h - functions. - * - * Revision 1.12 1999/08/27 09:40:32 adam - * Renamed logf function to yaz_log. Removed VC++ project files. - * - * Revision 1.11 1998/10/19 14:16:36 adam - * Fixed data1_gettagbyname. Bug introduced by previous revision. - * - * Revision 1.10 1998/10/15 08:29:17 adam - * Tag set type may be specified in reference to it using "tagset" - * directive in .abs-files and "include" directive in .tag-files. - * - * Revision 1.9 1998/10/13 16:09:53 adam - * Added support for arbitrary OID's for tagsets, schemas and attribute sets. - * Added support for multiple attribute set references and tagset references - * from an abstract syntax file. - * Fixed many bad logs-calls in routines that read the various - * specifications regarding data1 (*.abs,*.att,...) and made the messages - * consistent whenever possible. - * Added extra 'lineno' argument to function readconf_line. - * - * Revision 1.8 1998/05/18 13:07:07 adam - * Changed the way attribute sets are handled by the retriaval module. - * Extended Explain conversion / schema. - * Modified server and client to work with ASN.1 compiled protocol handlers. - * - * Revision 1.7 1998/02/11 11:53:35 adam - * Changed code so that it compiles as C++. - * - * Revision 1.6 1997/09/17 12:10:38 adam - * YAZ version 1.4. - * - * Revision 1.5 1997/09/05 09:50:57 adam - * Removed global data1_tabpath - uses data1_get_tabpath() instead. - * - * Revision 1.4 1995/11/13 09:27:38 quinn - * Fiddling with the variant stuff. - * - * Revision 1.3 1995/11/01 16:34:58 quinn - * Making data1 look for tables in data1_tabpath - * - * Revision 1.2 1995/11/01 13:54:49 quinn - * Minor adjustments - * - * Revision 1.1 1995/11/01 11:56:09 quinn - * Added Retrieval (data management) functions en masse. - * - * - */ - -#include -#include -#include - -#include -#include - -/* - * We'll probably want to add some sort of hashed index to these lookup- - * functions eventually. - */ - -data1_datatype data1_maptype (data1_handle dh, char *t) -{ - static struct - { - char *tname; - data1_datatype type; - } types[] = - { - {"structured", DATA1K_structured}, - {"string", DATA1K_string}, - {"numeric", DATA1K_numeric}, - {"oid", DATA1K_oid}, - {"bool", DATA1K_bool}, - {"generalizedtime", DATA1K_generalizedtime}, - {"intunit", DATA1K_intunit}, - {"int", DATA1K_int}, - {"octetstring", DATA1K_octetstring}, - {"null", DATA1K_null}, - {NULL, (data1_datatype) -1} - }; - int i; - - for (i = 0; types[i].tname; i++) - if (!data1_matchstr(types[i].tname, t)) - return types[i].type; - return DATA1K_unknown; -} - -data1_tag *data1_gettagbynum (data1_handle dh, data1_tagset *s, - int type, int value) -{ - data1_tag *r; - - for (; s; s = s->next) - { - /* scan local set */ - if (type == s->type) - for (r = s->tags; r; r = r->next) - if (r->which == DATA1T_numeric && r->value.numeric == value) - return r; - /* scan included sets */ - if (s->children && - (r = data1_gettagbynum (dh, s->children, type, value))) - return r; - } - return 0; -} - -data1_tag *data1_gettagbyname (data1_handle dh, data1_tagset *s, - const char *name) -{ - data1_tag *r; - - for (; s; s = s->next) - { - /* scan local set */ - for (r = s->tags; r; r = r->next) - { - data1_name *np; - - for (np = r->names; np; np = np->next) - if (!data1_matchstr(np->name, name)) - return r; - } - /* scan included sets */ - if (s->children && (r = data1_gettagbyname (dh, s->children, name))) - return r; - } - return 0; -} - -data1_tagset *data1_empty_tagset (data1_handle dh) -{ - data1_tagset *res = - (data1_tagset *) nmem_malloc(data1_nmem_get (dh), sizeof(*res)); - res->name = 0; - res->reference = VAL_NONE; - res->tags = 0; - res->type = 0; - res->children = 0; - res->next = 0; - return res; -} - -data1_tagset *data1_read_tagset (data1_handle dh, const char *file, int type) -{ - NMEM mem = data1_nmem_get (dh); - data1_tagset *res = 0; - data1_tagset **childp; - data1_tag **tagp; - FILE *f; - int lineno = 0; - int argc; - char *argv[50], line[512]; - - if (!(f = data1_path_fopen(dh, file, "r"))) - { - yaz_log(LOG_WARN|LOG_ERRNO, "%s", file); - return 0; - } - res = data1_empty_tagset (dh); - res->type = type; - childp = &res->children; - tagp = &res->tags; - - while ((argc = readconf_line(f, &lineno, line, 512, argv, 50))) - { - char *cmd = *argv; - if (!strcmp(cmd, "tag")) - { - int value; - char *names, *type, *nm; - data1_tag *rr; - data1_name **npp; - - if (argc != 4) - { - yaz_log(LOG_WARN, "%s:%d: Bad # args to tag", file, lineno); - continue; - } - value = atoi(argv[1]); - names = argv[2]; - type = argv[3]; - - rr = *tagp = (data1_tag *)nmem_malloc(mem, sizeof(*rr)); - rr->tagset = res; - rr->next = 0; - rr->which = DATA1T_numeric; - rr->value.numeric = value; - /* - * how to deal with local numeric tags? - */ - - if (!(rr->kind = data1_maptype(dh, type))) - { - yaz_log(LOG_WARN, "%s:%d: Unknown datatype %s", - file, lineno, type); - fclose(f); - return 0; - } - - /* read namelist */ - nm = names; - npp = &rr->names; - do - { - char *e; - - *npp = (data1_name *)nmem_malloc(mem, sizeof(**npp)); - if ((e = strchr(nm, '/'))) - *(e++) = '\0'; - (*npp)->name = nmem_strdup(mem, nm); - (*npp)->next = 0; - npp = &(*npp)->next; - nm = e; - } - while (nm); - tagp = &rr->next; - } - else if (!strcmp(cmd, "name")) - { - if (argc != 2) - { - yaz_log(LOG_WARN, "%s:%d: Bad # args to name", file, lineno); - continue; - } - res->name = nmem_strdup(mem, argv[1]); - } - else if (!strcmp(cmd, "reference")) - { - char *name; - - if (argc != 2) - { - yaz_log(LOG_WARN, "%s:%d: Bad # args to reference", - file, lineno); - continue; - } - name = argv[1]; - if ((res->reference = oid_getvalbyname(name)) == VAL_NONE) - { - yaz_log(LOG_WARN, "%s:%d: Unknown tagset ref '%s'", - file, lineno, name); - continue; - } - } - else if (!strcmp(cmd, "type")) - { - if (argc != 2) - { - yaz_log (LOG_WARN, "%s:%d: Bad # args to type", file, lineno); - continue; - } - if (!res->type) - res->type = atoi(argv[1]); - } - else if (!strcmp(cmd, "include")) - { - char *name; - int type = 0; - - if (argc < 2) - { - yaz_log(LOG_WARN, "%s:%d: Bad # args to include", - file, lineno); - continue; - } - name = argv[1]; - if (argc == 3) - type = atoi(argv[2]); - *childp = data1_read_tagset (dh, name, type); - if (!(*childp)) - { - yaz_log(LOG_WARN, "%s:%d: Inclusion failed for tagset %s", - file, lineno, name); - continue; - } - childp = &(*childp)->next; - } - else - { - yaz_log(LOG_WARN, "%s:%d: Unknown directive '%s'", - file, lineno, cmd); - } - } - fclose(f); - return res; -} diff --git a/retrieval/d1_varset.c b/retrieval/d1_varset.c deleted file mode 100644 index dbd1321..0000000 --- a/retrieval/d1_varset.c +++ /dev/null @@ -1,178 +0,0 @@ -/* - * Copyright (c) 1995-1999, Index Data. - * See the file LICENSE for details. - * Sebastian Hammer, Adam Dickmeiss - * - * $Log: d1_varset.c,v $ - * Revision 1.11 2002-04-04 20:49:46 adam - * New functions yaz_is_abspath, yaz_path_fopen_base - * - * Revision 1.10 1999/11/30 13:47:12 adam - * Improved installation. Moved header files to include/yaz. - * - * Revision 1.9 1999/08/27 09:40:32 adam - * Renamed logf function to yaz_log. Removed VC++ project files. - * - * Revision 1.8 1998/10/13 16:09:54 adam - * Added support for arbitrary OID's for tagsets, schemas and attribute sets. - * Added support for multiple attribute set references and tagset references - * from an abstract syntax file. - * Fixed many bad logs-calls in routines that read the various - * specifications regarding data1 (*.abs,*.att,...) and made the messages - * consistent whenever possible. - * Added extra 'lineno' argument to function readconf_line. - * - * Revision 1.7 1998/02/11 11:53:35 adam - * Changed code so that it compiles as C++. - * - * Revision 1.6 1997/09/17 12:10:39 adam - * YAZ version 1.4. - * - * Revision 1.5 1997/09/05 09:50:58 adam - * Removed global data1_tabpath - uses data1_get_tabpath() instead. - * - * Revision 1.4 1997/05/14 06:54:04 adam - * C++ support. - * - * Revision 1.3 1995/11/01 16:34:58 quinn - * Making data1 look for tables in data1_tabpath - * - * Revision 1.2 1995/11/01 13:54:50 quinn - * Minor adjustments - * - * Revision 1.1 1995/11/01 11:56:09 quinn - * Added Retrieval (data management) functions en masse. - * - * - */ - -#include -#include - -#include -#include -#include - -data1_vartype *data1_getvartypebyct (data1_handle dh, data1_varset *set, - char *zclass, char *type) -{ - data1_varclass *c; - data1_vartype *t; - - for (c = set->classes; c; c = c->next) - if (!data1_matchstr(c->name, zclass)) - { - for (t = c->types; t; t = t->next) - if (!data1_matchstr(t->name, type)) - return t; - yaz_log(LOG_WARN, "Unknown variant type %s in class %s", - type, zclass); - return 0; - } - yaz_log(LOG_WARN, "Unknown variant class %s", zclass); - return 0; -} - -data1_varset *data1_read_varset (data1_handle dh, const char *file) -{ - NMEM mem = data1_nmem_get (dh); - data1_varset *res = (data1_varset *)nmem_malloc(mem, sizeof(*res)); - data1_varclass **classp = &res->classes, *zclass = 0; - data1_vartype **typep = 0; - FILE *f; - int lineno = 0; - int argc; - char *argv[50],line[512]; - - res->name = 0; - res->reference = VAL_NONE; - res->classes = 0; - - if (!(f = data1_path_fopen(dh, file, "r"))) - { - yaz_log(LOG_WARN|LOG_ERRNO, "%s", file); - return 0; - } - while ((argc = readconf_line(f, &lineno, line, 512, argv, 50))) - if (!strcmp(argv[0], "class")) - { - data1_varclass *r; - - if (argc != 3) - { - yaz_log(LOG_WARN, "%s:%d: Bad # or args to class", - file, lineno); - continue; - } - *classp = r = zclass = (data1_varclass *) - nmem_malloc(mem, sizeof(*r)); - r->set = res; - r->zclass = atoi(argv[1]); - r->name = nmem_strdup(mem, argv[2]); - r->types = 0; - typep = &r->types; - r->next = 0; - classp = &r->next; - } - else if (!strcmp(argv[0], "type")) - { - data1_vartype *r; - - if (!typep) - { - yaz_log(LOG_WARN, "%s:%d: Directive class must precede type", - file, lineno); - continue; - } - if (argc != 4) - { - yaz_log(LOG_WARN, "%s:%d: Bad # or args to type", - file, lineno); - continue; - } - *typep = r = (data1_vartype *)nmem_malloc(mem, sizeof(*r)); - r->name = nmem_strdup(mem, argv[2]); - r->zclass = zclass; - r->type = atoi(argv[1]); - if (!(r->datatype = data1_maptype (dh, argv[3]))) - { - yaz_log(LOG_WARN, "%s:%d: Unknown datatype '%s'", - file, lineno, argv[3]); - fclose(f); - return 0; - } - r->next = 0; - typep = &r->next; - } - else if (!strcmp(argv[0], "name")) - { - if (argc != 2) - { - yaz_log(LOG_WARN, "%s:%d: Bad # args for name", - file, lineno); - continue; - } - res->name = nmem_strdup(mem, argv[1]); - } - else if (!strcmp(argv[0], "reference")) - { - if (argc != 2) - { - yaz_log(LOG_WARN, "%s:%d: Bad # args for reference", - file, lineno); - continue; - } - if ((res->reference = oid_getvalbyname(argv[1])) == VAL_NONE) - { - yaz_log(LOG_WARN, "%s:%d: Unknown reference '%s'", - file, lineno, argv[1]); - continue; - } - } - else - yaz_log(LOG_WARN, "%s:%d: Unknown directive '%s'", - file, lineno, argv[0]); - - fclose(f); - return res; -} diff --git a/retrieval/d1_write.c b/retrieval/d1_write.c deleted file mode 100644 index b884248..0000000 --- a/retrieval/d1_write.c +++ /dev/null @@ -1,249 +0,0 @@ -/* - * Copyright (c) 1995-2002, Index Data. - * See the file LICENSE for details. - * Sebastian Hammer, Adam Dickmeiss - * - * $Id: d1_write.c,v 1.19 2002-10-08 20:14:44 adam Exp $ - */ - -#include - -#include -#include - -#define IDSGML_MARGIN 75 - -#define PRETTY_FORMAT 0 - -static int wordlen(char *b, int max) -{ - int l = 0; - - while (l < max && !d1_isspace(*b)) - l++, b++; - return l; -} - -static void indent (WRBUF b, int col) -{ - int i; - for (i = 0; i': - wrbuf_puts (b, ">"); - break; - case '<': - wrbuf_puts (b, "<"); - break; - case '&': - wrbuf_puts (b, "&"); - break; - default: - wrbuf_putc(b, msg[i]); - } - } -} - -static void wrbuf_put_cdata(WRBUF b, const char *msg) -{ - wrbuf_write_cdata (b, msg, strlen(msg)); -} - -static void wrbuf_put_xattr(WRBUF b, data1_xattr *p) -{ - for (; p; p = p->next) - { - wrbuf_putc (b, ' '); - if (p->what == DATA1I_xmltext) - wrbuf_puts (b, p->name); - else - wrbuf_put_cdata (b, p->name); - if (p->value) - { - wrbuf_putc (b, '='); - wrbuf_putc (b, '"'); - if (p->what == DATA1I_text) - wrbuf_put_cdata (b, p->value); - else - wrbuf_puts (b, p->value); - wrbuf_putc (b, '"'); - } - } -} - -static int nodetoidsgml(data1_node *n, int select, WRBUF b, int col, - int pretty_format) -{ - data1_node *c; - - for (c = n->child; c; c = c->next) - { - char *tag; - - if (c->which == DATA1N_preprocess) - { - data1_xattr *p; - - if (pretty_format) - indent (b, col); - wrbuf_puts (b, "u.preprocess.target); - wrbuf_put_xattr (b, c->u.preprocess.attributes); - if (c->child) - wrbuf_puts(b, " "); - if (nodetoidsgml(c, select, b, (col > 40) ? 40 : col+2, - pretty_format) < 0) - return -1; - wrbuf_puts (b, "?>\n"); - } - else if (c->which == DATA1N_tag) - { - if (select && !c->u.tag.node_selected) - continue; - tag = c->u.tag.tag; - if (!data1_matchstr(tag, "wellknown")) /* skip wellknown */ - { - if (nodetoidsgml(c, select, b, col, pretty_format) < 0) - return -1; - } - else - { - data1_xattr *p; - - if (pretty_format) - indent (b, col); - wrbuf_puts (b, "<"); - wrbuf_put_cdata (b, tag); - wrbuf_put_xattr (b, c->u.tag.attributes); - wrbuf_puts(b, ">"); - if (pretty_format) - wrbuf_puts(b, "\n"); - if (nodetoidsgml(c, select, b, (col > 40) ? 40 : col+2, - pretty_format) < 0) - return -1; - if (pretty_format) - indent (b, col); - wrbuf_puts(b, ""); - if (pretty_format) - wrbuf_puts (b, "\n"); - } - } - else if (c->which == DATA1N_data || c->which == DATA1N_comment) - { - char *p = c->u.data.data; - int l = c->u.data.len; - int first = 1; - int lcol = col; - - if (pretty_format && !c->u.data.formatted_text) - indent (b, col); - if (c->which == DATA1N_comment) - wrbuf_puts (b, ""); - if (pretty_format) - wrbuf_puts(b, "\n"); - } - } - } - return 0; -} - -char *data1_nodetoidsgml (data1_handle dh, data1_node *n, int select, int *len) -{ - WRBUF b = data1_get_wrbuf (dh); - - wrbuf_rewind(b); - - if (!data1_is_xmlmode (dh)) - { - wrbuf_puts (b, "<"); - wrbuf_puts (b, n->u.root.type); - wrbuf_puts (b, ">\n"); - } - if (nodetoidsgml(n, select, b, 0, 0 /* no pretty format */)) - return 0; - if (!data1_is_xmlmode (dh)) - { - wrbuf_puts (b, "u.root.type); - wrbuf_puts (b, ">\n"); - } - *len = wrbuf_len(b); - return wrbuf_buf(b); -} diff --git a/tab/Makefile.am b/tab/Makefile.am deleted file mode 100644 index 2af20db..0000000 --- a/tab/Makefile.am +++ /dev/null @@ -1,19 +0,0 @@ -## $Id: Makefile.am,v 1.3 2000-05-18 11:55:47 adam Exp $ - -tabdatadir = $(pkgdatadir)/tab -tabdata_DATA = bib1.att dan1.att danmarc.abs danmarc.mar \ - explain.abs explain.att explain.tag generic.tag gils-a.est \ - gils-b.est gils-f.est gils-g.est \ - gils-summary.map gils-usmarc.map gils-variant.est gils.abs gils.att \ - gils.tag meta-b.est meta-usmarc.map meta.abs meta.tag summary.abs \ - summary.tag tagsetg.tag tagsetm.tag usmarc-b.est usmarc.abs usmarc.mar \ - usmarc.tag var1.var wais-b.est wais-variant.est wais.abs - -EXTRA_DIST = bib1.att dan1.att danmarc.abs danmarc.mar \ - explain.abs explain.att explain.tag generic.tag gils-a.est \ - gils-b.est gils-f.est gils-g.est \ - gils-summary.map gils-usmarc.map gils-variant.est gils.abs gils.att \ - gils.tag meta-b.est meta-usmarc.map meta.abs meta.tag summary.abs \ - summary.tag tagsetg.tag tagsetm.tag usmarc-b.est usmarc.abs usmarc.mar \ - usmarc.tag var1.var wais-b.est wais-variant.est wais.abs - diff --git a/tab/bib1.att b/tab/bib1.att deleted file mode 100644 index a0a1456..0000000 --- a/tab/bib1.att +++ /dev/null @@ -1,104 +0,0 @@ -# $Id: bib1.att,v 1.9 1999-11-30 13:47:12 adam Exp $ -# Bib-1 Attribute Set -name bib1 -reference Bib-1 - -att 1 Personal-name -att 2 Corporate-name -att 3 Conference-name -att 4 Title -att 5 Title-series -att 6 Title-uniform -att 7 ISBN -att 8 ISSN -att 9 LC-card-number -att 10 BNB-card-number -att 11 BGF-number -att 12 Local-number -att 13 Dewey-classification -att 14 UDC-classification -att 15 Bliss-classification -att 16 LC-call-number -att 17 NLM-call-number -att 18 NAL-call-number -att 19 MOS-call-number -att 20 Local-classification -att 21 Subject-heading -att 22 Subject-Rameau -att 23 BDI-index-subject -att 24 INSPEC-subject -att 25 MESH-subject -att 26 PA-subject -att 27 LC-subject-heading -att 28 RVM-subject-heading -att 29 Local-subject-index -att 30 Date -att 31 Date-of-publication -att 32 Date-of-acquisition -att 33 Title-key -att 34 Title-collective -att 35 Title-parallel -att 36 Title-cover -att 37 Title-added-title-page -att 38 Title-caption -att 39 Title-running -att 40 Title-spine -att 41 Title-other-variant -att 42 Title-former -att 43 Title-abbreviated -att 44 Title-expanded -att 45 Subject-precis -att 46 Subject-rswk -att 47 Subject-subdivision -att 48 Number-natl-biblio -att 49 Number-legal-deposit -att 50 Number-govt-pub -att 51 Number-music-publisher -att 52 Number-db -att 53 Number-local-call -att 54 Code-language -att 55 Code-geographic -att 56 Code-institution -att 57 Name-and-title -att 58 Name-geographic -att 59 Place-publication -att 60 CODEN -att 61 Microform-generation -att 62 Abstract -att 63 Note -att 1000 Author-title -att 1001 Record-type -att 1002 Name -att 1003 Author -att 1004 Author-name-personal -att 1005 Author-name-corporate -att 1006 Author-name-conference -att 1007 Identifier-standard -att 1008 Subject-LC-childrens -att 1009 Subject-name-personal -att 1010 Body-of-text -att 1011 Date/time-added-to-db -att 1012 Date/time-last-modified -att 1013 Authority/format-id -att 1014 Concept-text -att 1015 Concept-reference -att 1016 Any 1016,4,1005,62 -att 1017 Server-choice -att 1018 Publisher -att 1019 Record-source -att 1020 Editor -att 1021 Bib-level -att 1022 Geographic-class -att 1023 Indexed-by -att 1024 Map-scale -att 1025 Music-key -att 1026 Related-periodical -att 1027 Report-number -att 1028 Stock-number -att 1030 Thematic-number -att 1031 Material-type -att 1032 Doc-id -att 1033 Host-item -att 1034 Content-type -att 1035 Anywhere -att 1036 Author-Title-Subject diff --git a/tab/dan1.att b/tab/dan1.att deleted file mode 100644 index 6a96c1a..0000000 --- a/tab/dan1.att +++ /dev/null @@ -1,22 +0,0 @@ -name dan1 -reference 1.2.840.10003.3.15 -att 1 Classification-DK5-alfa-subdivision # au Alfabetisk underdeling DK-5 -att 2 Subject-controlled # ke Kontrollerede emneord -att 3 Subject-DBC # db DBC emneord -att 4 Subject-DBC-non-fiction # df DBC-faglitterære emneord -att 5 Subject-DBC-fiction # ds DBC-skønlitterære emneord -att 6 Subject-DBC-music # me DBC-Musikemneord -att 7 Form-as-subject # fm Form betegnelse som emneord -att 8 Level-as-subject # nb Niveau-emneord -att 9 Shelf-mark # po Opstillingselement -att 10 Classification-DK5-number # dk DK5 -att 11 Classification-as-shelf-mark # ok Klassifikation som opstilling -att 12 Obsolete-shelf-mark # gd Forældet dk-klassemærke -att 13 Subject-FUI # fg FUI-Koder -att 14 Catalogue-code # kk Katalogkode -att 15 LIX-number # ix LIX -att 16 Music-notation # nm Musikalsk notation -att 17 Item-number # nr Numre -att 18 Local-item-number # en Numre på ens materiale -att 19 Previous-FAUST-code # tf Tidligere og lokale faustnumre -att 20 Title-host-publication # lvx Værtspublikationstitel (uden nummer) diff --git a/tab/danmarc.abs b/tab/danmarc.abs deleted file mode 100644 index cf4aed1..0000000 --- a/tab/danmarc.abs +++ /dev/null @@ -1,755 +0,0 @@ -name danmarc -reference DANmarc -attset bib1.att -attset dan1.att - -marc danmarc.mar - -esetname B @ -esetname F @ - -elm 10 DanBib-ID-nummer - -elm 10/? DanBib-ID-nummer Item-number -elm 10/?/a DanBib-ID-nummer Item-number -elm 10/?/b Dataproducentens-biblioteksnummer - - -elm 11 ID-nummer-på-hovedmaterialets-post - -elm 11/? ID-nummer-på-hovedmaterialets-post - -elm 11/?/a ID-nummer-på-hovedmaterialets-post - - -elm 14 ID-nummer-på-post-på-højere-niveau - -elm 14/? ID-nummer-på-post-på-højere-niveau - -elm 14/?/a ID-nummer-på-post-på-højere-niveau - -elm 14/?/x ID-nummer-på-post-på-højere-niveau Item-number - -elm 15 ID-nummer-på-post-på-lavere-niveau - -elm 15/? ID-nummer-på-post-på-lavere-niveau Item-number -elm 15/?/a ID-nummer-på-post-på-lavere-niveau Item-number - -elm 16 ID-nummer-på-værtspublikation - -elm 16/? ID-nummer-på-værtspublikation - -elm 16/?/a ID-nummer-på-værtspublikation - - -elm 17 ID-nummer-på-første-udgave - -elm 17/? ID-nummer-på-første-udgave Item-number,Local-item-number -elm 17/?/a ID-nummer-på-første-udgave Item-number,Local-item-number - -elm 18 ID-nummer-på-anden-post-for-samme-materiale - -elm 18/? ID-nummer-på-anden-post-for-samme-materiale Item-number,Local-item-number -elm 18/?/a ID-nummer-på-anden-post-for-samme-materiale Item-number,Local-item-number - -elm 20 Nationalbibliografisk-nummer - -elm 20/? Nationalbibliografisk-nummer Item-number -elm 20/?/a Landekode-for-nationalbibliografi - -elm 20/?/b Nationalbibliografisk-nummer Item-number - -elm 21 ISBN - -elm 21/? ISBN ISBN,Identifier-standard,Item-number -elm 21/?/a ISBN ISBN,Identifier-standard,Item-number -elm 21/?/b Tilføjelse - -elm 21/?/c Bindtype - -elm 21/?/d Anskaffelsesvilkår/pris - -elm 21/?/n Bestillingsnummer Item-number -elm 21/?/x Fejltryk-eller-fejlagtigt-anvendt-ISBN ISBN,Identifier-standard,Item-number - -elm 22 ISSN - -elm 22/? ISSN ISBN,Identifier-standard,Item-number -elm 22/?/a ISSN ISBN,Identifier-standard,Item-number -elm 22/?/b Tilføjelse - -elm 22/?/c Bindtype - -elm 22/?/d Anskaffelsesvilkår/pris - -elm 22/?/z Fejlagtigt-tildelt-ISSN ISBN,Identifier-standard,Item-number - -elm 28 ISMN - -elm 28/? ISMN ISBN,Identifier-standard,Item-number -elm 28/?/a ISMN ISBN,Identifier-standard,Item-number -elm 28/?/b Tilføjelse - -elm 28/?/c Bindtype - -elm 28/?/d Anskaffelsesvilkår/pris - -elm 28/?/n Bestillingsnummer Item-number - -elm 30 CODEN - -elm 30/? CODEN CODEN,Item-number -elm 30/?/a CODEN CODEN,Item-number - -elm 32 Kode-for-natio-eller-fagbibliografi - -elm 32/? Kode-for-natio-eller-fagbibliografi Catalogue-code -elm 32/?/a Kode-for-nationalbibliografi Catalogue-code -elm 32/?/x Kode-for-fagbibliografi Catalogue-code - -#elm 34 Kodede-matematiske-oplysninger - -#elm 34/? Kodede-matematiske-oplysninger Code-map-scale -#elm 34/?/a Målestokstype Code-map-scale -#elm 34/?/b Konstant-lineær-vandret-målestok Code-map-scale -#elm 34/?/d Koordinater Code-map-scale -#elm 34/?/e Koordinater Code-map-scale -#elm 34/?/f Koordinater Code-map-scale -#elm 34/?/g Koordinater Code-map-scale - -elm 38 Opstillingskode-for-børnelitteratur - -elm 38/? Opstillingskode-for-børnelitteratur - -elm 38/?/a Opstillingskode-for-børnelitteratur - - -elm 39 Opstillingskode-for-musikoptagelser - -elm 39/? Opstillingskode-for-musikoptagelser - -elm 39/?/a Opstillingskode-for-musikoptagelser - - -elm 41 Sprogkode - -elm 41/? Sprogkode - -elm 41/?/a Materialets-sprog Code-language -#elm 41/?/b Mellemoriginalens-sprog Code-language-original -#elm 41/?/c Originaludgavens-sprog Code-language-original -elm 41/?/d Sprog-i-resuméer Code-language -elm 41/?/e Sprog-i-mindre-dele-af-materialet Code-language -elm 41/?/p Sprog-i-parallel-tekst Code-language -elm 41/?/u Sprog-i-undertekster-til-film/video Code-language - -elm 42 Lix-tal - -elm 42/? Lix-tal - -elm 42/?/a Samlet-lix-tal LIX-number -elm 42/?/b Specifikation-af-lix-tal - - -elm 43 Kode-for-geografisk-område - -elm 43/? Kode-for-geografisk-område - -elm 43/?/a Kode-for-geografisk-område - - -elm 44 Pædagogisk-fagkode - -elm 44/? Pædagogisk-fagkode Subject-FUI -elm 44/?/a Kode-for-skoleretning Subject-FUI -elm 44/?/b Kode-for-fag-og-undervisningsmateriale Subject-FUI - -elm 50 LC-klassifikation - -#elm 50/? LC-klassifikation Classification-LC -elm 50/? LC-klassifikation - -elm 50/?/a LC-klassifikation - -elm 50/?/b Materialenummer - - -elm 60 NLM-klassifikation - -#elm 60/? NLM-klassifikation Classification-NLM -elm 60/? NLM-klassifikation - -elm 60/?/a NLM-klassifikation - -elm 60/?/b Materialenummer - - -elm 70 NAL-klassifikation - -#elm 70/? NAL-klassifikation Classification-NAL -elm 70/? NAL-klassifikation - -elm 70/?/a Materialenummer - - -elm 79 DB-klassifikation - -elm 79/? DB-klassifikation - -#elm 79/? DB-klassifikation Classification-DB -elm 79/?/a Systemkode - - -elm 80 UDK - -#elm 80/? UDK Classification-UDC -elm 80/? UDK - -elm 80/?/a UDK-notation - - -elm 82 DDC - -elm 82/? DDC - -#elm 82/? DDC Classification-Dewey -elm 82/?/a Basisnummer - -elm 82/?/b Udgivelse - -elm 82/?/c DDC-udgave - - -elm 83 Felt-083 - -elm 83/? Felt-083 - -elm 83/?/a Felt-083 - -elm 83/?/b Felt-083 - - -elm 85 BCM-klassifikation - -elm 85/? BCM-klassifikation - -#elm 85/? BCM-klassifikation Classification-BCM -elm 85/?/a BCM-klassifikation - -elm 85/?/b BCM-klassifikation - -elm 85/?/c BCM-klassifikation - - -elm 87 Lokal-klassifikationsnotation-1 - -elm 87/? Lokal-klassifikationsnotation-1 - -#elm 87/?/a Lokal-klassifikationsnotation-1 Classification-local -elm 87/?/b Lokal-klassifikationsnotation-1 - - -elm 88 Lokal-klassifikationsnotation-2 - -elm 88/? Lokal-klassifikationsnotation-2 - -#elm 88/?/a Lokal-klassifikationsnotation-2 Classification-local -elm 88/?/b Lokal-klassifikationsnotation-2 - -elm 88/?/c Lokal-klassifikationsnotation-2 - -elm 88/?/d Lokal-klassifikationsnotation-2 - -elm 88/?/e Lokal-klassifikationsnotation-2 - -elm 88/?/f Lokal-klassifikationsnotation-2 - -elm 88/?/n Lokal-klassifikationsnotation-2 - -elm 88/?/p Lokal-klassifikationsnotation-2 - -elm 88/?/q Lokal-klassifikationsnotation-2 - -elm 88/?/t Lokal-klassifikationsnotation-2 - -elm 88/?/u Lokal-klassifikationsnotation-2 - - -elm 89 Lokal-klassifikationsnotation-3 - -elm 89/? Lokal-klassifikationsnotation-3 - -#elm 89/?/a Lokal-klassifikationsnotation-3 Classification-local -elm 89/?/b Lokal-klassifikationsnotation-3 - -elm 89/?/c Lokal-klassifikationsnotation-3 - - -elm 96 Lokal-opstillingssignatur - -elm 96/? Lokal-opstillingssignatur - -elm 96/?/a Opstilling - -elm 96/?/n Lokal-opstillingssignatur - -elm 96/?/z Lokaliseringskode - - -elm 100 Personnavn - -elm 100/? Personnavn Personal-name:w,Personal-name:p,Shelf-mark -#elm 100/?/a Efternavn/fornavn-alene Personal-name:w,Personal-name:p,Personal-name-personal:w,Personal-name-personal:p,Shelf-mark -#elm 100/?/c Fødselsår Personal-name:w,Personal-name:p,Personal-name-personal:w,Personal-name-personal:p,Shelf-mark -#elm 100/?/f Tilføjelse Personal-name:w,Personal-name:p,Personal-name-personal:w,Personal-name-personal:p,Shelf-mark -#elm 100/?/h Fornavn Personal-name:w,Personal-name:p,Personal-name-personal:w,Personal-name-personal:p,Shelf-mark -#elm 100/?/k Fuldt-udskrevet-fornavn Personal-name:w,Personal-name:p,Personal-name-personal:w,Personal-name-personal:p,Shelf-mark - -elm 110 Korporationsnavn-opstillingselement - -elm 110/? Korporationsnavn-opstillingselement Personal-name:w,Personal-name:p,Corporate-name:w,Corporate-name:p,Shelf-mark -#elm 110/?/a Korporationsnavn Personal-name:w,Personal-name:p,Personal-name-corporate:w,Personal-name-corporate:p,Shelf-mark -#elm 110/?/c Underkorporation Personal-name:w,Personal-name:p,Personal-name-corporate:w,Personal-name-corporate:p,Shelf-mark -#elm 110/?/e Tilføjelse Personal-name:w,Personal-name:p,Personal-name-corporate:w,Personal-name-corporate:p,Shelf-mark -#elm 110/?/i Nummer-på-konference Personal-name:w,Personal-name:p,Personal-name-corporate:w,Personal-name-corporate:p,Shelf-mark -#elm 110/?/j Sted-for-konference Personal-name:w,Personal-name:p,Personal-name-corporate:w,Personal-name-corporate:p,Shelf-mark -#elm 110/?/k År-for-konference Personal-name:w,Personal-name:p,Personal-name-corporate:w,Personal-name-corporate:p,Shelf-mark - -elm 210 Forkortet-nøgletitel - -elm 210/? Forkortet-nøgletitel Title-key,Title,Title:p -elm 210/?/a Forkortet-nøgletitel Title-key,Title,Title:p -elm 210/?/b Forkortet-identificerende-tilføjelse Title-key,Title,Title:p - -elm 222 Nøgletitel - -elm 222/? Nøgletitel Title-key,Title,Title:p -elm 222/?/a Nøgletitel Title-key,Title,Title:p -elm 222/?/b Identificerende-tilføjelse Title-key,Title,Title:p - -elm 239 Uniform-titel/standardtitel-opstillingselement - -elm 239/? Uniform-titel/standardtitel-opstillingselement Title-uniform,Title,Title:p -elm 239/?/t Uniform-titel Title-uniform,Title,Title:p -elm 239/?/u Almindeligt-kendt-tilnavn Title-uniform,Title,Title:p -elm 239/?/v Uddragstitel Title-uniform,Title,Title:p -elm 239/?/Ø Uniform-titel/standardtitel-opstillingselement - -elm 239/?/ø Identificerende-tilføjelser Title-uniform,Title - -elm 240 Uniform-titel-opstillingselement - -elm 240/? Uniform-titel-opstillingselement Title-uniform,Title,Title:p -elm 240/?/a Uniform-titel Title-uniform,Title,Title:p -elm 240/?/j Andet-identificerende-element Title-uniform,Title,Title:p -elm 240/?/r Sprog-i-oversættelse/version - -elm 240/?/u Udgivelsesår - -elm 240/?/ø Identificerende-tilføjelser Title-uniform,Title - -elm 241 Originaltitel - -elm 241/? Originaltitel Title,Title:p -elm 241/?/a Originaltitel Title,Title:p -elm 241/?/r Sprog - - -elm 245 Originaltitel-og-ophavsangivelse - -elm 245/? Originaltitel-og-ophavsangivelse Title,Title:p -elm 245/?/A Originaltitel-og-ophavsangivelse - -elm 245/?/G Originaltitel-og-ophavsangivelse - -elm 245/?/a Titel Title,Title:p -elm 245/?/b Rest-af-titel-eller-alternativ-titel Title,Title:p -elm 245/?/c Undertitel-og-anden-titelinformation Title,Title:p -elm 245/?/e Ophavsangivelser-opslag - -elm 245/?/f Ophavsangivelser - -elm 245/?/g Numerisk-eller-alfabetisk-betegnelse-for-bind Title,Title:p -elm 245/?/i Anden-primær/sekundær-ophavsangivelse-kun-i-nationalbibliogafien - -elm 245/?/j Anden-primær/sekundær-ophavsangivelse-ikke-i-nationalbibliogafien - -elm 245/?/o Titel-på-supplement/sektion - -elm 245/?/p Paralleltitel Title-parallel,Title,Title:p -elm 245/?/s Parallel-undertitel Title-parallel,Title,Title:p -elm 245/?/u Markant-undertitel Title,Title:p -elm 245/?/x Hovedtitel-på-tilføjet-værk-af-andet-ophav Title,Title:p -elm 245/?/y Titel-på-supplement Title,Title:p -elm 245/?/Ø Originaltitel-og-ophavsangivelse - -elm 245/?/æ Identificerende-ophavsangivelse-til-titel - -elm 245/?/ø Identificerende-tilføjelser-til-titel - - -elm 248 Bindspecifikation - -elm 248/? Bindspecifikation Title -elm 248/?/a Bindtitel/supplementstitel Title,Title:p -elm 248/?/c Undertitel-og-anden-titelinformation Title,Title:p -elm 248/?/e Ophavsangivelse - -elm 248/?/g Bindnummer/supplementsbetegnelse Title -elm 248/?/j Udgivelsesår - -elm 248/?/l Generel-note Note -elm 248/?/w Udgavebetegnelse - - -elm 250 Udgavebetegnelse - -elm 250/? Udgavebetegnelse - -elm 250/?/a Udgavebetegnelse - -elm 250/?/b Kort-udgavebetegnelse/sonderingselement - -elm 250/?/c Ophavsangivelse-opslag - -elm 250/?/d Ophavsangivelse - -elm 250/?/x Oplagsbetegnelse - - -elm 255 Nummereringer-og-dateringer - -elm 255/? Nummereringer-og-dateringer - -elm 255/?/a Nummereringer-og-dateringer - - -elm 256 Matematiske-oplysninger-for-kartografiske-materialer - -#elm 256/? Matematiske-oplysninger-for-kartografiske-materialer Code-map-scale -#elm 256/?/a Målestok Code-map-scale -#elm 256/?/c Projektion Code-map-scale - -elm 260 Publicering/distribution - -elm 260/? Publicering/distribution - -elm 260/?/a Hjemsted-for-forlag Place-publication -elm 260/?/b Navn-på-forlag Publisher -elm 260/?/c Udgivelsesår Date-of-Publication -elm 260/?/d Adresse-på-forlag - -elm 260/?/e Funktionsangivelse-på-forlag - -elm 260/?/f Hjemsted-for-distributør Place-publication -elm 260/?/g Navn-på-distributør - -elm 260/?/k Trykkerioplysninger - -elm 260/?/p Navn-på-forlag/distributør-på-andet-sprog/alfabet publisher - -elm 300 Fysisk-beskrivelse - -elm 300/? Fysisk-beskrivelse - -elm 300/?/D Fysisk-beskrivelse - -elm 300/?/a Omfang-uden-specifik-materialebetegnelse - -elm 300/?/b Yderligere-fysisk-beskrivelse - -elm 300/?/c Størrelse - -elm 300/?/d Bilag - -elm 300/?/e Tekniske-oplysninger - -elm 300/?/l Spilletid - -elm 300/?/n Specifik-materialebetegnelse - - -elm 440 Seriebetegnelse-i-materialets-form - -elm 440/? Seriebetegnelse-i-materialets-form - -elm 440/?/A Seriebetegnelse-i-materialets-form - -elm 440/?/V Seriebetegnelse-i-materialets-form - -elm 440/?/a Seriens-hovedtitel Title,Title-series,Title:p -elm 440/?/c Undertitel-eller-anden-titelinformation Title,Title-series,Title:p -elm 440/?/e Ophavsangivelse - -elm 440/?/n Numerisk/alfabetisk-betegnelse-for-sektion Title,Title-series -elm 440/?/o Titel-på-sektion Title,Title-series,Title:p -elm 440/?/p Seriens-paralleltitel Title,Title-series,Title:p -elm 440/?/v Nummerering-og-datering-i-serien Title,Title-series -elm 440/?/y Seriebetegnelse-i-materialets-form - -elm 440/?/z Seriens-ISSN ISSN -elm 440/?/å Seriebetegnelse-i-materialets-form - -elm 440/?/æ Identificerende-ophavsangivelse-til-seriens-titel - -elm 440/?/ø Identificerende-tilføjelse-til-seriens-titel Title,Title-series,Title:p - -elm 500 Periodicums-frekvens - -elm 500/? Periodicums-frekvens - -elm 500/?/a Periodicums-frekvens - - -elm 501 Systemkrav/adgangsmåde - -elm 501/? Systemkrav Note -elm 501/?/a Adgangsmåde Note - -elm 502 Originaltitel/oversættelse - -elm 502/? Originaltitel/oversættelse Note -elm 502/?/a Originaltitel/oversættelse Note - -elm 504 Indholdsbeskrivelse - -elm 504/? Indholdsbeskrivelse Note -elm 504/?/a Indholdsbeskrivelse Note - -elm 505 Art/form - -elm 505/? Art/form Note -elm 505/?/a Art/form Note - -elm 506 Disputats/afhandling - -elm 506/? Disputats/afhandling Note -elm 506/?/a Disputats/afhandling Note - - -elm 507 Anledning-til-udgivelse - -elm 507/? Anledning-til-udgivelse Note -elm 507/?/a Anledning-til-udgivelse Note - -elm 508 Sprog-og-alfabet - -elm 508/? Sprog-og-alfabet Note -elm 508/?/a Sprog-og-alfabet Note - -elm 509 Besætning - -elm 509/? Besætning Note -elm 509/?/a Besætning Note - -elm 512 Beskrivelse - -elm 512/? Beskrivelse - -elm 512/?/a Generel-note-til-beskrivelse Note -elm 512/?/b Supplerende-tekst - -elm 512/?/e Ophavsangivelse - -elm 512/?/i Indledende-tekst - -elm 512/?/t Titel Title,Title:p - -elm 513 Fælles-ophavsangivelse - -elm 513/? Fælles-ophavsangivelse - -elm 513/?/e Primær-ophavsangivelse - - -elm 517 Målgruppe-og-anvendelighed - -elm 517/? Målgruppe-og-anvendelighed Note -elm 517/?/a Målgruppe-og-anvendelighed Note - -elm 520 Værkets-bibliografiske-historie - -elm 520/? Værkets-bibliografiske-historie - -elm 520/?/a Værkets-bibliografiske-historie - -elm 520/?/b Supplerende-tekst - -elm 520/?/i Indledende-tekst - -elm 520/?/t Titel Title,Title:p - -elm 521 Udgavens-oplag - -elm 521/? Udgavens-oplag - -elm 521/?/a Oplagsbetegnelse - -elm 521/?/b Seneste-oplag - -elm 521/?/c Oplagets-udgivelsesår Date-of-publication - -elm 526 Sammenhæng-med-andre-værker - -elm 526/? Sammenhæng-med-andre-værker - -elm 526/?/a Sammenhæng-med-andre-værker Note -elm 526/?/b Supplerende-tekst - -elm 526/?/d Ophavsangivelse-foran-titel - -elm 526/?/e Ophavsangivelse - -elm 526/?/i Indledende-tekst - -elm 526/?/t Titel Title,Title:p - -elm 530 Indholdsnote - -elm 530/? Indholdsnote - -elm 530/?/a Indholdsnote Note -elm 530/?/e Ophavsangivelse - -elm 530/?/t Titel Title,Title:p - -elm 531 Indledende-tekst-til-maskingenereret-indholdsnote - -elm 531/? Indledende-tekst-til-maskingenereret-indholdsnote - -elm 531/?/a Indledende-tekst-til-maskingenereret-indholdsnote - - -elm 532 Litteraturhenvisninger-og-registre - -elm 532/? Litteraturhenvisninger-og-registre - -elm 532/?/a Litteraturhenvisninger-og-registre - - -elm 534 Partielt-indhold - -elm 534/? Partielt-indhold Note -elm 534/?/a Partielt-indhold Note - -elm 538 Numre-der-indgår-i-materialet - -elm 538/? Numre-der-indgår-i-materialet Item-number -elm 538/?/a Nummer Item-number -elm 538/?/b Editionsnummer Item-number -elm 538/?/c Pladenummer Item-number -elm 538/?/d Editions-og-pladenummer Item-number -elm 538/?/f Forlag Publisher -elm 538/?/g Forlagsnummer Item-number - -elm 539 Grundlaget-for-katalogiseringen - -elm 539/? Grundlaget-for-katalogiseringen - -elm 539/?/a Grundlaget-for-katalogiseringen - - -elm 557 Periodicum-som-værtspublikation-for-I-analyse - -elm 557/? Periodicum-som-værtspublikation-for-I-analyse - -elm 557/?/V Periodicum-som-værtspublikation-for-I-analyse - -elm 557/?/a Titel - # Title,Title-host-item,Title:p -elm 557/?/j Udgivelsesår - -elm 557/?/v Nummerering/datering - # Title,Title-host-item,Title:p - -elm 559 Generel-note - -elm 559/? Generel-note - -elm 559/?/a Generel-note Note - -elm 600 Personnavn-emneord - -#elm 600/? Personnavn-emneord Subject-controlled,Subject-name-personal,Subject:p -#elm 600/?/a Efternavn/fornavn-alene Subject-controlled,Subject-name-personal,Subject:p -#elm 600/?/c Fødselsår Subject-controlled,Subject-name-personal,Subject:p -#elm 600/?/e Romertal Subject-controlled,Subject-name-personal,Subject:p -#elm 600/?/f Tilføjelse Subject-controlled,Subject-name-personal,Subject:p -#elm 600/?/h Fornavn Subject-controlled,Subject-name-personal,Subject:p -#elm 600/?/k Fuldt-udskrevet-fornavn Subject-controlled,Subject-name-personal,Subject:p -#elm 600/?/x Underdeling-emne/art Subject-controlled,Subject-name-personal,Subject:p -#elm 600/?/å Personnavn-emneord Subject-controlled,Subject-name-personal,Subject:p - -elm 610 Korporationsnavn-emneord - -#elm 610/? Korporationsnavn-emneord Subject-controlled,Subject-name-corporate,Subject:p -#elm 610/?/a Korporationsnavn Subject-controlled,Subject-name-corporate,Subject:p -#elm 610/?/c Underkorporation Subject-controlled,Subject-name-corporate,Subject:p -#elm 610/?/e Tilføjelse Subject-controlled,Subject-name-corporate,Subject:p -#elm 610/?/t Titel Subject-controlled,Subject-name-corporate,Subject:p -#elm 610/?/x Underdeling-emne/art Subject-controlled,Subject-name-corporate,Subject:p -#elm 610/?/y Underdeling-periode Subject-controlled,Subject-name-corporate,Subject:p - -elm 621 Emnedata-for-kartografisk-materiale - -#elm 621/? Emnedata-for-kartografisk-materiale Subject -elm 621/? Emnedata-for-kartografisk-materiale - -#elm 621/?/a Stednavn Subject -#elm 621/?/b Land/stat Subject - -elm 630 Kontrolleret-emneord - -#elm 630/? Kontrolleret-emneord Subject-controlled,Subject-controlled,Subject:p,Subject-controlled:p -#elm 630/?/a Kontrolleret-emneord Subject-controlled,Subject-controlled,Subject:p,Subject-controlled:p -#elm 630/?/b Andre-bibliotekers-kontrollerede-emneord Subject-controlled,Subject-controlled,Subject:p,Subject-controlled:p -# -#elm 631 Ukontrolleret-emneord - -#elm 631/? Ukontrolleret-emneord Subject-controlled,Subject-uncontrolled,Subject:p,Subject-uncontrolled:p -#elm 631/?/a Ukontrolleret-emneord Subject-controlled,Subject-uncontrolled,Subject:p,Subject-uncontrolled:p -#elm 631/?/b Andre-bibliotekers-ukontrollerede-emneord Subject-controlled,Subject-uncontrolled,Subject:p,Subject-uncontrolled:p -#elm 631/?/f Ukontrolleret-faglitterært-emneord Subject-controlled,Subject-uncontrolled,Subject:p,Subject-uncontrolled:p -# -elm 633 Stednavn - -#elm 633/? Stednavn Subject-controlled,Subject-controlled,Subject:p,Subject-controlled:p -#elm 633/?/a Stednavn Subject-controlled,Subject-controlled,Subject:p,Subject-controlled:p -# -elm 645 Titel - -elm 645/? Titel Subject-controlled,Subject-controlled:p -elm 645/?/c Titel Subject-controlled,Subject-controlled:p - -elm 650 LC-emneord subject-controlled -#elm 650/? LC-emneord Subject-controlled -#elm 650/?/a LC-emneord Subject-controlled -#elm 650/?/v LC-emneord - -#elm 650/?/x Underdeling-emne/art Subject-controlled -#elm 650/?/y Underdeling-periode Subject -#elm 650/?/z Underdeling-lokalitet Subject - -elm 651 LC-geografisk-emneord subject-controlled -#elm 651/? LC-geografisk-emneord Subject -#elm 651/?/a LC-geografisk-emneord Subject -#elm 651/?/x Underdeling-emne/art Subject -#elm 651/?/z Underdeling-lokalitet Subject - -elm 652 DK5-klassemærke - -elm 652/? DK5-klassemærke - -elm 652/?/a Efternavn/navn/korporationsnavn-som-alfabetisk-underdeling Classification-DK5-alfa-subdivision -elm 652/?/b Andet-som-alfabetisk-underdeling Classification-DK5-alfa-subdivision,Subject-controlled -elm 652/?/c Fødselsår Classification-DK5-alfa-subdivision -elm 652/?/h Fornavn Classification-DK5-alfa-subdivision,Subject-controlled -elm 652/?/i Analytisk-klassemærke Classification-DK5-number -elm 652/?/m Opstillings-og-hovedplacering Classification-DK5-number,Classification-as-shelf-mark -elm 652/?/n Nationalbibliografisk-hovedplacering Classification-DK5-number -elm 652/?/o Opstillingsklassemærkeog-bibliotekshovedplacering Classification-DK5-number -elm 652/?/p Biplacering Classification-DK5-number -elm 652/?/q Nationalbibliografisk-biplacering Classification-DK5-number -elm 652/?/r Biblioteksbiplacering Classification-DK5-number -elm 652/?/v Tilføjede-cifre-efter-kolon - -elm 652/?/z Tilføjede-cifre-efter-bindestreg - -elm 652/?/å Feltnumerator - - -elm 654 Forældet-DK5-klassemærke - -#elm 654/? Forældet-DK5-klassemærke Classification -#elm 654/?/p Biplacering Classification - -elm 660 MeSH-emneord - -elm 660/? MeSH-emneord Subject-controlled,Subject-controlled,MESH-Subject -elm 660/?/a MeSH-emneord Subject-controlled,Subject-controlled,MESH-Subject -elm 660/?/x Generel-underdeling Subject-controlled,Subject-controlled,MESH-Subject - -elm 661 Europæisk-pædagogisk-tesaurus - -elm 661/? Europæisk-pædagogisk-tesaurus Subject-controlled,Subject-controlled -elm 661/?/a Kontrolleret-dansk-emneord Subject-controlled,Subject-controlled -elm 661/?/b Kontrolleret-engelsk-emneord Subject-controlled,Subject-controlled -elm 661/?/c Ukontrolleret-dansk-emneord Subject-controlled,Subject-controlled - -elm 666 Kontrolleret-DBC-emneord - -elm 666/? Kontrolleret-DBC-emneord - -elm 666/?/e Stednavn-som-emneord-faglitteratur Subject-DBC,Subject-controlled,Subject-DBC-non-fiction,Subject-controlled -elm 666/?/f Kontrolleret-faglitterært-emneord Subject-DBC,Subject-controlled,Subject-DBC-non-fiction,Subject-controlled -elm 666/?/i Tidsangivelse Subject-DBC,Subject-controlled,Subject-DBC-non-fiction,Subject-controlled -elm 666/?/l Stednavn Subject-DBC,Subject-controlled -elm 666/?/m Musikalsk-genre-som-emneord Subject-DBC,Subject-controlled,Subject-DBC-music -elm 666/?/n Musikalsk-besætning-som-emneord Subject-DBC,Subject-controlled,Subject-DBC-music -elm 666/?/o Formbetegnelse Subject-DBC,Subject-controlled,Form-as-subject -elm 666/?/p Periodebetegnelse Subject-DBC,Subject-controlled,Subject-DBC-music -elm 666/?/q Stednavn-som-emneord-skønlitteratur Subject-DBC,Subject-controlled,Subject-DBC-fiction,Subject-controlled -elm 666/?/s Kontrolleret-skønlitterært-emneord Subject-DBC,Subject-controlled,Subject-DBC-fiction,Subject-controlled -elm 666/?/u Niveau/brugerkategori Subject-DBC,Subject-controlled,Level-as-subject -elm 666/?/å Kontrolleret-DBC-emneord Subject-DBC,Subject-controlled - -elm 668 Genrebetegnelse - -elm 668/? Genrebetegnelse Subject-controlled -elm 668/?/a Genrebetegnelse Subject-controlled -elm 668/?/b Underdeling Subject-controlled - -#elm 670 NAL-emneord - -#elm 670/? NAL-emneord Subject-NAL -#elm 670/?/a NAL-emneord Subject - -elm 690 COMPASS-emneord - -elm 690/? COMPASS-emneord - # Subject-controlled,Subject-COMPASS -elm 690/?/a Enkeltord - # Subject-controlled,Subject-COMPASS -elm 690/?/b Flere-ord - # Subject-controlled,Subject-COMPASS -elm 690/?/c Forbindende-tekst - -elm 690/?/d Underdeling-periode - # Subject-controlled,Subject-COMPASS -elm 690/?/h COMPASS-emneord - # Subject-controlled,Subject-COMPASS -elm 690/?/i COMPASS-emneord - -elm 690/?/m COMPASS-emneord - -elm 690/?/v COMPASS-emneord - -elm 690/?/w COMPASS-emneord - -elm 690/?/x COMPASS-emneord - -elm 690/?/y COMPASS-emneord - -elm 690/?/z COMPASS-emneord - - -elm 700 Personnavn - -elm 700/? Personnavn Personal-name -elm 700/?/A Personnavn Personal-name -elm 700/?/a Efternavn/fornavn-alene Personal-name -elm 700/?/b Funktionsbetegnelse - -elm 700/?/c Fødselsår Personal-name -elm 700/?/f Tilføjelse Personal-name -elm 700/?/h Fornavn Personal-name -elm 700/?/k Fuldt-udskrevet-fornavn Personal-name -elm 700/?/å Personnavn - - -elm 710 Korporationsnavn - -elm 710/? Korporationsnavn Personal-name -elm 710/?/A Korporationsnavn Personal-name -elm 710/?/a Korporationsnavn Personal-name -elm 710/?/c Underkorporation Personal-name -elm 710/?/e Tilføjelse Personal-name -elm 710/?/i Nummer-på-konference Personal-name -elm 710/?/j Sted-for-konference Personal-name -elm 710/?/k År-for-konference Personal-name -elm 710/?/å Korporationsnavn - - - -elm 739 Uniform-titel/standardtitel - -elm 739/? Uniform-titel/standardtitel Title-uniform -elm 739/?/t Uniform-titel/standardtitel Title-uniform - -elm 740 Uniform-titel - -elm 740/? Uniform-titel Title,Title-uniform -elm 740/?/a Uniform-titel Title,Title-uniform -elm 740/?/s Titel-på-del-af-værket Title,Title-uniform - -elm 745 Varianttitel - -elm 745/? Varianttitel - -elm 745/?/A Varianttitel - -elm 745/?/a Titel Title -elm 745/?/o Titel-på-afhængig-publikation/supplement - - -elm 770 Personnavn-analyse - -elm 770/? Personnavn-analyse Personal-name -elm 770/?/A Personnavn-analyse - -elm 770/?/a Efternavn/fornavn-alene Personal-name -elm 770/?/c Fødselsår Personal-name -elm 770/?/f Tilføjelse Personal-name -elm 770/?/h Fornavn Personal-name -elm 770/?/å Feltnumerator - - -elm 780 Korporationsnavn-analyse - -elm 780/? Korporationsnavn-analyse Personal-name,Corporate-name -elm 780/?/a Korporationsnavn Personal-name,Corporate-name -elm 780/?/å Feltnumerator Personal-name,Corporate-name - -elm 795 Analytisk-titel - -elm 795/? Analytisk-titel Title -elm 795/?/A Analytisk-titel - -elm 795/?/a Analytisk-titel Title -elm 795/?/b Rest-af-analytisk-titel/alternativ-titel Title -elm 795/?/c Undertitel/anden-titelinformation Title -elm 795/?/e Ophavsangivelse-opslag - -elm 795/?/i Anden-primær/sekundær-ophavsangivelse - -elm 795/?/p Paralleltitel Title -elm 795/?/u Almindeligt-kendt-tilnavn Title -elm 795/?/v Uddragstitel Title -elm 795/?/y Kode - -elm 795/?/å Feltnumerator - - -elm 840 Serietitel - -elm 840/? Serietitel - -elm 840/?/V Serietitel - -elm 840/?/a Seriens-hovedtitel Title,Title-series -elm 840/?/v Seriens-nummerering/datering Title,Title-series -elm 840/?/z Seriens-ISSN Identifier-standard,ISSN,Item-number -elm 840/?/ø Identificerende-tilføjelser-til-seriens-titel Title - -elm 860 Tidligere-titel - -elm 860/? Tidligere-titel - -elm 860/?/c Tilføjelse-til-titel Related-periodical,Title-former -elm 860/?/t Hovedtitel Title-former -elm 860/?/z ISSN Identifier-standard,ISSN,Item-number - -elm 861 Senere-titel - -elm 861/? Senere-titel - -elm 861/?/c Tilføjelse-til-titel Related-periodical,Title-added-title-page -elm 861/?/i Indledende-tekst - -elm 861/?/t Hovedtitel Related-periodical,Title-added-title-page -elm 861/?/z ISSN Identifier-standard,ISSN,Item-number - -elm 863 Udgivet-sammen-med - -elm 863/? Udgivet-sammen-med - -elm 863/?/t Hovedtitel Title-other-variant -elm 863/?/z ISSN Identifier-standard,ISSN,Item-number - -elm 867 Hovedudgave-på-andet-sprog/andet-indhold - -elm 867/? Hovedudgave-på-andet-sprog/andet-indhold - -elm 867/?/t Hovedtitel Title-other-variant -elm 867/?/z ISSN Identifier-standard,ISSN,Item-number - -elm 868 Udgave-på-andet-sprog/andet-indhold - -elm 868/? Udgave-på-andet-sprog/andet-indhold - -elm 868/?/t Hovedtitel Title-other-variant -elm 868/?/z ISSN Identifier-standard,ISSN,Item-number - -elm 870 Hovedpublikation-til-supplement - -elm 870/? Hovedpublikation-til-supplement - -elm 870/?/t Hovedtitel Title-other-variant -elm 870/?/z ISSN Identifier-standard,ISSN,Item-number - -elm 871 Supplement-til-hovedpublikation - -elm 871/? Supplement-til-hovedpublikation - -elm 871/?/c Tilføjelse-til-titel - -elm 871/?/t Hovedtitel Title-other-variant - -elm 874 Underserie - -elm 874/? Underserie - -elm 874/?/t Hovedtitel Title-other-variant -elm 874/?/z ISSN Identifier-standard,ISSN,Item-number - -elm 900 Henvisning-fra-personnavn - -elm 900/? Henvisning-fra-personnavn Personal-name -elm 900/?/A Henvisning-fra-personnavn - -elm 900/?/a Efternavnet/fornavnet-alene Personal-name -elm 900/?/c Fødselsår Personal-name -elm 900/?/f Tilføjelse Personal-name -elm 900/?/h Fornavn Personal-name -elm 900/?/k Fuldt-udskrevet-fornavn Personal-name -elm 900/?/w Ord-hvortil-der-henvises - -elm 900/?/x Forbindende-tekst - -elm 900/?/z Felt/delfeltkode-hvortil-der-henvises - -elm 900/?/å Feltnumerator - - -elm 910 Henvisning-fra-korporationsnavn - -elm 910/? Henvisning-fra-korporationsnavn Personal-name -elm 910/?/A Henvisning-fra-korporationsnavn - -elm 910/?/a Korporationsnavn Personal-name -elm 910/?/c Underkorporation Personal-name -elm 910/?/e Tilføjelse Personal-name -elm 910/?/g Resten-af-korporationsnavn Personal-name -elm 910/?/h Forbogstaver/fornavnsforkortelser Personal-name -elm 910/?/w Ord-hvortil-der-henvises - -elm 910/?/x Forbindende-tekst - -elm 910/?/z Felt/delfeltkode-hvortil-der-henvises - -elm 910/?/å Feltnumerator - - -elm 945 Henvisning-fra-titel - -elm 945/? Henvisning-fra-titel - -elm 945/?/a Title Title -elm 945/?/w Ord-hvortil-der-henvises - -elm 945/?/x Forbindende-tekst - -elm 945/?/z Felt/delfeltkode-hvortil-der-henvises - - -elm 980 Bibliotekets-beholdning-af-et-periodicum - -elm 980/? Bibliotekets-beholdning-af-et-periodicum - -elm 980/?/d Første-år - -elm 980/?/g Kode-for-fuldstændighed - - -elm s01 felt-s01 - -elm s01/? felt-s01 - -elm s01/?/a felt-s01 - -elm s01/?/b felt-s01 - - - -elm s06 felt-s06 - -elm s06/? felt-s06 - -elm s06/?/a felt-s06 - -elm s06/?/b felt-s06 - - -elm s10 felt-s10 - -elm s10/? felt-s10 - -elm s10/?/a felt-s10 - - -elm s45 felt-s45 - -elm s45/? felt-s45 - -elm s45/?/a felt-s45 - - diff --git a/tab/danmarc.mar b/tab/danmarc.mar deleted file mode 100644 index f9717e2..0000000 --- a/tab/danmarc.mar +++ /dev/null @@ -1,3 +0,0 @@ -# $Id: danmarc.mar,v 1.1 2000-05-18 11:55:47 adam Exp $ -name danmarc -reference danmarc diff --git a/tab/explain.abs b/tab/explain.abs deleted file mode 100644 index 832894f..0000000 --- a/tab/explain.abs +++ /dev/null @@ -1,229 +0,0 @@ -# This Explain schema is used for our internal management and processing of -# explain data. On request, records are mapped to the proper Explain ASN.1 -# before transmission. -# -# $Id: explain.abs,v 1.14 1998-10-13 20:52:18 adam Exp $ - -name explain -reference Explain-schema -attset explain -tagset explain.tag - -esetname B @ -esetname F @ - - -section rpnCapabilities -elm (4,550) rpnOperators - -elm (4,550)/(4,551) rpnOperator - -elm (4,552) resultSetAsOperandSupported - -elm (4,553) restrictionOperandSupported - -elm (4,554) proximitySupport - -elm (4,554)/(4,555) anySupport - -elm (4,554)/(4,556) unitsSupported - -elm (4,554)/(4,556)/(4,557) unitSupported - -elm (4,554)/(4,556)/(4,557)/(4,558) known - -elm (4,554)/(4,556)/(4,557)/(4,559) private - -elm (4,554)/(4,556)/(4,557)/(4,559)/(4,558) privateUnit - -elm (4,554)/(4,556)/(4,557)/(4,559)/(4,560) description - - -section accessInfo -elm (4,501) queryTypesSupported - -elm (4,501)/(4,518) queryTypeDetails - -elm (4,501)/(4,518)/(4,519):rpnCapabilities rpnCapabilities - -elm (4,501)/(4,518)/(4,520) iso8777Capabilities - -elm (4,501)/(4,518)/(4,521) privateCapabilities - -elm (4,503) diagnosticSets - -elm (4,503)/(4,1000) diagnosticSet - -elm (4,505) attributeSetIds - -elm (4,505)/(4,1000) attributeSetId - -elm (4,507) schemas - -elm (4,507)/(4,1000) schema - -elm (4,509) recordSyntaxes - -elm (4,509)/(4,1000) recordSyntax - -elm (4,511) resourceChallenges - -elm (4,511)/(4,1000) resourceChallenge - -elm (4,513) restrictedAccess - -elm (4,514) costInfo - -elm (4,515) variantSets - -elm (4,515)/(4,1000) variantSets - -elm (4,516) elementSetNames - -elm (4,516)/(4,1001) elementSetName - -elm (4,517) unitSystems - -elm (4,517)/(4,1001) unitSystem - - -section commonInfo -elm (4,601) dateAdded ! -elm (4,602) dateChanged ! -elm (4,603) expiry DateExpired -elm (4,604) languageCode HumanStringLanguage - -section contactInfo -elm (4,102) name - -elm (4,113) description - -elm (4,127) address - -elm (4,128) email - -elm (4,129) phone - - -section stringOrNumeric -elm (4,1001) string - -elm (4,1002) numeric - - -section attributeSetDetailsValue -elm (4,709) attributeValue - -elm (4,709)/(4,710):stringOrNumeric value - -elm (4,709)/(4,113) description - -elm (4,709)/(4,712) subAttributes - -elm (4,709)/(4,712)/(4,713):stringOrNumeric subAttribute - -elm (4,709)/(4,714) superAttributes - -elm (4,709)/(4,714)/(4,715):stringOrNumeric superAttributes - -elm (4,709)/(4,711) partialSupport - - -section attributeSetDetails -elm (4,1000) attributeSet - -elm (4,702) attributesByType - -elm (4,702)/(4,703) attributeTypeDetails - -elm (4,702)/(4,703)/(4,704) attributeType - -elm (4,702)/(4,703)/(4,705) defaultIfOmitted - -elm (4,702)/(4,703)/(4,705)/(4,706):stringOrNumeric defaultValue - -elm (4,702)/(4,703)/(4,705)/(4,113) defaultDescription - -elm (4,702)/(4,703)/(4,708):attributeSetDetailsValue attributeValues - - -section attributeCombinations -elm (4,1000) attributeSet - -elm (4,717) legalCombinations - -elm (4,717)/(4,718) legalCombination - -elm (4,717)/(4,718)/(4,719) attributeOccurrence - -elm (4,717)/(4,718)/(4,719)/(4,1000) attributeSetId - -elm (4,717)/(4,718)/(4,719)/(4,704) attributeType - -elm (4,717)/(4,718)/(4,719)/(4,720) mustBeSupplied - -elm (4,717)/(4,718)/(4,719)/(4,721) anyOrNone - -elm (4,717)/(4,718)/(4,719)/(4,722) specific - -elm (4,717)/(4,718)/(4,719)/(4,722)/(4,710):stringOrNumeric value - - -section attributeType -elm (4,751) attributeType - -elm (4,751)/(4,102) attributeName - -elm (4,751)/(4,113) attributeDescription - -elm (4,751)/(4,704) type - -elm (4,751)/(4,708) attributeValues - -elm (4,751)/(4,708)/(4,709) attributeValue - -elm (4,751)/(4,708)/(4,709)/(4,102) name - -elm (4,751)/(4,708)/(4,709)/(4,113) description - -elm (4,751)/(4,708)/(4,709)/(4,710):stringOrNumeric attributeValue - -elm (4,751)/(4,708)/(4,709)/(4,752):stringOrNumeric equivalentAttribute - - -section main -# -# CategoryList -# -elm (4,1) categoryList ExplainCategory -elm (4,1)/(4,600):commonInfo categoryListCommonInfo - -elm (4,1)/(4,300) categories - -elm (4,1)/(4,300)/(4,301) category - -elm (4,1)/(4,300)/(4,301)/(4,102) categoryName - -elm (4,1)/(4,300)/(4,301)/(4,302) originalName - -elm (4,1)/(4,300)/(4,301)/(4,113) description - -elm (4,1)/(4,300)/(4,301)/(4,303) asn1Module - -elm (4,1)/? other - - -# -# TargetInfo -# -elm (4,2) targetInfo ExplainCategory -elm (4,2)/(4,600):commonInfo targetCommonInfo - -elm (4,2)/(4,102) targetName TargetName -elm (4,2)/(4,103) recentNews - -elm (4,2)/(4,104) icon - -elm (4,2)/(4,105) namedResultSets - -elm (4,2)/(4,106) multipleDbSearch - -elm (4,2)/(4,107) maxResultSets - -elm (4,2)/(4,108) maxResultSize - -elm (4,2)/(4,109) maxTerms - -elm (4,2)/(4,110) timeoutInterval - -elm (4,2)/(4,111) welcomeMessage - -elm (4,2)/(4,112):contactInfo contactInfo - -elm (4,2)/(4,113) description - -elm (4,2)/(4,114) nicknames - -elm (4,2)/(4,114)/(4,102) nickname - -elm (4,2)/(4,115) usageRestrictions - -elm (4,2)/(4,116) paymentAddr - -elm (4,2)/(4,117) hours - -elm (4,2)/(4,118) dbCombinations - -elm (4,2)/(4,118)/(4,605) databaseList - -elm (4,2)/(4,118)/(4,605)/(4,102) databaseName - -elm (4,2)/(4,119) addresses - -elm (4,2)/(4,119)/(4,120) internetAddress - -elm (4,2)/(4,119)/(4,120)/(4,121) host - -elm (4,2)/(4,119)/(4,120)/(4,122) port - -elm (4,2)/(4,119)/(4,123) otherAddress - -elm (4,2)/(4,119)/(4,123)/(4,124) addressType - -elm (4,2)/(4,119)/(4,123)/(4,121) address - -elm (4,2)/(4,125) languages - -elm (4,2)/(4,125)/(4,126) language - -elm (4,2)/(4,500):accessInfo commonAccessInfo - -elm (4,2)/? other - -# -# DatabaseInfo -# -elm (4,3) databaseInfo ExplainCategory -elm (4,3)/(4,600):commonInfo databaseCommonInfo - -elm (4,3)/(4,102) databaseName DatabaseName -elm (4,3)/(4,226) explainDatabase - -elm (4,3)/(4,114) nicknames - -elm (4,3)/(4,114)/(4,102) nickname - -elm (4,3)/(4,104) icon - -elm (4,3)/(4,201) userFee - -elm (4,3)/(4,202) available Availability -elm (4,3)/(4,203) titleString - -elm (4,3)/(4,227) keywords - -elm (4,3)/(4,227)/(4,1000) keyword - -elm (4,3)/(4,113) description - -elm (4,3)/(4,205) associatedDbs - -elm (4,3)/(4,205)/(4,605) databaseList - -elm (4,3)/(4,205)/(4,605)/(4,102) databaseName - -elm (4,3)/(4,206) subDbs - -elm (4,3)/(4,206)/(4,605) databaseList - -elm (4,3)/(4,206)/(4,605)/(4,102) databaseName - -elm (4,3)/(4,207) disclaimers - -elm (4,3)/(4,103) recentNews - -elm (4,3)/(4,209) recordCount - -elm (4,3)/(4,209)/(4,210) recordCountActual - -elm (4,3)/(4,209)/(4,211) recordCountApprox - -elm (4,3)/(4,212) defaultOrder - -elm (4,3)/(4,213) avRecordSize - -elm (4,3)/(4,214) maxRecordSize - -elm (4,3)/(4,215) hours - -elm (4,3)/(4,216) bestTime - -elm (4,3)/(4,217) lastUpdate - -elm (4,3)/(4,218) updateInterval - -elm (4,3)/(4,219) coverage - -elm (4,3)/(4,220) proprietary - -elm (4,3)/(4,221) copyrightText - -elm (4,3)/(4,222) copyrightNotice - -elm (4,3)/(4,223):contactInfo producerContactInfo - -elm (4,3)/(4,224):contactInfo supplierContactInfo - -elm (4,3)/(4,225):contactInfo submissionContactInfo - -elm (4,3)/(4,500):accessInfo databaseAccessInfo - -elm (4,3)/? other - -# -# AttributeSetInfo -# -elm (4,7) attributeSetInfo ExplainCategory -elm (4,7)/(4,600):commonInfo attributeSetInfoCommonInfo - -elm (4,7)/(4,1000) attributeSet AttributeSetOID -elm (4,7)/(4,113) description - -elm (4,7)/(4,102) name - -elm (4,7)/(4,750):attributeType attributes - -elm (4,7)/? other - -# -# AttributeDetails -# -elm (4,10) attributeDetails ExplainCategory -elm (4,10)/(4,600):commonInfo attributeDetailsCommonInfo - -elm (4,10)/(4,102) databaseName DatabaseName -elm (4,10)/(4,700) attributesBySet - -elm (4,10)/(4,700)/(4,701):attributeSetDetails attributeSetDetails - -elm (4,10)/(4,716):attributeCombinations attributeCombinations - -elm (4,10)/? other - - diff --git a/tab/explain.att b/tab/explain.att deleted file mode 100644 index d043e66..0000000 --- a/tab/explain.att +++ /dev/null @@ -1,27 +0,0 @@ -# The Explain Attribute Set -# -# $Id: explain.att,v 1.3 1998-10-13 20:52:19 adam Exp $ -name explain -reference Exp-1 - -att 1 ExplainCategory -att 2 HumanStringLanguage -att 3 DatabaseName -att 4 Targetname -att 5 AttributeSetOID -att 6 RecordSyntaxOID -att 7 TagSetOID -att 8 ExtendedServicesOID -att 9 DateAdded -att 10 DateChanged -att 11 DateExpired -att 12 ElementSetName -att 13 ProcessingContext -att 14 ProcessingName -att 15 TermListName -att 16 SchemaOID -att 17 Producer -att 18 Supplier -att 19 Availability -att 20 Proprietary -att 21 UserFee diff --git a/tab/explain.tag b/tab/explain.tag deleted file mode 100644 index 2fcdd06..0000000 --- a/tab/explain.tag +++ /dev/null @@ -1,175 +0,0 @@ -# Tag set for internal Explain-data management -# -# $Id: explain.tag,v 1.10 1998-10-13 20:52:20 adam Exp $ - -name explain -reference Explain-tagset -type 4 -include tagsetm.tag - -# -# Explain categories -# -tag 1 categoryList structured -tag 2 targetInfo structured -tag 3 databaseInfo structured -tag 4 schemaInfo structured -tag 5 tagSetInfo structured -tag 6 recordSyntaxInfo structured -tag 7 attributeSetInfo structured -tag 8 termListInfo structured -tag 9 extendedServicesInfo structured -tag 10 attributeDetails structured -tag 11 termListDetails structured -tag 12 elementSetDetails structured -tag 13 retrievalRecordDetails structured -tag 14 sortDetails structured -tag 15 processing structured -tag 16 variants structured -tag 17 units structured - -# -# TargetInfo -# -tag 102 name string -tag 103 recentNews string -tag 104 icon structured -tag 105 namedResultSets bool -tag 106 multipleDbSearch bool -tag 107 maxResultSets numeric -tag 108 maxResultSize numeric -tag 109 maxTerms numeric -tag 110 timeoutInterval intunit -tag 111 welcomeMessage string -tag 112 contactInfo structured -tag 113 description string -tag 114 nicknames structured -tag 115 usageRest string -tag 116 paymentAddr string -tag 117 hours string -tag 118 dbCombinations structured -tag 119 addresses structured -tag 120 internetAddress structured -tag 121 host string -tag 122 port numeric -tag 123 otherAddress structured -tag 124 addressType string -tag 125 languages structured -tag 126 language string -tag 127 address string -tag 128 email string -tag 129 phone string - -# -# DatabaseInfo -# -tag 201 userFee bool -tag 202 available bool -tag 203 titleString string -tag 205 associatedDbs structured -tag 206 subDbs structured -tag 207 disclaimers string -tag 209 recordCount structured -tag 210 recordCountActual numeric -tag 211 recordCountApprox numeric -tag 212 defaultOrder string -tag 213 avRecordSize numeric -tag 214 maxRecordSize numeric -tag 215 hours string -tag 216 bestTime string -tag 217 lastUpdate generalizedtime -tag 218 updateInterval intunit -tag 219 coverage string -tag 220 proprietary bool -tag 221 copyrightText string -tag 222 copyrightNotice string -tag 223 producerContactInfo structured -tag 224 supplierContactInfo structured -tag 225 submissionContactInfo structured -tag 226 explainDatabase null -tag 227 keywords string - -# CategoryList -tag 300 categories structured -tag 301 category structured -tag 302 originalName string -tag 303 asn1Module string -# -# AccessInfo -# -tag 500 accessinfo structured -tag 501 queryTypesSupported structured -tag 503 diagnosticSets structured -tag 505 attributeSetIds structured -tag 507 schemas structured -tag 509 recordSyntaxes structured -tag 511 resourceChallenges structured -tag 513 restrictedAccess structured -tag 514 costInfo structured -tag 515 variantSets structured -tag 516 elementSetNames structured -tag 517 unitSystems structured -tag 518 queryTypeDetails structured -tag 519 rpnCapabilities structured -tag 520 Iso8777Capabilities structured -tag 521 privateCapabilities structured - -tag 550 rpnOperators structured -tag 551 rpnOperator numeric -tag 552 resultSetAsOperandSupported bool -tag 553 restrictionOperandSupported bool -tag 554 proximitySupport structured -tag 555 anySupport bool -tag 556 proximityUnitsSupported structured -tag 557 proximityUnitSupported structured -tag 558 proximityUnitVal numeric -tag 559 proximityUnitPrivate structured -tag 560 proximityUnitDescription string - -# CommonInfo - -tag 600 commonInfo structured -tag 601 dateAdded generalizedtime -tag 602 dateChanged generalizedtime -tag 603 expiry generalizedtime -tag 604 languageCode string -tag 605 databaseList structured - -# AttributeDetails, AttributeSetDetails - -tag 700 attributesBySet structured -tag 701 attributeSetDetails structured -tag 702 attributesByType structured -tag 703 attributeTypeDetails structured -tag 704 type numeric -tag 705 defaultIfOmitted structured -tag 706 defaultValue structured -tag 708 attributeValues structured -tag 709 attributeValue structured -tag 710 value structured -tag 711 partialSupport string -tag 712 subAttributes structured -tag 713 subAttribute structured -tag 714 superAttributes structured -tag 715 superAttribute structured -tag 716 attributeCombinations structured -tag 717 legalAttributeCombinations structured -tag 718 attributeCombination structured -tag 719 attributeOccurrence structured -tag 720 mustBeSupplied bool -tag 721 anyOrNone string -tag 722 specific structured - -# -# AttributeSetInfo -# -tag 750 attributes structured -tag 751 attributeType structured -tag 752 equivalentAttribute structured -# -# General tags for list members, etc. -# -tag 1000 oid oid -tag 1001 string string -tag 1002 numeric numeric - diff --git a/tab/generic.tag b/tab/generic.tag deleted file mode 100644 index 24771a3..0000000 --- a/tab/generic.tag +++ /dev/null @@ -1,7 +0,0 @@ -# Generic tags - including tagsetM and tagsetG. -# -# $Id: generic.tag,v 1.2 1998-10-13 20:52:21 adam Exp $ -name generic - -include tagsetm.tag -include tagsetg.tag diff --git a/tab/gils-a.est b/tab/gils-a.est deleted file mode 100644 index 2986a40..0000000 --- a/tab/gils-a.est +++ /dev/null @@ -1,7 +0,0 @@ -simpleelement (1,10) -simpleelement (1,12) -simpleelement (2,1) -simpleelement (1,14) -simpleelement (4,1) -simpleelement (4,52) -simpleelement (2,6) diff --git a/tab/gils-b.est b/tab/gils-b.est deleted file mode 100644 index d00e5c0..0000000 --- a/tab/gils-b.est +++ /dev/null @@ -1,10 +0,0 @@ -# $Id: gils-b.est,v 1.7 1996-07-26 13:38:23 quinn Exp $ -simpleelement (1,1) -simpleelement (1,10) -simpleelement (1,12) -simpleelement (2,1) -simpleelement (1,14) -simpleelement (1,16) -simpleelement (4,1) -simpleelement (4,52) -simpleelement (4,70)/(4,17) diff --git a/tab/gils-f.est b/tab/gils-f.est deleted file mode 100644 index 3749157..0000000 --- a/tab/gils-f.est +++ /dev/null @@ -1,2 +0,0 @@ -# $Id: gils-f.est,v 1.1 1996-10-07 15:54:47 quinn Exp $ -simpleelement ? diff --git a/tab/gils-g.est b/tab/gils-g.est deleted file mode 100644 index 0dc1e52..0000000 --- a/tab/gils-g.est +++ /dev/null @@ -1,17 +0,0 @@ -# $Id: gils-g.est,v 1.7 1998-10-13 20:52:22 adam Exp $ -simpleelement (1,1) -simpleelement (1,10) -simpleelement (1,12) -simpleelement (2,1) -simpleelement (1,14) -simpleelement (1,16) -simpleelement (4,1) -simpleelement (4,52) -simpleelement (4,98) - -# -# These are not formally required by GILS -# -simpleelement (4,59) -simpleelement (4,70) -simpleelement (4,97) diff --git a/tab/gils-summary.map b/tab/gils-summary.map deleted file mode 100644 index 69c0d44..0000000 --- a/tab/gils-summary.map +++ /dev/null @@ -1,12 +0,0 @@ -# -# This table maps GILS-records to the Summary (abstract) syntax -# - -targetname summary -targetref Summary - -map title /(4,0) -map originator /(4,1) -map localControlNumber /(4,12) -map rank /(4,14) -map abstract /(4,16) diff --git a/tab/gils-usmarc.map b/tab/gils-usmarc.map deleted file mode 100644 index 40f6c34..0000000 --- a/tab/gils-usmarc.map +++ /dev/null @@ -1,78 +0,0 @@ -# -# This table maps records in the GILS abstract syntax to the USMARC one -# $Id: gils-usmarc.map,v 1.6 2002-05-28 21:11:08 adam Exp $ - -targetname usmarc -targetref USmarc - -map rank /(3,999)/(3,r) -map localControlNumber /(3,001) -map dateLastModified /(3,005) -map ControlIdentifier /(3,035)/(3,a) - -map title /(3,245)/(3,a) -map abstract /(3,520)/(3,a) -map purpose /(3,500)/(3,a) -map originator /(3,710)/(3,a) -map accessConstraints /(3,506)/(3,a) -map useConstraints /(3,540)/(3,a) - -map distributor /(3,270):new nodata -map distributorName /(3,270)/(3,p) -map distributorOrganization /(3,270)/(3,p) -map distributorStreetAddress /(3,270)/(3,a) -map distributorCity /(3,270)/(3,b) -map distributorState /(3,270)/(3,c) -map distributorZipCode /(3,270)/(3,e) -map distributorCountry /(3,270)/(3,d) -map distributorNetworkAddress /(3,270)/(3,m) -map distributorHoursOfService /(3,301)/(3,a) -map distributorTelephone /(3,270)/(3,k) -map distributorFax /(3,270)/(3,l) - -map resourceDescription /(3,037)/(3,f) -map orderProcess /(3,037)/(3,c) -map technicalPrerequisite /(3,538)/(3,a) -map availableTimePeriodStructured /(3,045)/(3,c) -map availableTimePeriodTextual /(3,037)/(3,n) # Unhandled conditional - -map linkage /(3,856)/(3,u) -map linkageType /(3,856)/(3,2) -#map pointOfContact /(3,856)/(3,m) # Look into this - -map pointOfContact /(3,270):new nodata -map contactName /(3,270)/(3,p) -map contactOrganization /(3,270)/(3,p) -map contactStreetAddress /(3,270)/(3,a) -map contactCity /(3,270)/(3,b) -map contactState /(3,270)/(3,c) -map contactZipCode /(3,270)/(3,e) -map contactCountry /(3,270)/(3,d) -map contactNetworkAddress /(3,270)/(3,m) -map contactHoursOfService /(3,301)/(3,a) -map contactTelephone /(3,270)/(3,k) -map contactFax /(3,270)/(3,l) - -map recordSource /(3,040)/(3,a) -map agencyProgram /(3,500)/(3,a) -map sourcesOfData /(3,537)/(3,a) -map controlledTerm /(3,650)/(3,a) -map thesaurus /(3,650)/(3,2) -map localSubjectTerm /(3,653)/(3,a) -map methodology /(3,567)/(3,a) - -map boundingrectangle /(3,034):new nodata -map westernMost /(3,034)/(3,d) -map easternMost /(3,034)/(3,e) -map northernMost /(3,034)/(3,f) -map southernMost /(3,034)/(3,g) - -map geographicKeywordName /(3,651)/(3,a) -map geographicKeywordType /(3,655)/(3,z) # Probably incorrect -map timeperiodStructured /(3,045)/(3,c) -map timeperiodTextual /(3,513)/(3,b) -map crossReference /(3,787):new nodata -map crossReferenceTitle /(3,787)/(3,t) -map crossReferenceLinkage /(3,787)/(3,w) - -map supplementalInformation /(3,500)/(3,a) diff --git a/tab/gils-variant.est b/tab/gils-variant.est deleted file mode 100644 index cb91cbd..0000000 --- a/tab/gils-variant.est +++ /dev/null @@ -1,15 +0,0 @@ -# -# This is the WAIS VARIANT element set description. -# The empty variant parameters to the simpleelement statements simply -# override the default. -# - -defaultvariantrequest (9,1,@) (6,5,@) # No data; variant list. - -simpleelement (1,10) variant -simpleelement (1,12) variant -simpleelement (2,1) variant -simpleelement (2,6) -simpleelement (1,14) variant -simpleelement (4,1) -simpleelement (4,52) diff --git a/tab/gils.abs b/tab/gils.abs deleted file mode 100644 index 27c6d0e..0000000 --- a/tab/gils.abs +++ /dev/null @@ -1,146 +0,0 @@ -# This is the abstract syntax (and most of the top-level profile info) -# for GILS version 2. -# -# $Id: gils.abs,v 1.18 1998-10-13 20:52:23 adam Exp $ - -name gils -reference GILS-schema -attset gils.att -tagset gils.tag -varset var1.var - -maptab gils-usmarc.map -maptab gils-summary.map - -# Element set names - -esetname VARIANT gils-variant.est # for WAIS-compliance -esetname B gils-b.est -esetname G gils-g.est -esetname W gils-b.est # We don't really do bodyOfDisplay yet. -esetname F @ - -#all Any - -elm (1,1) schemaIdentifier - -elm (1,10) rank - -elm (1,12) url - -elm (1,14) localControlNumber - -elm (2,1) title !:w,!:p,!:s -elm (4,52) originator author-name-corporate -# -# Additional structuring of originator non-standard. -# -elm (4,52)/(2,7) originatorName author-name-corporate -elm (4,52)/(2,10) originatorOrganization author-name-corporate -elm (4,52)/(4,2) originatorStreetAddress author-name-corporate -elm (4,52)/(4,3) originatorCity author-name-corporate -elm (4,52)/(4,4) originatorStateOrProvince author-name-corporate -elm (4,52)/(4,5) originatorZipOrPostalCode author-name-corporate -elm (4,52)/(2,16) originatorCountry author-name-corporate -elm (4,52)/(2,12) originatorNetworkAddress author-name-corporate -elm (4,52)/(4,6) originatorHoursofService author-name-corporate -elm (4,52)/(2,14) originatorTelephone author-name-corporate -elm (4,52)/(2,15) originatorFax author-name-corporate -elm (2,2) author ! -# -# Additional structuring of author non-standard. -# -elm (2,2)/(2,7) authorName author -elm (2,2)/(2,10) authorOrganization author -elm (2,2)/(4,2) authorStreetAddress author -elm (2,2)/(4,3) authorCity author -elm (2,2)/(4,4) authorStateOrProvince author -elm (2,2)/(4,5) authorZipOrPostalCode author -elm (2,2)/(2,16) authorCountry author -elm (2,2)/(2,12) authorNetworkAddress author -elm (2,2)/(4,6) authorHoursofService author -elm (2,2)/(2,14) authorTelephone author -elm (2,2)/(2,15) authorFax author -elm (2,4) dateOfPublication ! -elm (2,3) placeOfPublication place-publication -elm (4,32) languageOfResource code-language -elm (2,6) abstract ! -elm (4,95) controlledSubjectIndex - -elm (4,95)/(4,21) subjectThesaurus - -elm (4,95)/(4,96) subjectTermsControlled controlled-subject-index -elm (4,95)/(4,96)/(4,20) controlledTerm index-terms -elm (4,97) subjectTermsUncontrolled uncontrolled-term -elm (4,97)/(4,22) uncontrolledTerm uncontrolled-term -elm (4,71) spatialDomain ! -elm (4,71)/(4,91) boundingCoordinates ! -elm (4,71)/(4,91)/(4,9) westBoundingCoordinate !:n -elm (4,71)/(4,91)/(4,10) eastBoundingCoordinate !:n -elm (4,71)/(4,91)/(4,11) northBoundingCoordinate !:n -elm (4,71)/(4,91)/(4,12) southBoundingCoordinate !:n -elm (4,71)/(4,92) place ! -elm (4,71)/(4,92)/(4,14) placeKeywordThesaurus - -elm (4,71)/(4,92)/(4,13) placeKeyword place -elm (4,93) timePeriod ! -elm (4,93)/(4,16) timePeriodTextual ! -elm (4,93)/(4,101) timePeriodStructured ! -elm (4,93)/(4,101)/(4,15) beginningDate ! -elm (4,93)/(4,101)/(4,36) endingDate ! -elm (4,70) availability ! -elm (4,70)/(4,33) medium material-type -elm (4,70)/(4,90) distributor ! -elm (4,70)/(4,90)/(2,7) distributorName ! -elm (4,70)/(4,90)/(2,10) distributorOrganization ! -elm (4,70)/(4,90)/(4,2) distributorStreetAddress ! -elm (4,70)/(4,90)/(4,3) distributorCity ! -elm (4,70)/(4,90)/(4,4) distributorStateOrProvince ! -elm (4,70)/(4,90)/(4,5) distributorZipOrPostalCode ! -elm (4,70)/(4,90)/(2,16) distributorCountry ! -elm (4,70)/(4,90)/(2,12) distributorNetworkAddress ! -elm (4,70)/(4,90)/(4,6) distributorHoursofService ! -elm (4,70)/(4,90)/(2,14) distributorTelephone ! -elm (4,70)/(4,90)/(2,15) distributorFax ! -elm (4,70)/(4,7) resourceDescription ! -elm (4,70)/(4,55) orderProcess ! -elm (4,70)/(4,55)/(4,28) orderInformation ! -elm (4,70)/(4,55)/(4,29) cost ! -elm (4,70)/(4,55)/(4,30) costInformation ! -elm (4,70)/(4,8) technicalPrerequisites ! -elm (4,70)/(4,93) availableTimePeriod ! -elm (4,70)/(4,93)/(4,16) availableTimeTextual ! -elm (4,70)/(4,93)/(4,102) availableTimeStructured ! -elm (4,70)/(4,93)/(4,102)/(4,15) beginningDate available-time-structured -elm (4,70)/(4,93)/(4,102)/(4,36) endingDate available-time-structured -elm (4,70)/(4,99) availableLinkage ! -elm (4,70)/(4,99)/(4,18) linkageType ! -elm (4,70)/(4,99)/(4,17) linkage available-linkage:u,linkage:u -elm (4,57) sourcesOfData ! -elm (4,58) methodology ! -elm (4,53) accessConstraints ! -elm (4,53)/(4,25) generalAccessConstraints ! -elm (4,53)/(4,26) originatorDisseminationControl ! -elm (4,53)/(4,27) securityClassificationControl ! -elm (4,54) useConstraints ! -elm (4,94) pointOfContact ! -elm (4,94)/(2,7) contactName ! -elm (4,94)/(2,10) contactOrganization ! -elm (4,94)/(4,2) contactStreetAddress ! -elm (4,94)/(4,3) contactCity ! -elm (4,94)/(4,4) contactStateOrProvince ! -elm (4,94)/(4,5) contactZipOrPostalCode ! -elm (4,94)/(2,16) contactCountry ! -elm (4,94)/(2,12) contactNetworkAddress ! -elm (4,94)/(4,6) contactHoursOfService ! -elm (4,94)/(2,14) contactTelephone ! -elm (4,94)/(2,15) contactFax ! -elm (4,59) supplementalInformation - -elm (4,51) purpose ! -elm (4,56) agencyProgram ! -elm (4,98) crossReference ! -elm (4,98)/(2,1) crossReferenceTitle ! -elm (4,98)/(4,35) crossReferenceRelationship ! -elm (4,98)/(4,100) crossReferenceLinkage ! -elm (4,98)/(4,100)/(4,18) linkageType - -elm (4,98)/(4,100)/(4,17) linkage cross-reference-linkage:u -elm (4,31) scheduleNumber ! -elm (4,1) controlIdentifier identifier-standard -elm (4,23) originalControlIdentifier ! -elm (4,19) recordSource ! -elm (4,34) languageOfRecord ! -elm (1,16) dateOfLastModification date/time-last-modified:w,date/time-last-modified:s -elm (4,24) recordReviewDate ! diff --git a/tab/gils.att b/tab/gils.att deleted file mode 100644 index d1ae8e9..0000000 --- a/tab/gils.att +++ /dev/null @@ -1,79 +0,0 @@ -# $Id: gils.att,v 1.5 1998-10-13 20:52:24 adam Exp $ -name gils -reference GILS-attset -include bib1.att - -att 2000 Distributor -att 2001 Distributor-Name -att 2002 Index-Terms # Subject-Terms-Contr. -att 2003 Purpose -att 2004 General-Access-Constraints -att 2005 Use-Constraints -att 2006 Distributor-Organization -att 2007 Distributor-Street-Address -att 2008 Distributor-City -att 2009 Distributor-State-or-Province -att 2010 Distributor-Zip-or-Postal-Code -att 2011 Distributor-Country -att 2012 Distributor-Network-Address -att 2013 Distributor-Hours-of-Service -att 2014 Distributor-Telephone -att 2015 Distributor-Fax -att 2016 Resource-Description -att 2017 Order-Information -att 2018 Technical-Prerequisites -att 2019 Available-Time-Structured -att 2020 Available-Time-Textual -att 2021 Linkage -att 2022 Linkage-Type -att 2023 Contact-Name -att 2024 Contact-Organization -att 2025 Contact-Street-Address -att 2026 Contact-City -att 2027 Contact-State-or-Province -att 2028 Contact-Zip-or-Postal-Code -att 2029 Contact-Country -att 2030 Contact-Network-Address -att 2031 Contact-Hours-of-Service -att 2032 Contact-Telephone -att 2033 Contact-Fax -att 2034 Agency-Program -att 2035 Sources-of-Data -att 2036 Subject-Thesaurus -att 2037 Methodology -att 2038 West-Bounding-Coordinate -att 2039 East-Bounding-Coordinate -att 2040 North-Bounding-Coordinate -att 2041 South-Bounding-Coordinate -att 2042 Place-Keyword -att 2043 Place-Keyword-Thesaurus -att 2044 Time-Period-Structured -att 2045 Time-Period-Textual -att 2046 Cross-Reference-Title -att 2047 Cross-Reference-Linkage -att 2049 Original-Control-Identifier -att 2050 Supplemental-Information -att 2051 Record-Review-Date -att 2052 Originator-Dissemination-Control -att 2053 Security-Classification-Control -att 2054 Cost -att 2055 Cost-Information -att 2056 Schedule-Number -att 2057 Controlled-Subject-Index -att 2058 Uncontrolled-Term -att 2059 Spatial-Domain -att 2060 Bounding-Coordinates -att 2061 Place -att 2062 Time-Period -att 2063 Availability -att 2064 Order-Process -att 2065 Available-Time-Period -att 2066 Access-Constraints -att 2067 Point-of-Contact -att 2068 Cross-Reference -att 2069 Available-Linkage -att 2070 Cross-Reference-Relationship -att 2071 Language-of-Record -att 2072 Beginning-Date -att 2073 Ending-Date -att 2074 Controlled-Term diff --git a/tab/gils.tag b/tab/gils.tag deleted file mode 100644 index 0b35084..0000000 --- a/tab/gils.tag +++ /dev/null @@ -1,68 +0,0 @@ -# Tag set for GILS version 2. -# -# $Id: gils.tag,v 1.7 1998-10-13 20:52:25 adam Exp $ -name gils -type 4 -include tagsetm.tag -include tagsetg.tag - -tag 1 controlIdentifier string -tag 2 streetAddress string -tag 3 city string -tag 4 stateOrProvince string -tag 5 zipOrPostalCode string -tag 6 hoursOfService string -tag 7 resourceDescription string -tag 8 technicalPrerequisites string -tag 9 westBoundingCoordinate intUnit -tag 10 eastBoundingCoordinate intUnit -tag 11 northBoundingCoordinate intUnit -tag 12 southBoundingCoordinate intUnit -tag 13 placeKeyword string -tag 14 placeKeywordThesaurus string -tag 15 beginningDate GeneralizedTime -tag 16 timePeriodTextual string -tag 17 linkage string -tag 18 linkageType string -tag 19 recordSource string -tag 20 controlledTerm string -tag 21 subjectThesaurus string -tag 22 uncontrolledTerm string -tag 23 originalControlIdentifier string -tag 24 recordReviewDate GeneralizedTime -tag 25 generalAccessConstraints string -tag 26 originatorDisseminationControl string -tag 27 securityClassificationControl string -tag 28 orderInformation string -tag 29 cost bool -tag 30 costInformation string -tag 31 scheduleNumber string -tag 32 languageOfResource string -tag 33 medium string -tag 34 languageOfRecord string -tag 35 relationship string -tag 36 endingDate GeneralizedTime -tag 51 purpose structured -tag 52 originator structured -tag 53 accessConstraints structured -tag 54 useConstraints structured -tag 55 orderProcess structured -tag 56 agencyProgram structured -tag 57 sourcesOfData structured -tag 58 methodology structured -tag 59 supplementalInformation structured -tag 70 availability structured -tag 71 spatialDomain structured -tag 90 distributor structured -tag 91 boundingCoordinates structured -tag 92 place structured -tag 93 timePeriod structured -tag 94 pointOfContact structured -tag 95 controlledSubjectIndex structured -tag 96 subjectTermsControlled structured -tag 97 subjectTermsUncontrolled structured -tag 98 crossReference structured -tag 99 availableLinkage structured -tag 100 crossReferenceLinkage structured -tag 101 timePeriodStructured structured -tag 102 availableTimeStructured structured diff --git a/tab/meta-b.est b/tab/meta-b.est deleted file mode 100644 index c2fd618..0000000 --- a/tab/meta-b.est +++ /dev/null @@ -1,7 +0,0 @@ -simpleelement (1,10) -simpleelement (1,12) -simpleelement (2,1) -simpleelement (1,14) -simpleelement (4,5) -simpleelement (2,3) -simpleelement (2,2):all diff --git a/tab/meta-usmarc.map b/tab/meta-usmarc.map deleted file mode 100644 index 47a2428..0000000 --- a/tab/meta-usmarc.map +++ /dev/null @@ -1,23 +0,0 @@ -# Meta to USMARC conversion -# $Id: meta-usmarc.map,v 1.2 2002-05-28 21:11:08 adam Exp $ -targetname usmarc -targetref USmarc - -map localControlNumber /(3,001) -map dateLastModified /(3,005) - -map subject /(3,653)/(3,a) -map title /(3,245)/(3,a) -map author /(3,700)/(3,a) -map publisher /(3,260)/(3,b) -map otheragent /(3,710)/(3,a) -map date /(3,260)/(3,c) -map identifier /(3,024)/(3,a) -# objectType skipped for now -map form /(3,538)/(3,a) -map relation /(3,787)/(3,a) # complexity here -map language /(3,041)/(3,a) -map source /(3,786)/(3,a) -# coverage skipped for now - -map abstract /(3,520)/(3,a) diff --git a/tab/meta.abs b/tab/meta.abs deleted file mode 100644 index a15f9f4..0000000 --- a/tab/meta.abs +++ /dev/null @@ -1,33 +0,0 @@ -# This is a simple profile based on the Dublin Core of metadata elements. -# -# $Id: meta.abs,v 1.6 1998-10-14 14:24:08 perhans Exp $ - -name meta -attset bib1.att -tagset meta.tag -varset var1.var - -esetname F @ -esetname B meta-b.est - -maptab meta-usmarc.map - -elm (2,1) title Title:w,Title:p -elm (2,2) creator Author:w,Author:p -elm (2,21) subject Subject-heading -elm (2,17) description - -elm (2,31) publisher Publisher -elm (2,32) contributor - -elm (2,4) date Date -elm (2,22) type Content-type -elm (2,27) format Material-type -elm (2,28) identifier - -elm (2,33) source - -elm (2,20) language Code-language -elm (2,30) relation - -elm (2,34) coverage - -elm (2,29) rights - - -# These tags are required by Zebra for GRS-1 generation -elm (1,10) rank - -elm (1,14) localControlNumber Local-number diff --git a/tab/meta.tag b/tab/meta.tag deleted file mode 100644 index a888c1d..0000000 --- a/tab/meta.tag +++ /dev/null @@ -1,4 +0,0 @@ -name meta -type 4 -include tagsetg.tag -include tagsetm.tag diff --git a/tab/summary.abs b/tab/summary.abs deleted file mode 100644 index 3144997..0000000 --- a/tab/summary.abs +++ /dev/null @@ -1,26 +0,0 @@ -# Summary record abstract syntax -# -# $Id: summary.abs,v 1.2 1998-10-13 20:52:27 adam Exp $ - -name summary -tagset summary.tag -attset bib1.att -reference Summary - -elm (4,0) title ! -elm (4,1) author ! -elm (4,2) callNumber - -elm (4,3) recordType - -elm (4,4) bibliographicLevel - -elm (4,5) formats - -elm (4,5)/(4,6) format - -elm (4,5)/(4,6)/(4,7) format-type - -elm (4,5)/(4,6)/(4,8) format-size - -elm (4,5)/(4,6)/(4,9) format-bestPosn - -elm (4,10) publicationPlace - -elm (4,11) publicationDate - -elm (4,12) targetSystemKey - -elm (4,13) satisfyingElement - -elm (4,14) rank - -elm (4,15) documentId - -elm (4,16) otherInformation - diff --git a/tab/summary.tag b/tab/summary.tag deleted file mode 100644 index b49edeb..0000000 --- a/tab/summary.tag +++ /dev/null @@ -1,27 +0,0 @@ -# Tagset for Summary profile -# -# $Id: summary.tag,v 1.2 1998-10-13 20:52:28 adam Exp $ - -name summary -type 4 - -tag 0 title string -tag 1 author string -tag 2 callNumber string -tag 3 recordType string -tag 4 bibliographicLevel string - -tag 5 formats structured -tag 6 format structured -tag 7 type string -tag 8 size numeric -tag 9 bestPosn numeric - -tag 10 publicationPlace string -tag 11 publicationDate string -tag 12 targetSystemKey string -tag 13 satisfyingElement string -tag 14 rank numeric -tag 15 documentId string -tag 16 abstract string -tag 17 otherInformation structured diff --git a/tab/tagsetg.tag b/tab/tagsetg.tag deleted file mode 100644 index 7144e63..0000000 --- a/tab/tagsetg.tag +++ /dev/null @@ -1,41 +0,0 @@ -# TagSet-G Tags -# $Id: tagsetg.tag,v 1.4 1998-11-05 10:24:53 quinn Exp $ -name tagsetg -reference TagsetG -type 2 - -tag 1 title string -tag 2 author string -tag 3 publicationPlace string -tag 4 publicationDate/date-of-publication string -tag 5 documentId string -tag 6 abstract string -tag 7 name string -tag 8 dateTime generalizedtime -tag 9 displayObject octetstring -tag 10 organization/organisation string -tag 11 postalAddress string -tag 12 networkAddress string -tag 13 eMailAddress string -tag 14 phoneNumber/telephone string -tag 15 faxNumber/fax string -tag 16 country string -tag 17 description string -tag 18 time intunit -tag 19 documentcontent octetstring -tag 20 language string -tag 21 subject string -tag 22 resourceType string -tag 23 city string -tag 24 stateOrProvince string -tag 25 zipOrPostalCode string -tag 26 cost string -tag 27 format string -tag 28 identifier string -tag 29 rights string -tag 30 relation string -tag 31 publisher string -tag 32 contributor string -tag 33 source string -tag 34 coverage string -tag 35 private string diff --git a/tab/tagsetm.tag b/tab/tagsetm.tag deleted file mode 100644 index 37b8111..0000000 --- a/tab/tagsetm.tag +++ /dev/null @@ -1,33 +0,0 @@ -# TagSet-M Tags -# -# $Id: tagsetm.tag,v 1.5 1998-10-13 20:52:29 adam Exp $ -name tagsetm -reference TagsetM -type 1 - -tag 1 schemaIdentifier oid -tag 2 elementsOrdered bool -tag 3 elementOrdering int -tag 4 defaultTagType int -tag 5 defaultVariantSetId oid -tag 6 defaultVariantSpec structured -tag 7 processingInstructions string -tag 8 recordUsage int -tag 9 restriction string -tag 10 rank int -tag 11 userMessage string -tag 12 url string -tag 13 record structured -tag 14 local-control-number string -tag 15 creation-date generalizedtime -tag 16 dateOfLastModification/lastModified generalizedtime -tag 17 dateOfLastReview generalizedtime -tag 18 score int -tag 19 wellKnown string -tag 20 recordWrapper structured -tag 21 defaultTagSetId oid -tag 22 languageOfRecord string -tag 23 type string -tag 24 scheme string -tag 25 costInfo string -tag 26 costFlag bool diff --git a/tab/usmarc-b.est b/tab/usmarc-b.est deleted file mode 100644 index 9a36353..0000000 --- a/tab/usmarc-b.est +++ /dev/null @@ -1,6 +0,0 @@ -simpleelement (3,'001) -simpleelement (3,'035) -simpleelement (3,'245) -simpleelement (3,'100) -simpleelement (3,'710) -simpleelement (3,'700) diff --git a/tab/usmarc.abs b/tab/usmarc.abs deleted file mode 100644 index ed05d92..0000000 --- a/tab/usmarc.abs +++ /dev/null @@ -1,36 +0,0 @@ -# $Id: usmarc.abs,v 1.6 1998-10-13 20:52:30 adam Exp $ -name usmarc -reference USmarc -attset bib1.att -tagset usmarc.tag - -marc usmarc.mar - -esetname B usmarc-b.est -esetname F @ - -# All 245 subfields mapped to title (word) and -# 245 subfield a mapped to tile (phrase). -elm 245 title - -elm 245/? title !:w -elm 245/?/a title !:w,!:p - -# 100 mapped to Author-name-personal and Author. -elm 100 Author-name-personal - -elm 100/? Author-name-personal !:w,!:p,Author:w,Author:p - -# 110 mapped to Author-name-corporate and Author -elm 110 Author-name-corporate - -elm 110/? Author-name-corporate !:w,!:p,Author:w,Author:p - -# 111 mapped to Author-name-conference and Author -elm 111 Author-name-conference - -elm 111/? Author-name-conference !:w,!:p,Author:w,Author:p - -# Tag 260 subfield a mapped to Place-publication -elm 260 Place-publication - -elm 260/? Place-publication - -elm 260/?/a Place-publication !:w -elm 260/?/b Publisher !:w -elm 260/?/c Date !:w - diff --git a/tab/usmarc.mar b/tab/usmarc.mar deleted file mode 100644 index 32149d6..0000000 --- a/tab/usmarc.mar +++ /dev/null @@ -1,3 +0,0 @@ -# $Id: usmarc.mar,v 1.2 1998-10-13 20:52:31 adam Exp $ -name usmarc -reference USmarc diff --git a/tab/usmarc.tag b/tab/usmarc.tag deleted file mode 100644 index 8c48894..0000000 --- a/tab/usmarc.tag +++ /dev/null @@ -1,12 +0,0 @@ -# Pseudo-tagset for USMARC -# -# $Id: usmarc.tag,v 1.2 1998-10-13 20:52:32 adam Exp $ - -name usmarc -type 4 -include tagsetm.tag - -#tag 1 a string -#tag 2 b string -tag 245 245 string -tag 100 100 string diff --git a/tab/var1.var b/tab/var1.var deleted file mode 100644 index 89e0799..0000000 --- a/tab/var1.var +++ /dev/null @@ -1,64 +0,0 @@ -# Definition of the variant set Variant-1. -# Variant triple syntax is ''. Eg. -# or . -# -# $Id: var1.var,v 1.3 1998-10-13 20:52:33 adam Exp $ - -name variant-1 -reference Variant-1 - -class 1 variantId - - type 1 variantId octetstring - -class 2 body - - type 1 iana string - type 2 z39.50 string - type 3 other string - -class 3 format - - type 1 characters-per-line int - type 2 line-length int - - # More types here...... - -class 4 lang - - type 1 lang string - type 2 charset int - type 3 charset-id oid - type 4 encoding-id oid - type 5 private-string string - -class 5 piece - - type 1 fragment-wanted int - type 2 fragment-returned int - type 3 start intunit - type 4 end intunit - type 5 howmuch intunit - type 6 step intunit - type 7 targettoken octetstring - -class 6 metadata-requested - - type 1 cost intunit - type 2 size intunit - type 3 hitsvar null - type 4 hitsnonvar null - type 5 variantlist null - type 6 isvariantsupported null - type 7 documentdescriptor null - type 8 surrogateinformation null - type 998 allmetadata null - type 999 othermetadata oid - -class 7 metadata-returned - - type 1 cost intunit - - # More... - -# More classes, too... diff --git a/tab/wais-b.est b/tab/wais-b.est deleted file mode 100644 index 4100a20..0000000 --- a/tab/wais-b.est +++ /dev/null @@ -1,9 +0,0 @@ -# -# WAIS eset. -# - -simpleelement (2,1) -simpleelement (2,7) -simpleelement (1,16) -simpleelement (1,18) -simpleelement (1,14) diff --git a/tab/wais-variant.est b/tab/wais-variant.est deleted file mode 100644 index 9e17d26..0000000 --- a/tab/wais-variant.est +++ /dev/null @@ -1,19 +0,0 @@ -# -# WAIS variant eset. -# - -# -# Default is no data, variant-list, please. -# - -simpleelement ?:all variant (9,1,@) (6,5,@) - -# -# Empty variant-requests for the well-known elements to override default. -# - -simpleelement (2,1) variant -simpleelement (2,7) variant -simpleelement (1,16) variant -simpleelement (1,18) variant -simpleelement (1,14) variant diff --git a/tab/wais.abs b/tab/wais.abs deleted file mode 100644 index 839f0a2..0000000 --- a/tab/wais.abs +++ /dev/null @@ -1,24 +0,0 @@ -# WAIS profile -# -# $Id: wais.abs,v 1.5 1998-10-13 20:52:34 adam Exp $ - -name wais -reference WAIS-schema -attset bib1.att -tagset generic.tag - -varset var1.var - -esetname B wais-b.est -esetname F @ -esetname VARIANT wais-variant.est - -elm (2,1) Title !:p,!:w -elm (2,7) Name !:p,!:w -elm (2,8) Date ! -elm (1,18) Score - -elm (1,14) RecordId Local-number - -# Tags below this point are unofficial. - -elm Body BodyOfText !