marcdisp.c File Reference

Implements MARC conversion utilities. More...

#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <yaz/marcdisp.h>
#include <yaz/wrbuf.h>
#include <yaz/yaz-util.h>
#include <yaz/nmem_xml.h>
#include <yaz/snprintf.h>
#include <libxml/parser.h>
#include <libxml/tree.h>

Go to the source code of this file.

Data Structures

struct  yaz_marc_datafield
 represets a data field More...
struct  yaz_marc_controlfield
 represents a control field More...
struct  yaz_marc_comment
 a comment node More...
struct  yaz_marc_node
 MARC node. More...
struct  yaz_marc_subfield
 represents a subfield More...
struct  yaz_marc_t_
 the internals of a yaz_marc_t handle More...

Enumerations

enum  yaz_collection_state { no_collection, collection_first, collection_second }
enum  YAZ_MARC_NODE_TYPE { YAZ_MARC_DATAFIELD, YAZ_MARC_CONTROLFIELD, YAZ_MARC_COMMENT, YAZ_MARC_LEADER }
 

node types for yaz_marc_node

More...

Functions

yaz_marc_t yaz_marc_create (void)
 construct yaz_marc_t handle
void yaz_marc_destroy (yaz_marc_t mt)
 destroy yaz_marc_t handle
NMEM yaz_marc_get_nmem (yaz_marc_t mt)
 returns memory for MARC handle
static void marc_iconv_reset (yaz_marc_t mt, WRBUF wr)
static int marc_exec_leader (const char *leader_spec, char *leader, size_t size)
static int yaz_marc_write_xml_turbo_xml (yaz_marc_t mt, xmlNode **root_ptr, const char *ns, const char *format, const char *type)
static struct yaz_marc_nodeyaz_marc_add_node (yaz_marc_t mt)
void yaz_marc_add_controlfield_xml (yaz_marc_t mt, const xmlNode *ptr_tag, const xmlNode *ptr_data)
 adds controlfield to MARC structure using xml Nodes
void yaz_marc_add_controlfield_xml2 (yaz_marc_t mt, char *tag, const xmlNode *ptr_data)
 adds controlfield to MARC structure using xml Nodes for data
void yaz_marc_add_comment (yaz_marc_t mt, char *comment)
 adds MARC comment string
void yaz_marc_cprintf (yaz_marc_t mt, const char *fmt,...)
 adds MARC annotation - printf interface
int yaz_marc_get_debug (yaz_marc_t mt)
 gets debug level for MARC system
void yaz_marc_add_leader (yaz_marc_t mt, const char *leader, size_t leader_len)
void yaz_marc_add_controlfield (yaz_marc_t mt, const char *tag, const char *data, size_t data_len)
 adds controlfield to MARC structure
void yaz_marc_add_datafield (yaz_marc_t mt, const char *tag, const char *indicator, size_t indicator_len)
 adds datafield to MARC structure using strings
int element_name_append_attribute_value (yaz_marc_t mt, WRBUF buffer, const char *attribute_name, char *code_data, size_t code_len)
void yaz_marc_add_datafield_xml (yaz_marc_t mt, const xmlNode *ptr_tag, const char *indicator, size_t indicator_len)
 adds datafield to MARC structure using xml Nodes
void yaz_marc_add_datafield_xml2 (yaz_marc_t mt, char *tag_value, char *indicators)
 adds datafield to MARC structure using xml Nodes
void yaz_marc_datafield_set_indicators (struct yaz_marc_node *n, char *indicator)
void yaz_marc_add_subfield (yaz_marc_t mt, const char *code_data, size_t code_data_len)
 adds subfield to MARC structure
void yaz_marc_set_leader (yaz_marc_t mt, const char *leader_c, int *indicator_length, int *identifier_length, int *base_address, int *length_data_entry, int *length_starting, int *length_implementation)
 sets leader, validates it, and returns important values
void yaz_marc_subfield_str (yaz_marc_t mt, const char *s)
void yaz_marc_endline_str (yaz_marc_t mt, const char *s)
static size_t cdata_one_character (yaz_marc_t mt, const char *buf)
void yaz_marc_reset (yaz_marc_t mt)
 clears memory and MARC record
