| /* | 
 |  * Summary: Provide Canonical XML and Exclusive XML Canonicalization | 
 |  * Description: the c14n modules provides a | 
 |  * | 
 |  * "Canonical XML" implementation | 
 |  * http://www.w3.org/TR/xml-c14n | 
 |  * | 
 |  * and an | 
 |  * | 
 |  * "Exclusive XML Canonicalization" implementation | 
 |  * http://www.w3.org/TR/xml-exc-c14n | 
 |  | 
 |  * Copy: See Copyright for the status of this software. | 
 |  * | 
 |  * Author: Aleksey Sanin <aleksey@aleksey.com> | 
 |  */ | 
 | #ifndef __XML_C14N_H__ | 
 | #define __XML_C14N_H__ | 
 | #ifdef LIBXML_C14N_ENABLED | 
 | #ifdef LIBXML_OUTPUT_ENABLED | 
 |  | 
 | #ifdef __cplusplus | 
 | extern "C" { | 
 | #endif /* __cplusplus */ | 
 |  | 
 | #include <libxml/xmlversion.h> | 
 | #include <libxml/tree.h> | 
 | #include <libxml/xpath.h> | 
 |  | 
 | /* | 
 |  * XML Canonicazation | 
 |  * http://www.w3.org/TR/xml-c14n | 
 |  * | 
 |  * Exclusive XML Canonicazation | 
 |  * http://www.w3.org/TR/xml-exc-c14n | 
 |  * | 
 |  * Canonical form of an XML document could be created if and only if | 
 |  *  a) default attributes (if any) are added to all nodes | 
 |  *  b) all character and parsed entity references are resolved | 
 |  * In order to achive this in libxml2 the document MUST be loaded with | 
 |  * following global setings: | 
 |  * | 
 |  *    xmlLoadExtDtdDefaultValue = XML_DETECT_IDS | XML_COMPLETE_ATTRS; | 
 |  *    xmlSubstituteEntitiesDefault(1); | 
 |  * | 
 |  * or corresponding parser context setting: | 
 |  *    xmlParserCtxtPtr ctxt; | 
 |  * | 
 |  *    ... | 
 |  *    ctxt->loadsubset = XML_DETECT_IDS | XML_COMPLETE_ATTRS; | 
 |  *    ctxt->replaceEntities = 1; | 
 |  *    ... | 
 |  */ | 
 |  | 
 | /* | 
 |  * xmlC14NMode: | 
 |  * | 
 |  * Predefined values for C14N modes | 
 |  * | 
 |  */ | 
 | typedef enum { | 
 |     XML_C14N_1_0            = 0,    /* Origianal C14N 1.0 spec */ | 
 |     XML_C14N_EXCLUSIVE_1_0  = 1,    /* Exclusive C14N 1.0 spec */ | 
 |     XML_C14N_1_1            = 2     /* C14N 1.1 spec */ | 
 | } xmlC14NMode; | 
 |  | 
 | XMLPUBFUN int XMLCALL | 
 | 		xmlC14NDocSaveTo	(xmlDocPtr doc, | 
 | 					 xmlNodeSetPtr nodes, | 
 | 					 int mode, /* a xmlC14NMode */ | 
 | 					 xmlChar **inclusive_ns_prefixes, | 
 | 					 int with_comments, | 
 | 					 xmlOutputBufferPtr buf); | 
 |  | 
 | XMLPUBFUN int XMLCALL | 
 | 		xmlC14NDocDumpMemory	(xmlDocPtr doc, | 
 | 					 xmlNodeSetPtr nodes, | 
 | 					 int mode, /* a xmlC14NMode */ | 
 | 					 xmlChar **inclusive_ns_prefixes, | 
 | 					 int with_comments, | 
 | 					 xmlChar **doc_txt_ptr); | 
 |  | 
 | XMLPUBFUN int XMLCALL | 
 | 		xmlC14NDocSave		(xmlDocPtr doc, | 
 | 					 xmlNodeSetPtr nodes, | 
 | 					 int mode, /* a xmlC14NMode */ | 
 | 					 xmlChar **inclusive_ns_prefixes, | 
 | 					 int with_comments, | 
 | 					 const char* filename, | 
 | 					 int compression); | 
 |  | 
 |  | 
 | /** | 
 |  * This is the core C14N function | 
 |  */ | 
 | /** | 
 |  * xmlC14NIsVisibleCallback: | 
 |  * @user_data: user data | 
 |  * @node: the curent node | 
 |  * @parent: the parent node | 
 |  * | 
 |  * Signature for a C14N callback on visible nodes | 
 |  * | 
 |  * Returns 1 if the node should be included | 
 |  */ | 
 | typedef int (*xmlC14NIsVisibleCallback)	(void* user_data, | 
 | 					 xmlNodePtr node, | 
 | 					 xmlNodePtr parent); | 
 |  | 
 | XMLPUBFUN int XMLCALL | 
 | 		xmlC14NExecute		(xmlDocPtr doc, | 
 | 					 xmlC14NIsVisibleCallback is_visible_callback, | 
 | 					 void* user_data, | 
 | 					 int mode, /* a xmlC14NMode */ | 
 | 					 xmlChar **inclusive_ns_prefixes, | 
 | 					 int with_comments, | 
 | 					 xmlOutputBufferPtr buf); | 
 |  | 
 | #ifdef __cplusplus | 
 | } | 
 | #endif /* __cplusplus */ | 
 |  | 
 | #endif /* LIBXML_OUTPUT_ENABLED */ | 
 | #endif /* LIBXML_C14N_ENABLED */ | 
 | #endif /* __XML_C14N_H__ */ | 
 |  |