Home | History | Annotate | Download | only in libxml
      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 (at) 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 XMLPUBFUN int XMLCALL
     57 		xmlC14NDocSaveTo	(xmlDocPtr doc,
     58 					 xmlNodeSetPtr nodes,
     59 					 int exclusive,
     60 					 xmlChar **inclusive_ns_prefixes,
     61 					 int with_comments,
     62 					 xmlOutputBufferPtr buf);
     63 
     64 XMLPUBFUN int XMLCALL
     65 		xmlC14NDocDumpMemory	(xmlDocPtr doc,
     66 					 xmlNodeSetPtr nodes,
     67 					 int exclusive,
     68 					 xmlChar **inclusive_ns_prefixes,
     69 					 int with_comments,
     70 					 xmlChar **doc_txt_ptr);
     71 
     72 XMLPUBFUN int XMLCALL
     73 		xmlC14NDocSave		(xmlDocPtr doc,
     74 					 xmlNodeSetPtr nodes,
     75 					 int exclusive,
     76 					 xmlChar **inclusive_ns_prefixes,
     77 					 int with_comments,
     78 					 const char* filename,
     79 					 int compression);
     80 
     81 
     82 /**
     83  * This is the core C14N function
     84  */
     85 /**
     86  * xmlC14NIsVisibleCallback:
     87  * @user_data: user data
     88  * @node: the curent node
     89  * @parent: the parent node
     90  *
     91  * Signature for a C14N callback on visible nodes
     92  *
     93  * Returns 1 if the node should be included
     94  */
     95 typedef int (*xmlC14NIsVisibleCallback)	(void* user_data,
     96 					 xmlNodePtr node,
     97 					 xmlNodePtr parent);
     98 
     99 XMLPUBFUN int XMLCALL
    100 		xmlC14NExecute		(xmlDocPtr doc,
    101 					 xmlC14NIsVisibleCallback is_visible_callback,
    102 					 void* user_data,
    103 					 int exclusive,
    104 					 xmlChar **inclusive_ns_prefixes,
    105 					 int with_comments,
    106 					 xmlOutputBufferPtr buf);
    107 
    108 #ifdef __cplusplus
    109 }
    110 #endif /* __cplusplus */
    111 
    112 #endif /* LIBXML_OUTPUT_ENABLED */
    113 #endif /* LIBXML_C14N_ENABLED */
    114 #endif /* __XML_C14N_H__ */
    115 
    116