int yaz_marc_write_check (yaz_marc_t mt, WRBUF wr)
static size_t get_subfield_len (yaz_marc_t mt, const char *data, int identifier_length)
int yaz_marc_write_line (yaz_marc_t mt, WRBUF wr)
 writes record in line format
int yaz_marc_write_trailer (yaz_marc_t mt, WRBUF wr)
 flushes records
void yaz_marc_enable_collection (yaz_marc_t mt)
 enables record collection output
int yaz_marc_write_mode (yaz_marc_t mt, WRBUF wr)
 writes record in mode - given by yaz_marc_xml mode
static int yaz_marc_write_marcxml_wrbuf (yaz_marc_t mt, WRBUF wr, const char *ns, const char *format, const char *type, int turbo)
 common MARC XML/Xchange/turbomarc writer
static int yaz_marc_write_marcxml_ns (yaz_marc_t mt, WRBUF wr, const char *ns, const char *format, const char *type, int turbo)
int yaz_marc_write_marcxml (yaz_marc_t mt, WRBUF wr)
 writes record in MARCXML format
int yaz_marc_write_turbomarc (yaz_marc_t mt, WRBUF wr)
 writes record in TurboMARC format
int yaz_marc_write_marcxchange (yaz_marc_t mt, WRBUF wr, const char *format, const char *type)
 writes record in MarcXchange XML (ISO25577)
void add_marc_datafield_turbo_xml (yaz_marc_t mt, struct yaz_marc_node *n, xmlNode *record_ptr, xmlNsPtr ns_record, WRBUF wr_cdata, int identifier_length)
int yaz_marc_write_xml (yaz_marc_t mt, xmlNode **root_ptr, const char *ns, const char *format, const char *type)
 writes MARC record as libxml2 tree
int yaz_marc_write_iso2709 (yaz_marc_t mt, WRBUF wr)
 writes record in ISO2709 format
int yaz_marc_decode_wrbuf (yaz_marc_t mt, const char *buf, int bsize, WRBUF wr)
 decodes ISO2709/MARC buffer and stores result in WRBUF
int yaz_marc_decode_buf (yaz_marc_t mt, const char *buf, int bsize, const char **result, size_t *rsize)
 decodes ISO2709 buffer using straight buffers
void yaz_marc_xml (yaz_marc_t mt, int xmlmode)
 set XML mode YAZ_MARC_LINE, YAZ_MARCXML, YAZ_MARC_ISO2709 ..
void yaz_marc_debug (yaz_marc_t mt, int level)
 set debug level
void yaz_marc_iconv (yaz_marc_t mt, yaz_iconv_t cd)
 set iconv handle for character set conversion
yaz_iconv_t yaz_marc_get_iconv (yaz_marc_t mt)
 supply iconv handle for character set conversion
void yaz_marc_modify_leader (yaz_marc_t mt, size_t off, const char *str)
 modifies part of the MARC leader
int yaz_marc_leader_spec (yaz_marc_t mt, const char *leader_spec)
 sets leader spec (for modifying bytes in 24 byte leader)
int yaz_marc_decode_formatstr (const char *arg)
 Converts MARC format type to format type(YAZ_MARC_..).
void yaz_marc_write_using_libxml2 (yaz_marc_t mt, int enable)
 Enables or disables writing of MARC XML records using Libxml2.

Variables

static const char * record_name [2] = { "record", "r"}
static const char * leader_name [2] = { "leader", "l"}
static const char * controlfield_name [2] = { "controlfield", "c"}
static const char * datafield_name [2] = { "datafield", "d"}
static const char * indicator_name [2] = { "ind", "i"}
static const char * subfield_name [2] = { "subfield", "s"}

Detailed Description

Implements MARC conversion utilities.

Definition in file marcdisp.c.


Enumeration Type Documentation

Enumerator:
no_collection 
collection_first 
collection_second 

Definition at line 35 of file marcdisp.c.

node types for yaz_marc_node

Enumerator:
YAZ_MARC_DATAFIELD 
YAZ_MARC_CONTROLFIELD 
YAZ_MARC_COMMENT 
YAZ_MARC_LEADER 

Definition at line 42 of file marcdisp.c.


Function Documentation

void add_marc_datafield_turbo_xml ( yaz_marc_t  mt,
struct yaz_marc_node n,
xmlNode *  record_ptr,
xmlNsPtr  ns_record,
WRBUF  wr_cdata,
int  identifier_length 
)
static size_t cdata_one_character ( yaz_marc_t  mt,
const char *  buf 
) [static]

