PostgreSQL Source Code: src/include/utils/xml.h Source File

PostgreSQL Source Code git master
xml.h
Go to the documentation of this file.
1/*-------------------------------------------------------------------------
2 *
3 * xml.h
4 * Declarations for XML data type support.
5 *
6 *
7 * Portions Copyright (c) 1996-2025, PostgreSQL Global Development Group
8 * Portions Copyright (c) 1994, Regents of the University of California
9 *
10 * src/include/utils/xml.h
11 *
12 *-------------------------------------------------------------------------
13 */
14
15#ifndef XML_H
16#define XML_H
17
18#include "executor/tablefunc.h"
19#include "fmgr.h"
20#include "nodes/execnodes.h"
21#include "nodes/primnodes.h"
22
23 typedef struct varlena xmltype;
24
25 typedef enum
26{
27 XML_STANDALONE_YES,
28 XML_STANDALONE_NO,
29 XML_STANDALONE_NO_VALUE,
30 XML_STANDALONE_OMITTED,
31} XmlStandaloneType;
32
33 typedef enum
34{
35 XMLBINARY_BASE64,
36 XMLBINARY_HEX,
37} XmlBinaryType;
38
39 typedef enum
40{
41 PG_XML_STRICTNESS_LEGACY, /* ignore errors unless function result
42 * indicates error condition */
43 PG_XML_STRICTNESS_WELLFORMED, /* ignore non-parser messages */
44 PG_XML_STRICTNESS_ALL, /* report all notices/warnings/errors */
45} PgXmlStrictness;
46
47/* struct PgXmlErrorContext is private to xml.c */
48 typedef struct PgXmlErrorContext PgXmlErrorContext;
49
50static inline xmltype *
51 DatumGetXmlP(Datum X)
52{
53 return (xmltype *) PG_DETOAST_DATUM(X);
54}
55
56static inline Datum
57 XmlPGetDatum(const xmltype *X)
58{
59 return PointerGetDatum(X);
60}
61
62 #define PG_GETARG_XML_P(n) DatumGetXmlP(PG_GETARG_DATUM(n))
63 #define PG_RETURN_XML_P(x) PG_RETURN_POINTER(x)
64
65 extern void pg_xml_init_library(void);
66 extern PgXmlErrorContext *pg_xml_init(PgXmlStrictness strictness);
67 extern void pg_xml_done(PgXmlErrorContext *errcxt, bool isError);
68 extern bool pg_xml_error_occurred(PgXmlErrorContext *errcxt);
69 extern void xml_ereport(PgXmlErrorContext *errcxt, int level, int sqlcode,
70 const char *msg);
71
72extern xmltype *xmlconcat(List *args);
73extern xmltype *xmlelement(XmlExpr *xexpr,
74 Datum *named_argvalue, bool *named_argnull,
75 Datum *argvalue, bool *argnull);
76extern xmltype *xmlparse(text *data, XmlOptionType xmloption_arg, bool preserve_whitespace);
77extern xmltype *xmlpi(const char *target, text *arg, bool arg_is_null, bool *result_is_null);
78extern xmltype *xmlroot(xmltype *data, text *version, int standalone);
79extern bool xml_is_document(xmltype *arg);
80extern text *xmltotext_with_options(xmltype *data, XmlOptionType xmloption_arg,
81 bool indent);
82extern char *escape_xml(const char *str);
83
84extern char *map_sql_identifier_to_xml_name(const char *ident, bool fully_escaped, bool escape_period);
85extern char *map_xml_name_to_sql_identifier(const char *name);
86extern char *map_sql_value_to_xml_value(Datum value, Oid type, bool xml_escape_strings);
87
88extern PGDLLIMPORT int xmlbinary; /* XmlBinaryType, but int for guc enum */
89
90extern PGDLLIMPORT int xmloption; /* XmlOptionType, but int for guc enum */
91
92extern PGDLLIMPORT const TableFuncRoutine XmlTableRoutine;
93
94#endif /* XML_H */
#define PGDLLIMPORT
Definition: c.h:1319
#define PG_DETOAST_DATUM(datum)
Definition: fmgr.h:240
const char * str
#define ident
Definition: indent_codes.h:47
static struct @169 value
void * arg
const void * data
static Datum PointerGetDatum(const void *X)
Definition: postgres.h:332
uint64_t Datum
Definition: postgres.h:70
unsigned int Oid
Definition: postgres_ext.h:32
XmlOptionType
Definition: primnodes.h:1616
Definition: pg_list.h:54
Definition: c.h:692
const char * type
const char * name
XmlStandaloneType
Definition: xml.h:26
@ XML_STANDALONE_OMITTED
Definition: xml.h:30
@ XML_STANDALONE_NO_VALUE
Definition: xml.h:29
@ XML_STANDALONE_YES
Definition: xml.h:27
@ XML_STANDALONE_NO
Definition: xml.h:28
xmltype * xmlroot(xmltype *data, text *version, int standalone)
Definition: xml.c:1101
struct PgXmlErrorContext PgXmlErrorContext
Definition: xml.h:48
PGDLLIMPORT int xmloption
Definition: xml.c:109
char * map_sql_identifier_to_xml_name(const char *ident, bool fully_escaped, bool escape_period)
Definition: xml.c:2418
PgXmlErrorContext * pg_xml_init(PgXmlStrictness strictness)
text * xmltotext_with_options(xmltype *data, XmlOptionType xmloption_arg, bool indent)
Definition: xml.c:677
char * map_sql_value_to_xml_value(Datum value, Oid type, bool xml_escape_strings)
Definition: xml.c:2516
void xml_ereport(PgXmlErrorContext *errcxt, int level, int sqlcode, const char *msg)
xmltype * xmlconcat(List *args)
Definition: xml.c:574
static Datum XmlPGetDatum(const xmltype *X)
Definition: xml.h:57
char * escape_xml(const char *str)
Definition: xml.c:2735
PGDLLIMPORT int xmlbinary
Definition: xml.c:108
bool xml_is_document(xmltype *arg)
Definition: xml.c:1167
bool pg_xml_error_occurred(PgXmlErrorContext *errcxt)
xmltype * xmlparse(text *data, XmlOptionType xmloption_arg, bool preserve_whitespace)
Definition: xml.c:1031
xmltype * xmlelement(XmlExpr *xexpr, Datum *named_argvalue, bool *named_argnull, Datum *argvalue, bool *argnull)
Definition: xml.c:893
static xmltype * DatumGetXmlP(Datum X)
Definition: xml.h:51
void pg_xml_done(PgXmlErrorContext *errcxt, bool isError)
PGDLLIMPORT const TableFuncRoutine XmlTableRoutine
Definition: xml.c:222
void pg_xml_init_library(void)
char * map_xml_name_to_sql_identifier(const char *name)
Definition: xml.c:2474
XmlBinaryType
Definition: xml.h:34
@ XMLBINARY_BASE64
Definition: xml.h:35
@ XMLBINARY_HEX
Definition: xml.h:36
xmltype * xmlpi(const char *target, text *arg, bool arg_is_null, bool *result_is_null)
Definition: xml.c:1049
PgXmlStrictness
Definition: xml.h:40
@ PG_XML_STRICTNESS_LEGACY
Definition: xml.h:41
@ PG_XML_STRICTNESS_ALL
Definition: xml.h:44
@ PG_XML_STRICTNESS_WELLFORMED
Definition: xml.h:43

AltStyle によって変換されたページ (->オリジナル) /