File: xml.h

package info (click to toggle)
virtuoso-opensource 6.1.6+dfsg2-4
  • links: PTS, VCS
  • area: main
  • in suites: bullseye, buster, sid, stretch
  • size: 260,992 kB
  • ctags: 125,220
  • sloc: ansic: 652,748; sql: 458,419; xml: 282,834; java: 61,031; sh: 40,031; cpp: 36,890; cs: 25,240; php: 12,692; yacc: 9,523; lex: 7,018; makefile: 6,157; jsp: 4,484; awk: 1,643; perl: 1,013; ruby: 1,003; python: 326
file content (205 lines) | stat: -rw-r--r-- 7,717 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
/*
 *  xml.h
 *
 *  $Id$
 *
 *  This file is part of the OpenLink Software Virtuoso Open-Source (VOS)
 *  project.
 *
 *  Copyright (C) 1998-2012 OpenLink Software
 *
 *  This project is free software; you can redistribute it and/or modify it
 *  under the terms of the GNU General Public License as published by the
 *  Free Software Foundation; only version 2 of the License, dated June 1991.
 *
 *  This program is distributed in the hope that it will be useful, but
 *  WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 *  General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License along
 *  with this program; if not, write to the Free Software Foundation, Inc.,
 *  51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 *
 */

#ifndef _XML_H
#define _XML_H

#ifdef BIF_XML

/* IvAn/ParseDTD/000721 system parser is wiped out, replaced with xmlparser.h
#include <xmlparse.h> */
#ifdef __cplusplus
extern "C" {
#endif
#include "xmlparser.h"
#ifdef __cplusplus
}
#endif

encoding_handler_t *intl_find_user_charset (const char *encname, int xml_input_is_wide);

/* Miscellaneous definition */
#define XML_VERSION		"1.0"

#define EID_MAX_WORDS		5
#define DELTA			8

/* Table names and columns names */
#ifdef OLD_VXML_TABLES
#define	TN_ENTITY		 "DB.DBA.VXML_ENTITY"
#define	TN_VXMLDOC		"DB.DBA.VXML_DOCUMENT"
#define	TN_TEXTFRAG		"DB.DBA.VXML_TEXT_FRAGMENT"
#define	IDX_URI			"URI"

#define	CN_ENT_ID		"E_ID"
#define	CN_ENT_NAME		"E_NAME"
#define CN_ENT_MISC		"E_MISC"
#define	CN_ENT_LEVEL		"E_LEVEL"
#define	CN_ENT_WSPACE		"E_WHITESPACE"
#define	CN_ENT_LEAD		 "E_LEADING"
#define	CN_ENT_TRAIL		"E_TRAILING"

#define	CN_VXML_DTD		"D_DTD"
#define	CN_VXML_URI		 "D_URI"

#define	CN_FRAG_SHORT		"V_SHORT"
#define	CN_FRAG_LONG		"V_LONG"
#endif

/* XML bif functions names */
#define XMLATTR			"xml_attr"
#define XMLATTRREPLAY		 "xml_attr_replay"
#define XMLSELEMENTTABLE	 "xmls_element_table"
#define XMLSELEMENTCOL		 "xmls_element_col"
#define XMLEID			 "xml_eid"
#define XMLSPROC		 "xmls_proc"
#define XMLROWVECT		 "row_vector"

#define PROLOG			"<?xml version=\"" XML_VERSION "\""

#define MAX_XML_STRING_LENGTH 0x9FFFF0L	/* 10 M2b - 16 */	/* IvAn/TextXmlIndex/000814 */

#define XML_CHAR_ESCAPE(c,s) xml_escapes [c] = s;

#ifndef __cplusplus
/* Types definition */
#ifndef _boolean
typedef enum
  {
    false, true
  }
_boolean;
#endif
#endif





typedef struct close_tag_s {
  int		ct_level;
  dk_set_t	ct_all_explicit_ns;
  dk_set_t	ct_all_default_ns;
  caddr_t	 ct_trailing;
  caddr_t	 ct_name;
  /*caddr_t 	ct_ns;
  int 		ct_start;*/
  struct close_tag_s *	 ct_prev;
} close_tag_t;

#define bx_std_ns_pref(name,ns_len) ((3 == ns_len) && !strnicmp (name, "xml", 3))
#define bx_std_ns_uri(name,ns_len) ((XML_NS_URI_LEN == ns_len) && !strnicmp (name, XML_NS_URI, XML_NS_URI_LEN))


void bx_push_ct (close_tag_t ** ct_ret, int e_level,  caddr_t e_name, caddr_t e_trailing);

typedef int (*xml_elm_serialize_t) (caddr_t * node, dk_session_t * ses, void * xsst);

/* XML bif functions prototypes */
struct xte_serialize_state_s
{
  struct xml_tree_ent_s *	xsst_entity;
  id_hash_t *		xsst_cdata_names; /* == xsst->xsst_entity->xe_doc.xtd->xout_cdata_section_elements*/
  xml_ns_2dict_t	xsst_ns_2dict; /* == xsst->xsst_entity->xe_doc.xtd->xd_ns_2dict */
  close_tag_t *		xsst_ct;
  caddr_t *		xsst_qst;
  int			xsst_out_method;
  struct wcharset_s *	xsst_charset;
  int			xsst_charset_meta;
  int			xsst_do_indent;
  int			xsst_indent_depth;
  int			xsst_in_block;
  int 			xsst_dks_esc_mode;
  int 			xsst_default_ns;
  xml_elm_serialize_t   xsst_hook;
  void *		xsst_data;
};