Definition at line 427 of file marcdisp.c.

References yaz_marc_t_::iconv_cd, and yaz_iconv().

Referenced by get_subfield_len().

int element_name_append_attribute_value ( yaz_marc_t  mt,
WRBUF  buffer,
const char *  attribute_name,
char *  code_data,
size_t  code_len 
)
static size_t get_subfield_len ( yaz_marc_t  mt,
const char *  data,
int  identifier_length 
) [static]
static int marc_exec_leader ( const char *  leader_spec,
char *  leader,
size_t  size 
) [static]

Definition at line 1291 of file marcdisp.c.

Referenced by yaz_marc_add_leader(), and yaz_marc_leader_spec().

static void marc_iconv_reset ( yaz_marc_t  mt,
WRBUF  wr 
) [static]
void yaz_marc_add_comment ( yaz_marc_t  mt,
char *  comment 
)

adds MARC comment string

Parameters:
mt handle
comment comment to be added)

Definition at line 182 of file marcdisp.c.

References yaz_marc_node::comment, yaz_marc_t_::nmem, nmem_strdup(), yaz_marc_node::u, yaz_marc_node::which, yaz_marc_add_node(), and YAZ_MARC_COMMENT.

Referenced by yaz_marc_add_controlfield(), yaz_marc_add_subfield(), and yaz_marc_cprintf().

void yaz_marc_add_controlfield ( yaz_marc_t  mt,
const char *  tag,
const char *  data,
size_t  data_len 
)

adds controlfield to MARC structure

