| /** |
| * @file |
| * |
| * @brief Provide Canonical XML and Exclusive XML Canonicalization |
| * |
| * 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 |
| |
| * @copyright See Copyright for the status of this software. |
| * |
| * @author Aleksey Sanin |
| */ |
| #ifndef __XML_C14N_H__ |
| #define __XML_C14N_H__ |
| |
| #include <libxml/xmlversion.h> |
| |
| #ifdef LIBXML_C14N_ENABLED |
| |
| #include <libxml/tree.h> |
| #include <libxml/xpath.h> |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif /* __cplusplus */ |
| |
| /* |
| * XML Canonicalization |
| * http://www.w3.org/TR/xml-c14n |
| * |
| * Exclusive XML Canonicalization |
| * 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 achieve this in libxml2 the document MUST be loaded with |
| * following options: XML_PARSE_DTDATTR | XML_PARSE_NOENT |
| */ |
| |
| /** |
| * Predefined values for C14N modes |
| */ |
| typedef enum { |
| /** Original C14N 1.0 spec */ |
| XML_C14N_1_0 = 0, |
| /** Exclusive C14N 1.0 spec */ |
| XML_C14N_EXCLUSIVE_1_0 = 1, |
| /** C14N 1.1 spec */ |
| XML_C14N_1_1 = 2 |
| } xmlC14NMode; |
| |
| XMLPUBFUN int |
| xmlC14NDocSaveTo (xmlDoc *doc, |
| xmlNodeSet *nodes, |
| int mode, /* a xmlC14NMode */ |
| xmlChar **inclusive_ns_prefixes, |
| int with_comments, |
| xmlOutputBuffer *buf); |
| |
| XMLPUBFUN int |
| xmlC14NDocDumpMemory (xmlDoc *doc, |
| xmlNodeSet *nodes, |
| int mode, /* a xmlC14NMode */ |
| xmlChar **inclusive_ns_prefixes, |
| int with_comments, |
| xmlChar **doc_txt_ptr); |
| |
| XMLPUBFUN int |
| xmlC14NDocSave (xmlDoc *doc, |
| xmlNodeSet *nodes, |
| int mode, /* a xmlC14NMode */ |
| xmlChar **inclusive_ns_prefixes, |
| int with_comments, |
| const char* filename, |
| int compression); |
| |
| |
| /** |
| * This is the core C14N function |
| */ |
| /** |
| * Signature for a C14N callback on visible nodes |
| * |
| * @param user_data user data |
| * @param node the current node |
| * @param parent the parent node |
| * @returns 1 if the node should be included |
| */ |
| typedef int (*xmlC14NIsVisibleCallback) (void* user_data, |
| xmlNode *node, |
| xmlNode *parent); |
| |
| XMLPUBFUN int |
| xmlC14NExecute (xmlDoc *doc, |
| xmlC14NIsVisibleCallback is_visible_callback, |
| void* user_data, |
| int mode, /* a xmlC14NMode */ |
| xmlChar **inclusive_ns_prefixes, |
| int with_comments, |
| xmlOutputBuffer *buf); |
| |
| #ifdef __cplusplus |
| } |
| #endif /* __cplusplus */ |
| |
| #endif /* LIBXML_C14N_ENABLED */ |
| #endif /* __XML_C14N_H__ */ |
| |