typedef struct xte_serialize_state_s xte_serialize_state_t;

extern void xte_serialize_1 (caddr_t * current, dk_session_t * ses, xte_serialize_state_t *xsst);

caddr_t bif_xml_eid (caddr_t * qst, caddr_t * err_ret, state_slot_t ** args);
caddr_t bif_xml_get (caddr_t * qst, caddr_t * err_ret, state_slot_t ** args);
caddr_t bif_xml_del (caddr_t * qst, caddr_t * err_ret, state_slot_t ** args);
caddr_t bif_xml_attr (caddr_t * qst, caddr_t * err_ret, state_slot_t ** args);
caddr_t bif_xml_attr_replay (caddr_t * qst, caddr_t * err_ret, state_slot_t ** args);
caddr_t bif_xmls_element_table (caddr_t * qst, caddr_t * err_ret, state_slot_t ** args);
caddr_t bif_xmls_element_col (caddr_t * qst, caddr_t * err_ret, state_slot_t ** args);
caddr_t bif_xmls_proc (caddr_t * qst, caddr_t * err_ret, state_slot_t ** args);
caddr_t bif_xml_to_tree (caddr_t * qst, caddr_t * err_ret, state_slot_t ** args);
caddr_t bif_tree_to_xml (caddr_t * qst, caddr_t * err_ret, state_slot_t ** args);

caddr_t bif_xml_attr (caddr_t * qst, caddr_t * err_ret, state_slot_t ** args);
caddr_t bif_xml_attr_replay (caddr_t * qst, caddr_t * err_ret, state_slot_t ** args);
caddr_t bif_xmls_element_table (caddr_t * qst, caddr_t * err_ret, state_slot_t ** args);
caddr_t bif_xmls_element_col (caddr_t * qst, caddr_t * err_ret, state_slot_t ** args);
caddr_t bif_xmls_proc (caddr_t * qst, caddr_t * err_ret, state_slot_t ** args);
caddr_t xml_make_tree (query_instance_t * qi, caddr_t text, caddr_t *err_ret, const char *enc, lang_handler_t *lh, struct dtd_s **ret_dtd);
caddr_t xml_make_tree_with_ns (query_instance_t * qi, caddr_t text, caddr_t *err_ret, const char *enc, lang_handler_t *lh, id_hash_t ** nss, id_hash_t ** id_cache);
void nss_free (id_hash_t * nss);
caddr_t xml_make_mod_tree (query_instance_t * qi, caddr_t text, caddr_t *err_ret, long mode, caddr_t uri, const char *enc, lang_handler_t *lh, caddr_t dtd_options, dtd_t **ret_dtd, id_hash_t **ret_id_cache, xml_ns_2dict_t *ret_ns_2dict);
void xml_expand_refs (caddr_t *tree, caddr_t *err_ret);
caddr_t bif_vt_index (caddr_t * qst, caddr_t * err_ret, state_slot_t ** args);
caddr_t bif_xmls_viewremove (caddr_t * qst, caddr_t * err_ret, state_slot_t ** args);
caddr_t bif_xml_view_dtd (caddr_t * qst, caddr_t * err_ret, state_slot_t ** args); /* IvAn/ViewDTD/000718 Added */
caddr_t bif_xml_view_schema (caddr_t * qst, caddr_t * err_ret, state_slot_t ** args);
caddr_t bif_xml_auto (caddr_t * qst, caddr_t * err_ret, state_slot_t ** args);
caddr_t bif_xmlsql_update (caddr_t * qst, caddr_t * err_ret, state_slot_t ** args);
caddr_t bif_xml_template (caddr_t * qst, caddr_t * err_ret, state_slot_t ** args);
caddr_t bif_xml_auto_dtd (caddr_t * qst, caddr_t * err_ret, state_slot_t ** args); /* IvAn/AutoDTD/000919 Added */
caddr_t bif_xml_auto_schema (caddr_t * qst, caddr_t * err_ret, state_slot_t ** args); /* IvAn/AutoDTD/000919 Added */

void xe_box_serialize (caddr_t xe, dk_session_t * ses);
extern void dtd_serialize (dtd_t * dtd, dk_session_t * ses);

/* Extern declarations */
extern query_t *insert_entity_qr;
extern query_t *insert_fragment_qr;
extern query_t *insert_document_qr;
extern query_t *select_entitylevel_qr;
extern query_t *delete_entity_qr;
extern query_t *select_countentity_qr;
extern query_t *select_maxentity_qr;
extern query_t *select_groupentity_qr;
extern query_t *select_elevel_qr;
extern struct xml_schema_s *xml_global;
extern const char *add_entity_with_param;
extern const char *xml_escapes[256];
#define OUT_METHOD_XML		1
#define OUT_METHOD_HTML		2
#define OUT_METHOD_TEXT		3
#define OUT_METHOD_XHTML	4
#define OUT_METHOD_OTHER	0

#define IS_HTML_OUT(o)		(OUT_METHOD_HTML == (o) || OUT_METHOD_XHTML == (o))

#define USE_HTML_XSL_ESCAPES	-1
#define USE_CDATA_XML_ESCAPES	-2
#define USE_CR_ESCAPE		-3 /* the CR is encoded, SOAP/interoperability  */
int dtd_insert_soft (dtd_t *tgt, dtd_t *src);
void ddl_store_mapping_schema (query_instance_t * qi, caddr_t view_name, caddr_t reload_text);
#endif /* BIF_XML */
#endif /* _XML_H */