YAZ  5.23.1
xml_add.c
Go to the documentation of this file.
1 /* This file is part of the YAZ toolkit.
2  * Copyright (C) Index Data
3  * See the file LICENSE for details.
4  */
9 #if HAVE_CONFIG_H
10 #include <config.h>
11 #endif
12 
13 #include <stdio.h>
14 
15 #include <yaz/srw.h>
16 #if YAZ_HAVE_XML2
17 #include "sru-p.h"
18 
19 void add_XML_n(xmlNodePtr ptr, const char *elem, char *val, int len,
20  xmlNsPtr ns_ptr)
21 {
22  if (val)
23  {
24  xmlDocPtr doc = xmlParseMemory(val,len);
25  if (doc)
26  {
27  xmlNodePtr c = xmlNewChild(ptr, ns_ptr, BAD_CAST elem, 0);
28  xmlNodePtr t = xmlDocGetRootElement(doc);
29  xmlAddChild(c, xmlCopyNode(t,1));
30  xmlFreeDoc(doc);
31  }
32  }
33 }
34 
35 xmlNodePtr add_xsd_string_n(xmlNodePtr ptr, const char *elem, const char *val,
36  int len)
37 {
38  if (val)
39  {
40  xmlNodePtr c = xmlNewChild(ptr, 0, BAD_CAST elem, 0);
41  xmlNodePtr t = xmlNewTextLen(BAD_CAST val, len);
42  xmlAddChild(c, t);
43  return t;
44  }
45  return 0;
46 }
47 
48 xmlNodePtr add_xsd_string_ns(xmlNodePtr ptr, const char *elem, const char *val,
49  xmlNsPtr ns_ptr)
50 {
51  if (val)
52  {
53  xmlNodePtr c = xmlNewChild(ptr, ns_ptr, BAD_CAST elem, 0);
54  xmlNodePtr t = xmlNewText(BAD_CAST val);
55  xmlAddChild(c, t);
56  return t;
57  }
58  return 0;
59 }
60 
61 xmlNodePtr add_xsd_string(xmlNodePtr ptr, const char *elem, const char *val)
62 {
63  return add_xsd_string_ns(ptr, elem, val, 0);
64 }
65 
66 void add_xsd_integer(xmlNodePtr ptr, const char *elem,
67  const Odr_int *val)
68 {
69  if (val)
70  {
71  char str[40];
72  sprintf(str, ODR_INT_PRINTF, *val);
73  xmlNewTextChild(ptr, 0, BAD_CAST elem, BAD_CAST str);
74  }
75 }
76 
77 #endif
78 
79 /*
80  * Local variables:
81  * c-basic-offset: 4
82  * c-file-style: "Stroustrup"
83  * indent-tabs-mode: nil
84  * End:
85  * vim: shiftwidth=4 tabstop=8 expandtab
86  */
87 
SRU private header.
Header for SRW/SRU.
nmem_int_t Odr_int
Definition: odr.h:47
xmlNodePtr add_xsd_string_ns(xmlNodePtr ptr, const char *elem, const char *val, xmlNsPtr ns_ptr)
Definition: xml_add.c:48
void add_XML_n(xmlNodePtr ptr, const char *elem, char *val, int len, xmlNsPtr ns_ptr)
Definition: xml_add.c:19
xmlNodePtr add_xsd_string(xmlNodePtr ptr, const char *elem, const char *val)
Definition: xml_add.c:61
#define ODR_INT_PRINTF
Definition: odr.h:49
void add_xsd_integer(xmlNodePtr ptr, const char *elem, const Odr_int *val)
Definition: xml_add.c:66
xmlNodePtr add_xsd_string_n(xmlNodePtr ptr, const char *elem, const char *val, int len)
Definition: xml_add.c:35