blob: 9f4c6c019bf3561d9e794cc72551f0984b8ea571 [file] [log] [blame]
Daniel Veillard044fc6b2002-03-04 17:09:44 +00001/*
Daniel Veillardbe586972003-11-18 20:56:51 +00002 * Summary: Provide Canonical XML and Exclusive XML Canonicalization
3 * Description: the c14n modules provides a
4 *
Daniel Veillard044fc6b2002-03-04 17:09:44 +00005 * "Canonical XML" implementation
6 * http://www.w3.org/TR/xml-c14n
7 *
Daniel Veillardbe586972003-11-18 20:56:51 +00008 * and an
9 *
Daniel Veillard044fc6b2002-03-04 17:09:44 +000010 * "Exclusive XML Canonicalization" implementation
11 * http://www.w3.org/TR/xml-exc-c14n
12
Daniel Veillardbe586972003-11-18 20:56:51 +000013 * Copy: See Copyright for the status of this software.
Daniel Veillard044fc6b2002-03-04 17:09:44 +000014 *
15 * Author: Aleksey Sanin <aleksey@aleksey.com>
16 */
17#ifndef __XML_C14N_H__
18#define __XML_C14N_H__
Daniel Veillarda2351322004-06-27 12:08:10 +000019#ifdef LIBXML_C14N_ENABLED
Daniel Veillarda9cce9c2003-09-29 13:20:24 +000020#ifdef LIBXML_OUTPUT_ENABLED
Daniel Veillard044fc6b2002-03-04 17:09:44 +000021
22#ifdef __cplusplus
23extern "C" {
24#endif /* __cplusplus */
25
Igor Zlatkovic76874e42003-08-25 09:05:12 +000026#include <libxml/xmlversion.h>
Daniel Veillard044fc6b2002-03-04 17:09:44 +000027#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 */
Aleksey Sanin2c135a12002-08-01 06:31:50 +000054
55
Igor Zlatkovic76874e42003-08-25 09:05:12 +000056XMLPUBFUN int XMLCALL
57 xmlC14NDocSaveTo (xmlDocPtr doc,
Daniel Veillard044fc6b2002-03-04 17:09:44 +000058 xmlNodeSetPtr nodes,
59 int exclusive,
60 xmlChar **inclusive_ns_prefixes,
61 int with_comments,
62 xmlOutputBufferPtr buf);
63
Igor Zlatkovic76874e42003-08-25 09:05:12 +000064XMLPUBFUN int XMLCALL
65 xmlC14NDocDumpMemory (xmlDocPtr doc,
Daniel Veillard044fc6b2002-03-04 17:09:44 +000066 xmlNodeSetPtr nodes,
67 int exclusive,
68 xmlChar **inclusive_ns_prefixes,
69 int with_comments,
70 xmlChar **doc_txt_ptr);
71
Igor Zlatkovic76874e42003-08-25 09:05:12 +000072XMLPUBFUN int XMLCALL
73 xmlC14NDocSave (xmlDocPtr doc,
Daniel Veillard044fc6b2002-03-04 17:09:44 +000074 xmlNodeSetPtr nodes,
75 int exclusive,
76 xmlChar **inclusive_ns_prefixes,
77 int with_comments,
78 const char* filename,
79 int compression);
80
81
Aleksey Sanin2c135a12002-08-01 06:31:50 +000082/**
83 * This is the core C14N function
84 */
85typedef int (*xmlC14NIsVisibleCallback) (void* user_data,
86 xmlNodePtr node,
87 xmlNodePtr parent);
88
Igor Zlatkovic76874e42003-08-25 09:05:12 +000089XMLPUBFUN int XMLCALL
90 xmlC14NExecute (xmlDocPtr doc,
Aleksey Sanin2c135a12002-08-01 06:31:50 +000091 xmlC14NIsVisibleCallback is_visible_callback,
92 void* user_data,
93 int exclusive,
94 xmlChar **inclusive_ns_prefixes,
95 int with_comments,
96 xmlOutputBufferPtr buf);
97
Daniel Veillard044fc6b2002-03-04 17:09:44 +000098#ifdef __cplusplus
99}
100#endif /* __cplusplus */
101
Daniel Veillarda9cce9c2003-09-29 13:20:24 +0000102#endif /* LIBXML_OUTPUT_ENABLED */
Daniel Veillarda2351322004-06-27 12:08:10 +0000103#endif /* LIBXML_C14N_ENABLED */
Daniel Veillard044fc6b2002-03-04 17:09:44 +0000104#endif /* __XML_C14N_H__ */
105