File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / libxml2 / include / libxml / c14n.h
Revision 1.1.1.2 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Sun Jun 15 19:53:38 2014 UTC (10 years, 3 months ago) by misho
Branches: libxml2, MAIN
CVS tags: v2_9_1p0, v2_9_1, HEAD
libxml2 2.9.1

    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: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>