IDZEBRA 2.2.11
mod_dom.c File Reference
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <ctype.h>
#include <stdarg.h>
#include <yaz/diagbib1.h>
#include <yaz/tpath.h>
#include <yaz/snprintf.h>
#include <libxml/xmlversion.h>
#include <libxml/parser.h>
#include <libxml/tree.h>
#include <libxml/xmlIO.h>
#include <libxml/xmlreader.h>
#include <libxslt/transform.h>
#include <libxslt/xsltutils.h>
#include <idzebra/util.h>
#include <idzebra/recctrl.h>
#include <yaz/oid_db.h>

Go to the source code of this file.

Data Structures

struct  convert_xslt
struct  convert_meta
struct  convert_s
struct  filter_extract
struct  filter_store
struct  filter_retrieve
struct  filter_input
struct  filter_info

Macros

#define ZEBRA_DOM_NS   "http://indexdata.com/zebra-2.0"
#define ZEBRA_PI_NAME   "zebra-2.0"
#define DOM_INPUT_XMLREADER   1
#define DOM_INPUT_MARC   2
#define XML_STRCMP(a, b)
#define XML_STRLEN(a)
#define FOR_EACH_ELEMENT(ptr)

Enumerations

enum  convert_type { convert_xslt_type , convert_meta_type }

Functions

static void dom_log (int level, struct filter_info *tinfo, xmlNodePtr ptr, const char *fmt,...)
static void set_param_str (const char **params, const char *name, const char *value, NMEM nmem)
static void set_param_int (const char **params, const char *name, zint value, NMEM nmem)
static void * filter_init (Res res, RecType recType)
static int attr_content (struct _xmlAttr *attr, const char *name, const char **dst_content)
static void destroy_xsp (struct convert_s *c)
static void destroy_dom (struct filter_info *tinfo)
static ZEBRA_RES parse_convert (struct filter_info *tinfo, xmlNodePtr ptr, struct convert_s **l)
static int process_meta (struct filter_info *tinfo, xmlDocPtr doc, xmlNodePtr node, struct recRetrieveCtrl *retctr)
static ZEBRA_RES perform_convert (struct filter_info *tinfo, struct recExtractCtrl *extctr, struct recRetrieveCtrl *retctr, struct convert_s *convert, const char **params, xmlDocPtr *doc, xsltStylesheetPtr *last_xsp)
static struct filter_input * new_input (struct filter_info *tinfo, int type)
static ZEBRA_RES parse_input (struct filter_info *tinfo, xmlNodePtr ptr, const char *syntax, const char *name)
static ZEBRA_RES parse_dom (struct filter_info *tinfo, const char *fname)
static struct filter_retrieve * lookup_retrieve (struct filter_info *tinfo, const char *est)
static ZEBRA_RES filter_config (void *clientData, Res res, const char *args)
static void filter_destroy (void *clientData)
static int ioread_ex (void *context, char *buffer, int len)
static int ioclose_ex (void *context)
static void index_value_of (struct filter_info *tinfo, struct recExtractCtrl *extctr, RecWord *recword, xmlNodePtr node, const char *index_p)
static void set_record_info (struct filter_info *tinfo, struct recExtractCtrl *extctr, xmlNodePtr node, const char *id_p, const char *rank_p, const char *type_p)
static void process_xml_element_node (struct filter_info *tinfo, struct recExtractCtrl *extctr, RecWord *recword, xmlNodePtr node)
static void process_xml_element_zebra_node (struct filter_info *tinfo, struct recExtractCtrl *extctr, RecWord *recword, xmlNodePtr node)
static int attr_content_pi (const char **c_ptr, const char *name, char *value, size_t value_max)
static void process_xml_pi_node (struct filter_info *tinfo, struct recExtractCtrl *extctr, xmlNodePtr node, const char **index_pp)
static void extract_dom_doc_node (struct filter_info *tinfo, struct recExtractCtrl *extctr, xmlDocPtr doc)
static int convert_extract_doc (struct filter_info *tinfo, struct filter_input *input, struct recExtractCtrl *p, xmlDocPtr doc)
static int extract_xml_split (struct filter_info *tinfo, struct filter_input *input, struct recExtractCtrl *p)
static int extract_xml_full (struct filter_info *tinfo, struct filter_input *input, struct recExtractCtrl *p)
static int extract_iso2709 (struct filter_info *tinfo, struct filter_input *input, struct recExtractCtrl *p)
static int filter_extract (void *clientData, struct recExtractCtrl *p)
static int ioread_ret (void *context, char *buffer, int len)
static int ioclose_ret (void *context)
static int filter_retrieve (void *clientData, struct recRetrieveCtrl *p)

Variables

static const char * zebra_dom_ns = ZEBRA_DOM_NS
static const char * zebra_pi_name = ZEBRA_PI_NAME
static struct recType filter_type
RecType idzebra_filter []

Macro Definition Documentation

◆ DOM_INPUT_MARC

#define DOM_INPUT_MARC   2

Definition at line 97 of file mod_dom.c.

Referenced by destroy_dom(), filter_extract(), and parse_input().

◆ DOM_INPUT_XMLREADER

#define DOM_INPUT_XMLREADER   1

Definition at line 96 of file mod_dom.c.

Referenced by destroy_dom(), filter_extract(), parse_dom(), and parse_input().

◆ FOR_EACH_ELEMENT

#define FOR_EACH_ELEMENT ( ptr)
Value:
for (; ptr; ptr = ptr->next) if (ptr->type == XML_ELEMENT_NODE)

Definition at line 137 of file mod_dom.c.

Referenced by parse_convert(), parse_dom(), and parse_input().

◆ XML_STRCMP

#define XML_STRCMP ( a,
b )
Value:
strcmp((char*)a, b)

Definition at line 133 of file mod_dom.c.

Referenced by attr_content(), parse_convert(), parse_dom(), parse_input(), process_meta(), and process_xml_element_zebra_node().

◆ XML_STRLEN

#define XML_STRLEN ( a)
Value:
strlen((char*)a)

Definition at line 134 of file mod_dom.c.

◆ ZEBRA_DOM_NS

#define ZEBRA_DOM_NS   "http://indexdata.com/zebra-2.0"

Definition at line 50 of file mod_dom.c.

◆ ZEBRA_PI_NAME

#define ZEBRA_PI_NAME   "zebra-2.0"

Definition at line 54 of file mod_dom.c.

Enumeration Type Documentation

◆ convert_type

Enumerator
convert_xslt_type 
convert_meta_type 

Definition at line 57 of file mod_dom.c.

Function Documentation

◆ attr_content()

int attr_content ( struct _xmlAttr * attr,
const char * name,
const char ** dst_content )
static

Definition at line 213 of file mod_dom.c.

References XML_STRCMP.

Referenced by parse_convert(), parse_dom(), parse_input(), process_meta(), and process_xml_element_zebra_node().

◆ attr_content_pi()

int attr_content_pi ( const char ** c_ptr,
const char * name,
char * value,
size_t value_max )
static

Definition at line 1085 of file mod_dom.c.

Referenced by process_xml_pi_node().

◆ convert_extract_doc()

◆ destroy_dom()

◆ destroy_xsp()

void destroy_xsp ( struct convert_s * c)
static

◆ dom_log()

void dom_log ( int level,
struct filter_info * tinfo,
xmlNodePtr ptr,
const char * fmt,
... )
static

◆ extract_dom_doc_node()

void extract_dom_doc_node ( struct filter_info * tinfo,
struct recExtractCtrl * extctr,
xmlDocPtr doc )
static

Definition at line 1217 of file mod_dom.c.

References recExtractCtrl::init, and process_xml_element_node().

Referenced by convert_extract_doc().

◆ extract_iso2709()

◆ extract_xml_full()

int extract_xml_full ( struct filter_info * tinfo,
struct filter_input * input,
struct recExtractCtrl * p )
static

◆ extract_xml_split()

◆ filter_config()

ZEBRA_RES filter_config ( void * clientData,
Res res,
const char * args )
static

◆ filter_destroy()

void filter_destroy ( void * clientData)
static

Definition at line 787 of file mod_dom.c.

References destroy_dom(), filter_info::nmem_config, and filter_info::nmem_record.

