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