xref: /aosp_15_r20/external/libxml2/include/libxml/c14n.h (revision 7c5688314b92172186c154356a6374bf7684c3ca)
1*7c568831SAndroid Build Coastguard Worker /*
2*7c568831SAndroid Build Coastguard Worker  * Summary: Provide Canonical XML and Exclusive XML Canonicalization
3*7c568831SAndroid Build Coastguard Worker  * Description: the c14n modules provides a
4*7c568831SAndroid Build Coastguard Worker  *
5*7c568831SAndroid Build Coastguard Worker  * "Canonical XML" implementation
6*7c568831SAndroid Build Coastguard Worker  * http://www.w3.org/TR/xml-c14n
7*7c568831SAndroid Build Coastguard Worker  *
8*7c568831SAndroid Build Coastguard Worker  * and an
9*7c568831SAndroid Build Coastguard Worker  *
10*7c568831SAndroid Build Coastguard Worker  * "Exclusive XML Canonicalization" implementation
11*7c568831SAndroid Build Coastguard Worker  * http://www.w3.org/TR/xml-exc-c14n
12*7c568831SAndroid Build Coastguard Worker 
13*7c568831SAndroid Build Coastguard Worker  * Copy: See Copyright for the status of this software.
14*7c568831SAndroid Build Coastguard Worker  *
15*7c568831SAndroid Build Coastguard Worker  * Author: Aleksey Sanin <[email protected]>
16*7c568831SAndroid Build Coastguard Worker  */
17*7c568831SAndroid Build Coastguard Worker #ifndef __XML_C14N_H__
18*7c568831SAndroid Build Coastguard Worker #define __XML_C14N_H__
19*7c568831SAndroid Build Coastguard Worker 
20*7c568831SAndroid Build Coastguard Worker #include <libxml/xmlversion.h>
21*7c568831SAndroid Build Coastguard Worker 
22*7c568831SAndroid Build Coastguard Worker #ifdef LIBXML_C14N_ENABLED
23*7c568831SAndroid Build Coastguard Worker 
24*7c568831SAndroid Build Coastguard Worker #include <libxml/tree.h>
25*7c568831SAndroid Build Coastguard Worker #include <libxml/xpath.h>
26*7c568831SAndroid Build Coastguard Worker 
27*7c568831SAndroid Build Coastguard Worker #ifdef __cplusplus
28*7c568831SAndroid Build Coastguard Worker extern "C" {
29*7c568831SAndroid Build Coastguard Worker #endif /* __cplusplus */
30*7c568831SAndroid Build Coastguard Worker 
31*7c568831SAndroid Build Coastguard Worker /*
32*7c568831SAndroid Build Coastguard Worker  * XML Canonicalization
33*7c568831SAndroid Build Coastguard Worker  * http://www.w3.org/TR/xml-c14n
34*7c568831SAndroid Build Coastguard Worker  *
35*7c568831SAndroid Build Coastguard Worker  * Exclusive XML Canonicalization
36*7c568831SAndroid Build Coastguard Worker  * http://www.w3.org/TR/xml-exc-c14n
37*7c568831SAndroid Build Coastguard Worker  *
38*7c568831SAndroid Build Coastguard Worker  * Canonical form of an XML document could be created if and only if
39*7c568831SAndroid Build Coastguard Worker  *  a) default attributes (if any) are added to all nodes
40*7c568831SAndroid Build Coastguard Worker  *  b) all character and parsed entity references are resolved
41*7c568831SAndroid Build Coastguard Worker  * In order to achieve this in libxml2 the document MUST be loaded with
42*7c568831SAndroid Build Coastguard Worker  * following options: XML_PARSE_DTDATTR | XML_PARSE_NOENT
43*7c568831SAndroid Build Coastguard Worker  */
44*7c568831SAndroid Build Coastguard Worker 
45*7c568831SAndroid Build Coastguard Worker /*
46*7c568831SAndroid Build Coastguard Worker  * xmlC14NMode:
47*7c568831SAndroid Build Coastguard Worker  *
48*7c568831SAndroid Build Coastguard Worker  * Predefined values for C14N modes
49*7c568831SAndroid Build Coastguard Worker  *
50*7c568831SAndroid Build Coastguard Worker  */
51*7c568831SAndroid Build Coastguard Worker typedef enum {
52*7c568831SAndroid Build Coastguard Worker     XML_C14N_1_0            = 0,    /* Original C14N 1.0 spec */
53*7c568831SAndroid Build Coastguard Worker     XML_C14N_EXCLUSIVE_1_0  = 1,    /* Exclusive C14N 1.0 spec */
54*7c568831SAndroid Build Coastguard Worker     XML_C14N_1_1            = 2     /* C14N 1.1 spec */
55*7c568831SAndroid Build Coastguard Worker } xmlC14NMode;
56*7c568831SAndroid Build Coastguard Worker 
57*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int
58*7c568831SAndroid Build Coastguard Worker 		xmlC14NDocSaveTo	(xmlDocPtr doc,
59*7c568831SAndroid Build Coastguard Worker 					 xmlNodeSetPtr nodes,
60*7c568831SAndroid Build Coastguard Worker 					 int mode, /* a xmlC14NMode */
61*7c568831SAndroid Build Coastguard Worker 					 xmlChar **inclusive_ns_prefixes,
62*7c568831SAndroid Build Coastguard Worker 					 int with_comments,
63*7c568831SAndroid Build Coastguard Worker 					 xmlOutputBufferPtr buf);
64*7c568831SAndroid Build Coastguard Worker 
65*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int
66*7c568831SAndroid Build Coastguard Worker 		xmlC14NDocDumpMemory	(xmlDocPtr doc,
67*7c568831SAndroid Build Coastguard Worker 					 xmlNodeSetPtr nodes,
68*7c568831SAndroid Build Coastguard Worker 					 int mode, /* a xmlC14NMode */
69*7c568831SAndroid Build Coastguard Worker 					 xmlChar **inclusive_ns_prefixes,
70*7c568831SAndroid Build Coastguard Worker 					 int with_comments,
71*7c568831SAndroid Build Coastguard Worker 					 xmlChar **doc_txt_ptr);
72*7c568831SAndroid Build Coastguard Worker 
73*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int
74*7c568831SAndroid Build Coastguard Worker 		xmlC14NDocSave		(xmlDocPtr doc,
75*7c568831SAndroid Build Coastguard Worker 					 xmlNodeSetPtr nodes,
76*7c568831SAndroid Build Coastguard Worker 					 int mode, /* a xmlC14NMode */
77*7c568831SAndroid Build Coastguard Worker 					 xmlChar **inclusive_ns_prefixes,
78*7c568831SAndroid Build Coastguard Worker 					 int with_comments,
79*7c568831SAndroid Build Coastguard Worker 					 const char* filename,
80*7c568831SAndroid Build Coastguard Worker 					 int compression);
81*7c568831SAndroid Build Coastguard Worker 
82*7c568831SAndroid Build Coastguard Worker 
83*7c568831SAndroid Build Coastguard Worker /**
84*7c568831SAndroid Build Coastguard Worker  * This is the core C14N function
85*7c568831SAndroid Build Coastguard Worker  */
86*7c568831SAndroid Build Coastguard Worker /**
87*7c568831SAndroid Build Coastguard Worker  * xmlC14NIsVisibleCallback:
88*7c568831SAndroid Build Coastguard Worker  * @user_data: user data
89*7c568831SAndroid Build Coastguard Worker  * @node: the current node
90*7c568831SAndroid Build Coastguard Worker  * @parent: the parent node
91*7c568831SAndroid Build Coastguard Worker  *
92*7c568831SAndroid Build Coastguard Worker  * Signature for a C14N callback on visible nodes
93*7c568831SAndroid Build Coastguard Worker  *
94*7c568831SAndroid Build Coastguard Worker  * Returns 1 if the node should be included
95*7c568831SAndroid Build Coastguard Worker  */
96*7c568831SAndroid Build Coastguard Worker typedef int (*xmlC14NIsVisibleCallback)	(void* user_data,
97*7c568831SAndroid Build Coastguard Worker 					 xmlNodePtr node,
98*7c568831SAndroid Build Coastguard Worker 					 xmlNodePtr parent);
99*7c568831SAndroid Build Coastguard Worker 
100*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int
101*7c568831SAndroid Build Coastguard Worker 		xmlC14NExecute		(xmlDocPtr doc,
102*7c568831SAndroid Build Coastguard Worker 					 xmlC14NIsVisibleCallback is_visible_callback,
103*7c568831SAndroid Build Coastguard Worker 					 void* user_data,
104*7c568831SAndroid Build Coastguard Worker 					 int mode, /* a xmlC14NMode */
105*7c568831SAndroid Build Coastguard Worker 					 xmlChar **inclusive_ns_prefixes,
106*7c568831SAndroid Build Coastguard Worker 					 int with_comments,
107*7c568831SAndroid Build Coastguard Worker 					 xmlOutputBufferPtr buf);
108*7c568831SAndroid Build Coastguard Worker 
109*7c568831SAndroid Build Coastguard Worker #ifdef __cplusplus
110*7c568831SAndroid Build Coastguard Worker }
111*7c568831SAndroid Build Coastguard Worker #endif /* __cplusplus */
112*7c568831SAndroid Build Coastguard Worker 
113*7c568831SAndroid Build Coastguard Worker #endif /* LIBXML_C14N_ENABLED */
114*7c568831SAndroid Build Coastguard Worker #endif /* __XML_C14N_H__ */
115*7c568831SAndroid Build Coastguard Worker 
116