◆ filter_extract()

◆ filter_init()

◆ filter_retrieve()

◆ index_value_of()

void index_value_of ( struct filter_info * tinfo,
struct recExtractCtrl * extctr,
RecWord * recword,
xmlNodePtr node,
const char * index_p )
static

◆ ioclose_ex()

int ioclose_ex ( void * context)
static

Definition at line 802 of file mod_dom.c.

◆ ioclose_ret()

int ioclose_ret ( void * context)
static

Definition at line 1497 of file mod_dom.c.

◆ ioread_ex()

int ioread_ex ( void * context,
char * buffer,
int len )
static

Definition at line 796 of file mod_dom.c.

References ZebraRecStream::readf, and recExtractCtrl::stream.

◆ ioread_ret()

int ioread_ret ( void * context,
char * buffer,
int len )
static

Definition at line 1490 of file mod_dom.c.

References ZebraRecStream::readf, and recRetrieveCtrl::stream.

◆ lookup_retrieve()

struct filter_retrieve * lookup_retrieve ( struct filter_info * tinfo,
const char * est )
static

◆ new_input()

struct filter_input * new_input ( struct filter_info * tinfo,
int type )
static

◆ parse_convert()

◆ parse_dom()

◆ parse_input()

◆ perform_convert()

ZEBRA_RES perform_convert ( struct filter_info * tinfo,
struct recExtractCtrl * extctr,
struct recRetrieveCtrl * retctr,
struct convert_s * convert,
const char ** params,
xmlDocPtr * doc,
xsltStylesheetPtr * last_xsp )
static

◆ process_meta()

int process_meta ( struct filter_info * tinfo,
xmlDocPtr doc,
xmlNodePtr node,
struct recRetrieveCtrl * retctr )
static

◆ process_xml_element_node()

void process_xml_element_node ( struct filter_info * tinfo,
struct recExtractCtrl * extctr,
RecWord * recword,
xmlNodePtr node )
static

◆ process_xml_element_zebra_node()

◆ process_xml_pi_node()

void process_xml_pi_node ( struct filter_info * tinfo,
struct recExtractCtrl * extctr,
xmlNodePtr node,
const char ** index_pp )
static

Definition at line 1113 of file mod_dom.c.

References attr_content_pi(), dom_log(), set_record_info(), and zebra_pi_name.

Referenced by process_xml_element_node().

◆ set_param_int()

void set_param_int ( const char ** params,
const char * name,
zint value,
NMEM nmem )
static

Definition at line 179 of file mod_dom.c.

References ZINT_FORMAT.

Referenced by filter_retrieve().

◆ set_param_str()

void set_param_str ( const char ** params,
const char * name,
const char * value,
NMEM nmem )
static

Definition at line 167 of file mod_dom.c.

Referenced by convert_extract_doc(), and filter_retrieve().

◆ set_record_info()

void set_record_info ( struct filter_info * tinfo,
struct recExtractCtrl * extctr,
xmlNodePtr node,
const char * id_p,
const char * rank_p,
const char * type_p )
static

Variable Documentation

◆ filter_type

struct recType filter_type
static
Initial value:
= {
0,
"dom",
}
static void filter_destroy(void *clientData)
Definition mod_alvis.c:334
static void * filter_init(Res res, RecType recType)
Definition mod_alvis.c:126
static ZEBRA_RES filter_config(void *clientData, Res res, const char *args)
Definition mod_alvis.c:315

Definition at line 1615 of file mod_dom.c.

◆ idzebra_filter

RecType idzebra_filter[]
Initial value:
= {
0,
}
static struct recType filter_type
Definition mod_alvis.c:706

Definition at line 1629 of file mod_dom.c.

◆ zebra_dom_ns

const char* zebra_dom_ns = ZEBRA_DOM_NS
static

Definition at line 51 of file mod_dom.c.

Referenced by convert_extract_doc(), process_meta(), and process_xml_element_zebra_node().

◆ zebra_pi_name

const char* zebra_pi_name = ZEBRA_PI_NAME
static

Definition at line 55 of file mod_dom.c.

Referenced by process_xml_pi_node().