Return to c14n.h CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / libxml2 / include / libxml |
1.1 misho 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:
1.1.1.2 ! misho 57: *
1.1 misho 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: