File: xmlgen.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 (158 lines) | stat: -rw-r--r-- 6,186 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
/*
 *  xmlgen.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 _XMLGEN_H
#define _XMLGEN_H

#include "sqlpar.h" /* to #define ST */

extern void mpschema_set_view_def (char *name, caddr_t tree);/*mapping schema*/

struct xv_join_elt_s;
typedef struct xj_col_s
  {
    ST *	xc_exp;
    caddr_t	xc_xml_name;	/*!< DV_UNAME */
    ptrlong 	xc_usage;
    struct xv_join_elt_s * xc_relationship;
    caddr_t 	xc_prefix;	/*!< Creates valid XML ID, IDREF, and IDREFS. Prepends the values of ID,IDREF, and IDREFS with a string. */
} xj_col_t;


typedef struct xv_key_field_s
{
  caddr_t *	ids_array;
  ptrlong	ids_count;
} xv_key_field_t;

/*mapping schema*/
typedef struct xv_mp_schema_s
{
    ptrlong xj_minOccur;		/*!< The value from schema */
    ptrlong xj_maxOccur;		/*!< The value from schema, <0  means "unbounded" */
    ptrlong xj_is_constant;		/*!< The resulting XML element is not mapped to any table */
    ptrlong xj_hide_tree;		/*!< The element and its subtree do not appear in the XML document */
    ptrlong xj_hide;			/*!< The element (table) does not appear in the XML document, but its subtree does */
    ptrlong xj_mapped;			/*!< If zero then element is not mapped and the element and attributes do not appear in the XML document */
    ST * 	xj_limit_field;		/*!< Allows limiting the values that are returned on the basis of a limiting field. */
    caddr_t 	xj_limit_value;		/*!< The required value of the field specified by sql_limit_field. */
    xv_key_field_t  xj_key_fields;	/*!< Allows specification of column(s) that uniquely identify the rows in a table. */
    ptrlong	xj_use_cdata;		/*!< Allows specifying CDATA sections to be used for certain elements in the XML document. */
    ptrlong	xj_encode;		/*!< When an XML element or attribute is mapped to a SQL Server BLOB column, allows requesting a URIto be returned that can be used later to return BLOB data. */
    caddr_t	xj_overflow_field;	/*!< Identifies the database column that contains the overflow data. */
    ptrlong	xj_inverse;		/*!< Instructs the updategram logic to inverse its interpretation of the parent-child relationship that has been specified using <sql:relationship>. */
    ptrlong	xj_identity;		/*!< Can be specified on any node that maps to an IDENTITY-type database column. The value specified for this annotation defines how the corresponding IDENTITY-type column in the database is updated. */
    ptrlong	xj_guid;		/*!< Allows you to specify whether to use a GUID value generated by SQL Server or use the value provided in the updategram for that column. */
    ptrlong	xj_max_depth;		/*!< Allows you to specify depth in recursive relationships that are specified in the schema. */
    ptrlong xj_same_table;
    ST * xj_column;
    ST ** xj_parent_cols; /*key columns from the parent*/
    dk_set_t xj_child_cols; /*columns from the children*/
} xv_mp_schema_t;
/*end mapping schema*/


typedef struct xv_join_elt_s
  {
    caddr_t	xj_table;
    caddr_t	xj_prefix;
    caddr_t	xj_element;	/*!< DV_UNAME */
    xj_col_t **	xj_cols;
    ST *	xj_join_cond;
    /*! \brief Type of join with parent

        Join may be INNER or LEFT OUTER. Currently INNER may be created
        only via <CODE>CREATE XML VIEW ... FROM ... [INNER] JOIN ...</CODE>
    */
    ptrlong	xj_join_is_outer;
    ST *	xj_filter;
    struct xv_join_elt_s ** xj_children;
    struct xv_join_elt_s * xj_parent;
    caddr_t *	xj_pk;
    ptrlong	xj_all_cols_as_subelements;
    xv_mp_schema_t * xj_mp_schema; /*mapping schema*/
  } xv_join_elt_t;


/* IvAn/XmlView/000810 Type added */
/*! \brief Parameters of adding metadata into the document. */
struct xv_metas_s
  {
    /*! \brief Mode of metadata creation.
	Allowed values are:
	<TABLE>
	<TR><TD><CODE>0</CODE></TD><TD>No metadata</TD></TR>
	<TR><TD><CODE>1</CODE></TD><TD>Produce DTD, internal (i.e. inlined)</TD></TR>
	<TR><TD><CODE>2</CODE></TD><TD>Produce DTD, external DAV resource</TD></TR>
	<TR><TD><CODE>3</CODE></TD><TD>Imprint user-defined DTD text</TD></TR>
	<TR><TD><CODE>4</CODE></TD><TD>Produce XMLSchema, internal (i.e. inlined). NYI</TD></TR>
	<TR><TD><CODE>5</CODE></TD><TD>Produce XMLSchema, external DAV resource</TD></TR>
	<TR><TD><CODE>6</CODE></TD><TD>Imprint user-defined reference to XMLSchema</TD></TR>
	</TABLE> */
    caddr_t	xmetas_mode;
    caddr_t	xmetas_custom_text;	/*!< \brief User-defined text */
  };
typedef struct xv_metas_s xv_metas_t;

typedef struct xv_pub_s
  {
    caddr_t	xpub_path;
    caddr_t	xpub_owner;
    caddr_t	xpub_persistent;
    caddr_t	xpub_interval;
/* IvAn/XmlView/000810 Type added */
    caddr_t	xpub_metas;		/*!< \brief Parameters of metadata, of actual type <CODE>xv_metas_t *</CODE> */
  } xv_pub_t;

struct xml_view_nsdef_s
  {
    caddr_t	xvns_prefix;
    caddr_t	xvns_uri;
  };

typedef struct xml_view_nsdef_s xml_view_nsdef_t;

struct xml_view_s
  {
    /* must coincide with the view_def case in sql_tree_t, for all leading data members */
    ptrlong		type;
    caddr_t		xv_full_name;
    ST * 		vv_tree;
    caddr_t		xv_text;
    ptrlong		xv_check;
    xv_join_elt_t *	xv_tree;
    ptrlong		xv_all_cols_as_subelements;
    xv_pub_t *		xv_pub_opts;
    xml_view_nsdef_t**  xv_namespaces;
    caddr_t		xv_schema;
    caddr_t		xv_user;
    caddr_t		xv_local_name;
  };

typedef struct xml_view_s xml_view_t;

xml_view_t * xmls_view_def (char * name);

#endif /* _XMLGEN_H */