Parameters:
mt handle
tag (e.g. "001"
data value for this tag
data_len length of data

Definition at line 213 of file marcdisp.c.

References yaz_marc_node::controlfield, yaz_marc_controlfield::data, yaz_marc_t_::debug, yaz_marc_t_::nmem, nmem_strdup(), nmem_strdupn(), yaz_marc_controlfield::tag, yaz_marc_node::u, yaz_marc_node::which, yaz_marc_add_comment(), yaz_marc_add_node(), and YAZ_MARC_CONTROLFIELD.

Referenced by yaz_marc_read_iso2709(), and yaz_marc_read_line().

void yaz_marc_add_controlfield_xml ( yaz_marc_t  mt,
const xmlNode *  ptr_tag,
const xmlNode *  ptr_data 
)

adds controlfield to MARC structure using xml Nodes

Parameters:
mt handle
ptr_tag value of tag (TEXT xmlNode)
ptr_data value of data (TEXT xmlNode)

Definition at line 161 of file marcdisp.c.

References yaz_marc_node::controlfield, yaz_marc_controlfield::data, yaz_marc_t_::nmem, nmem_text_node_cdata(), yaz_marc_controlfield::tag, yaz_marc_node::u, yaz_marc_node::which, yaz_marc_add_node(), and YAZ_MARC_CONTROLFIELD.

Referenced by yaz_marc_read_xml_fields().

void yaz_marc_add_controlfield_xml2 ( yaz_marc_t  mt,
char *  tag,
const xmlNode *  ptr_data 
)

adds controlfield to MARC structure using xml Nodes for data

Parameters:
mt handle
tag string tag
ptr_data value of data (TEXT xmlNode)

Definition at line 170 of file marcdisp.c.

References yaz_marc_node::controlfield, yaz_marc_controlfield::data, yaz_marc_t_::nmem, nmem_text_node_cdata(), yaz_marc_controlfield::tag, yaz_marc_node::u, yaz_marc_node::which, yaz_marc_add_node(), and YAZ_MARC_CONTROLFIELD.

Referenced by yaz_marc_read_turbo_xml_fields().

void yaz_marc_add_datafield ( yaz_marc_t  mt,
const char *  tag,
const char *  indicator,
size_t  indicator_len 
)

adds datafield to MARC structure using strings

Parameters:
mt handle
tag value of tag as string
indicator indicator string
indicator_len length of indicator string

Definition at line 234 of file marcdisp.c.

References yaz_marc_node::datafield, yaz_marc_datafield::indicator, yaz_marc_t_::nmem, nmem_strdup(), nmem_strdupn(), yaz_marc_t_::subfield_pp, yaz_marc_datafield::subfields, yaz_marc_datafield::tag, yaz_marc_node::u, yaz_marc_node::which, yaz_marc_add_node(), and YAZ_MARC_DATAFIELD.

Referenced by yaz_marc_read_iso2709(), and yaz_marc_read_line().

void yaz_marc_add_datafield_xml ( yaz_marc_t  mt,
const xmlNode *  ptr_tag,
const char *  indicator,
size_t  indicator_len 
)

adds datafield to MARC structure using xml Nodes

Parameters:
mt handle
ptr_tag value of tag (TEXT xmlNode)
indicator indicator string
indicator_len length of indicator string

Definition at line 281 of file marcdisp.c.

References yaz_marc_node::datafield, yaz_marc_datafield::indicator, yaz_marc_t_::nmem, nmem_strdupn(), nmem_text_node_cdata(), yaz_marc_t_::subfield_pp, yaz_marc_datafield::subfields, yaz_marc_datafield::tag, yaz_marc_node::u, yaz_marc_node::which, yaz_marc_add_node(), and YAZ_MARC_DATAFIELD.

Referenced by yaz_marc_read_xml_fields().

void yaz_marc_add_datafield_xml2 ( yaz_marc_t  mt,
char *  tag_value,
char *  indicators 
)

adds datafield to MARC structure using xml Nodes

Parameters:
mt handle
tag_value string value (pointer copied verbatim, not strdupped)
indicators indicator string ; pointer copied verbatim; not strdupped

Definition at line 295 of file marcdisp.c.

References yaz_marc_node::datafield, yaz_marc_datafield::indicator, yaz_marc_t_::subfield_pp, yaz_marc_datafield::subfields, yaz_marc_datafield::tag, yaz_marc_node::u, yaz_marc_node::which, yaz_marc_add_node(), and YAZ_MARC_DATAFIELD.

Referenced by yaz_marc_read_turbo_xml_fields().

void yaz_marc_add_leader ( yaz_marc_t  mt,
const char *  leader,
size_t  leader_len 
)
static struct yaz_marc_node* yaz_marc_add_node ( yaz_marc_t  mt  )  [static, read]
void yaz_marc_add_subfield ( yaz_marc_t  mt,
const char *  code_data,
size_t  code_data_len 
)

adds subfield to MARC structure

Parameters:
mt handle
code_data code data buffer
code_data_len length of code data

Definition at line 314 of file marcdisp.c.

References yaz_marc_subfield::code_data, yaz_marc_t_::debug, yaz_marc_subfield::next, yaz_marc_t_::nmem, nmem_malloc(), nmem_strdupn(), yaz_marc_t_::subfield_pp, and yaz_marc_add_comment().

Referenced by yaz_marc_read_iso2709(), yaz_marc_read_line(), yaz_marc_read_turbo_xml_subfields(), and yaz_marc_read_xml_subfields().

void yaz_marc_cprintf ( yaz_marc_t  mt,
const char *  fmt,
  ... 
)
yaz_marc_t yaz_marc_create ( void   ) 
void yaz_marc_datafield_set_indicators ( struct yaz_marc_node n,
char *  indicator 
)
void yaz_marc_debug ( yaz_marc_t  mt,
int  level 
)

set debug level

Parameters:
mt handle
level level, where 0=lowest, 1 more debug, 2 even more

Definition at line 1248 of file marcdisp.c.

References yaz_marc_t_::debug.

int yaz_marc_decode_buf ( yaz_marc_t  mt,
const char *  buf,
int  bsize,
const char **  result,
size_t *  rsize 
)

decodes ISO2709 buffer using straight buffers

Parameters:
mt marc handle
buf input buffer
bsize size of buffer or (-1 if "any size")
result result to be stored here
rsize size of result (memory "owned" by yaz_marc_mt handle)

Decodes MARC in buf of size bsize. On success, result in *result with size *rsize. Returns -1 on error, or size of input record (>0) if OK

Definition at line 1229 of file marcdisp.c.

References yaz_marc_t_::m_wr, wrbuf_cstr(), wrbuf_len, wrbuf_rewind(), and yaz_marc_decode_wrbuf().

Referenced by dummy_xml_record().

int yaz_marc_decode_formatstr ( const char *  arg  ) 

Converts MARC format type to format type(YAZ_MARC_..).

Parameters:
arg string
Return values:
-1 unknown format (bad arg)
>= 0 OK (one of YAZ_MARC - values)

Definition at line 1334 of file marcdisp.c.

References YAZ_MARC_ISO2709, YAZ_MARC_LINE, YAZ_MARC_MARCXML, YAZ_MARC_TURBOMARC, and YAZ_MARC_XCHANGE.

int yaz_marc_decode_wrbuf ( yaz_marc_t  mt,
const char *  buf,
int  bsize,
WRBUF  wrbuf 
)

decodes ISO2709/MARC buffer and stores result in WRBUF

Parameters:
mt handle
buf input buffer
bsize size of buffer (-1 if "any size")
wrbuf WRBUF for output

Decodes MARC in buf of size bsize. On success, result in wrbuf Returns -1 on error, or size of input record (>0) if OK

Definition at line 1218 of file marcdisp.c.

References yaz_marc_read_iso2709(), and yaz_marc_write_mode().

Referenced by return_marc_record(), yaz_marc_decode_buf(), and yaz_opac_decode_wrbuf().

void yaz_marc_destroy ( yaz_marc_t  mt  ) 
void yaz_marc_enable_collection ( yaz_marc_t  mt  ) 

enables record collection output

Parameters:
mt handle

Definition at line 585 of file marcdisp.c.

References collection_first, and yaz_marc_t_::enable_collection.

void yaz_marc_endline_str ( yaz_marc_t  mt,
const char *  s 
)

Definition at line 420 of file marcdisp.c.

References yaz_marc_t_::endline_str.

int yaz_marc_get_debug ( yaz_marc_t  mt  ) 

gets debug level for MARC system

Parameters:
mt handle

Definition at line 200 of file marcdisp.c.

References yaz_marc_t_::debug.

Referenced by yaz_marc_read_iso2709().

yaz_iconv_t yaz_marc_get_iconv ( yaz_marc_t  mt  ) 

supply iconv handle for character set conversion

Definition at line 1259 of file marcdisp.c.

References yaz_marc_t_::iconv_cd.

Referenced by yaz_opac_decode_wrbuf().

NMEM yaz_marc_get_nmem ( yaz_marc_t  mt  ) 

returns memory for MARC handle

Parameters:
mt handle
Return values:
NMEM handle for MARC system

Definition at line 131 of file marcdisp.c.

References yaz_marc_t_::nmem.

Referenced by yaz_marc_read_turbo_xml_fields(), yaz_marc_read_turbo_xml_subfields(), and yaz_marc_read_xml_subfields().

void yaz_marc_iconv ( yaz_marc_t  mt,
yaz_iconv_t  cd 
)

set iconv handle for character set conversion

Definition at line 1254 of file marcdisp.c.

References yaz_marc_t_::iconv_cd.

Referenced by return_marc_record(), return_opac_record(), yaz_record_conv_opac_record(), and yaz_record_conv_record_rule().

int yaz_marc_leader_spec ( yaz_marc_t  mt,
const char *  leader_spec 
)

sets leader spec (for modifying bytes in 24 byte leader)

Parameters:
mt handle
leader_spec 
Return values:
0 OK
-1 ERROR

Spec takes form pos=val,pos=val,... where value is either a number (decimal char value) or a string in 'a', e.g. 9='a'

Definition at line 1277 of file marcdisp.c.

References yaz_marc_t_::leader_spec, marc_exec_leader(), xfree, and xstrdup.

void yaz_marc_modify_leader ( yaz_marc_t  mt,
size_t  off,
const char *  str 
)
void yaz_marc_reset ( yaz_marc_t  mt  ) 

clears memory and MARC record

Parameters:
mt handle

Definition at line 450 of file marcdisp.c.

References yaz_marc_t_::nmem, nmem_reset(), yaz_marc_t_::nodes, yaz_marc_t_::nodes_pp, and yaz_marc_t_::subfield_pp.

Referenced by yaz_marc_create(), yaz_marc_read_iso2709(), yaz_marc_read_line(), and yaz_marc_read_xml().

void yaz_marc_set_leader ( yaz_marc_t  mt,
const char *  leader,
int *  indicator_length,
int *  identifier_length,
int *  base_address,
int *  length_data_entry,
int *  length_starting,
int *  length_implementation 
)

sets leader, validates it, and returns important values

Parameters:
mt handle
leader of the 24 byte leader to be set
indicator_length indicator length (returned value)
identifier_length identifier length (returned value)
base_address base address (returned value)
length_data_entry length of data entry (returned value)
length_starting length of starting
length_implementation length of implementation defined data

Definition at line 342 of file marcdisp.c.

References atoi_n_check(), yaz_marc_t_::debug, yaz_marc_add_leader(), and yaz_marc_cprintf().

Referenced by yaz_marc_read_iso2709(), yaz_marc_read_line(), and yaz_marc_read_xml_leader().

void yaz_marc_subfield_str ( yaz_marc_t  mt,
const char *  s 
)

Definition at line 414 of file marcdisp.c.

References yaz_marc_t_::subfield_str.

int yaz_marc_write_check ( yaz_marc_t  mt,
WRBUF  wr 
)
int yaz_marc_write_iso2709 ( yaz_marc_t  mt,
WRBUF  wrbuf 
)
int yaz_marc_write_line ( yaz_marc_t  mt,
WRBUF  wrbuf 
)
int yaz_marc_write_marcxchange ( yaz_marc_t  mt,
WRBUF  wrbuf,
const char *  format,
const char *  type 
)

writes record in MarcXchange XML (ISO25577)

Parameters:
mt handle
wrbuf WRBUF for output
format record format (e.g. "MARC21")
type record type (e.g. Bibliographic)
Return values:
0 OK
-1 ERROR

Definition at line 831 of file marcdisp.c.

References yaz_marc_write_marcxml_ns().

Referenced by yaz_marc_write_mode().

int yaz_marc_write_marcxml ( yaz_marc_t  mt,
WRBUF  wrbuf 
)

writes record in MARCXML format

Parameters:
mt handle
wrbuf WRBUF for output
Return values:
0 OK
-1 ERROR

Sets leader[9]='a' .

Definition at line 810 of file marcdisp.c.

References yaz_marc_t_::leader_spec, yaz_marc_modify_leader(), and yaz_marc_write_marcxml_ns().

Referenced by yaz_marc_write_mode().

static int yaz_marc_write_marcxml_ns ( yaz_marc_t  mt,
WRBUF  wr,
const char *  ns,
const char *  format,
const char *  type,
int  turbo 
) [static]
static int yaz_marc_write_marcxml_wrbuf ( yaz_marc_t  mt,
WRBUF  wr,
const char *  ns,
const char *  format,
const char *  type,
int  turbo 
) [static]
int yaz_marc_write_mode ( yaz_marc_t  mt,
WRBUF  wrbuf 
)

writes record in mode - given by yaz_marc_xml mode

Parameters:
mt handle
wrbuf WRBUF for output
Return values:
0 OK
-1 ERROR

This function calls yaz_marc_write_iso2709, yaz_marc_write_marcxml, etc.. depending on mode given by yaz_marc_xml.

Definition at line 590 of file marcdisp.c.

References yaz_marc_t_::output_format, YAZ_MARC_CHECK, YAZ_MARC_ISO2709, YAZ_MARC_LINE, YAZ_MARC_MARCXML, YAZ_MARC_TURBOMARC, yaz_marc_write_check(), yaz_marc_write_iso2709(), yaz_marc_write_line(), yaz_marc_write_marcxchange(), yaz_marc_write_marcxml(), yaz_marc_write_turbomarc(), and YAZ_MARC_XCHANGE.

Referenced by yaz_marc_decode_wrbuf(), and yaz_record_conv_record_rule().

int yaz_marc_write_trailer ( yaz_marc_t  mt,
WRBUF  wr 
)

flushes records

Parameters:
mt handle
wr WRBUF for output
Return values:
0 OK
-1 ERROR

Definition at line 567 of file marcdisp.c.

References collection_second, yaz_marc_t_::enable_collection, yaz_marc_t_::output_format, wrbuf_printf(), YAZ_MARC_MARCXML, YAZ_MARC_TURBOMARC, and YAZ_MARC_XCHANGE.

int yaz_marc_write_turbomarc ( yaz_marc_t  mt,
WRBUF  wrbuf 
)

writes record in TurboMARC format

Parameters:
mt handle
wrbuf WRBUF for output
Return values:
0 OK
-1 ERROR

Definition at line 821 of file marcdisp.c.

References yaz_marc_t_::leader_spec, yaz_marc_modify_leader(), and yaz_marc_write_marcxml_ns().

Referenced by yaz_marc_write_mode().

void yaz_marc_write_using_libxml2 ( yaz_marc_t  mt,
int  enable 
)

Enables or disables writing of MARC XML records using Libxml2.

Parameters:
mt handle
enable 0=disable, 1=enable

Definition at line 1350 of file marcdisp.c.

References yaz_marc_t_::write_using_libxml2.

int yaz_marc_write_xml ( yaz_marc_t  mt,
xmlNode **  root_ptr,
const char *  ns,
const char *  format,
const char *  type 
)

writes MARC record as libxml2 tree

Parameters:
mt handle
root_ptr pointer to record node
ns namespace of record (such as "http://www.loc.gov/MARC21/slim")
format MarcXchange format (NULL for none)
type MarcXchange format (NULL for none)
Return values:
0 Creation successful and *root_ptr is "record" node
-1 ERROR

Definition at line 977 of file marcdisp.c.

References atoi_n_check(), yaz_marc_subfield::code_data, yaz_marc_node::comment, yaz_marc_node::controlfield, yaz_marc_controlfield::data, yaz_marc_node::datafield, get_subfield_len(), yaz_marc_t_::iconv_cd, yaz_marc_datafield::indicator, yaz_marc_node::leader, marc_iconv_reset(), yaz_marc_subfield::next, yaz_marc_node::next, yaz_marc_t_::nodes, yaz_marc_datafield::subfields, yaz_marc_controlfield::tag, yaz_marc_datafield::tag, yaz_marc_node::u, yaz_marc_node::which, wrbuf_alloc(), wrbuf_cstr(), wrbuf_destroy(), wrbuf_iconv_puts(), wrbuf_iconv_write(), wrbuf_rewind(), YAZ_MARC_COMMENT, YAZ_MARC_CONTROLFIELD, YAZ_MARC_DATAFIELD, and YAZ_MARC_LEADER.

Referenced by yaz_marc_write_marcxml_ns().

static int yaz_marc_write_xml_turbo_xml ( yaz_marc_t  mt,
xmlNode **  root_ptr,
const char *  ns,
const char *  format,
const char *  type 
) [static]
void yaz_marc_xml ( yaz_marc_t  mt,
int  xmlmode 
)

set XML mode YAZ_MARC_LINE, YAZ_MARCXML, YAZ_MARC_ISO2709 ..

Parameters:
mt MARC handle
xmlmode mode.

This function ONLY affects yaz_marc_write_mode, yaz_marc_write_trailer.

Definition at line 1243 of file marcdisp.c.

References yaz_marc_t_::output_format.

Referenced by dummy_xml_record(), return_marc_record(), return_opac_record(), yaz_record_conv_opac_record(), and yaz_record_conv_record_rule().


Variable Documentation

const char* controlfield_name[2] = { "controlfield", "c"} [static]

Definition at line 612 of file marcdisp.c.

Referenced by yaz_marc_write_marcxml_wrbuf().

const char* datafield_name[2] = { "datafield", "d"} [static]

Definition at line 613 of file marcdisp.c.

Referenced by yaz_marc_write_marcxml_wrbuf().

const char* indicator_name[2] = { "ind", "i"} [static]

Definition at line 614 of file marcdisp.c.

Referenced by add_marc_datafield_turbo_xml(), and yaz_marc_write_marcxml_wrbuf().

const char* leader_name[2] = { "leader", "l"} [static]

Definition at line 611 of file marcdisp.c.

Referenced by yaz_marc_write_marcxml_wrbuf().

const char* record_name[2] = { "record", "r"} [static]

Definition at line 610 of file marcdisp.c.

Referenced by yaz_marc_write_marcxml_wrbuf().

const char* subfield_name[2] = { "subfield", "s"} [static]

Definition at line 615 of file marcdisp.c.

Referenced by add_marc_datafield_turbo_xml(), and yaz_marc_write_marcxml_wrbuf().

Generated on Tue Aug 17 13:13:20 2010 for YAZ by  doxygen 1.6.3