/** \brief destroy yaz_marc_t handle */
YAZ_EXPORT void yaz_marc_destroy(yaz_marc_t mt);
-/** \brief set XML mode YAZ_MARC_LINE, YAZ_MARC_SIMPLEXML, ... */
+/** \brief set XML mode YAZ_MARC_LINE, YAZ_MARCXML, YAZ_MARC_ISO2709 ..
+ \param mt MARC handle
+ \param xmlmode mode.
+
+ This function ONLY affects yaz_marc_write_mode, yaz_marc_write_trailer.
+*/
YAZ_EXPORT void yaz_marc_xml(yaz_marc_t mt, int xmlmode);
/** \brief Output format: Line-format */
/** \brief Output format: MarcXchange (ISO25577) */
#define YAZ_MARC_XCHANGE 5
/** \brief Output format: check only (no marc output) */
-#define YAZ_MARC_CHECK 6
-/** \brief Output format: Turbo MARCXML Index Data format*/
-#define YAZ_MARC_TMARCXML 7
+#define YAZ_MARC_CHECK 6
+/** \brief Output format: Turbo MARC Index Data format (XML based) */
+#define YAZ_MARC_TURBOMARC 7
/** \brief set iconv handle for character set conversion */
YAZ_EXPORT void yaz_marc_iconv(yaz_marc_t mt, yaz_iconv_t cd);
void *client_data);
#if YAZ_HAVE_XML2
-/** \brief parses MARCXML/MarcXchange record from xmlNode pointer
+/** \brief parses MARCXML/MarcXchange/TurboMARC record from xmlNode pointer
\param mt handle
\param ptr is a pointer to root xml node
\retval 0 OK
*/
YAZ_EXPORT int yaz_marc_write_marcxml(yaz_marc_t mt, WRBUF wrbuf);
+/** \brief writes record in TurboMARC format
+ \param mt handle
+ \param wrbuf WRBUF for output
+ \retval 0 OK
+ \retval -1 ERROR
+*/
+YAZ_EXPORT int yaz_marc_write_turbomarc(yaz_marc_t mt, WRBUF wrbuf);
+
/** \brief writes record in MarcXchange XML (ISO25577)
\param mt handle
\param wrbuf WRBUF for output
YAZ_EXPORT
void yaz_marc_add_controlfield_xml(yaz_marc_t mt, const xmlNode *ptr_tag,
const xmlNode *ptr_data);
+
+/** \brief adds controlfield to MARC structure using xml Nodes for data
+ \param mt handle
+ \param tag string tag
+ \param ptr_data value of data (TEXT xmlNode)
+*/
+YAZ_EXPORT
+void yaz_marc_add_controlfield_xml2(yaz_marc_t mt, char *tag,
+ const xmlNode *ptr_data);
#endif
/** \brief adds datafield to MARC structure using strings
YAZ_EXPORT
void yaz_marc_add_datafield_xml(yaz_marc_t mt, const xmlNode *ptr_tag,
const char *indicator, size_t indicator_len);
+
+/** \brief adds datafield to MARC structure using xml Nodes
+ \param mt handle
+ \param tag_value string value (pointer copied verbatim, not strdupped)
+ \param indicators indicator string ; pointer copied verbatim; not strdupped
+*/
+YAZ_EXPORT
+void yaz_marc_add_datafield_xml2(yaz_marc_t mt, char *tag_value,
+ char *indicators);
+
#endif
/** \brief returns memory for MARC handle