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