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: ! 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: