38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/*
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Summary: Provide Canonical XML and Exclusive XML Canonicalization
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Description: the c14n modules provides a
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * "Canonical XML" implementation
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * http://www.w3.org/TR/xml-c14n
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * and an
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * "Exclusive XML Canonicalization" implementation
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * http://www.w3.org/TR/xml-exc-c14n
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Copy: See Copyright for the status of this software.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Author: Aleksey Sanin <aleksey@aleksey.com>
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#ifndef __XML_C14N_H__
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#define __XML_C14N_H__
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#ifdef LIBXML_C14N_ENABLED
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#ifdef LIBXML_OUTPUT_ENABLED
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#ifdef __cplusplus
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncextern "C" {
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#endif /* __cplusplus */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#include <libxml/xmlversion.h>
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#include <libxml/tree.h>
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#include <libxml/xpath.h>
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/*
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * XML Canonicazation
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * http://www.w3.org/TR/xml-c14n
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Exclusive XML Canonicazation
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * http://www.w3.org/TR/xml-exc-c14n
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Canonical form of an XML document could be created if and only if
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * a) default attributes (if any) are added to all nodes
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * b) all character and parsed entity references are resolved
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * In order to achive this in libxml2 the document MUST be loaded with
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * following global setings:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * xmlLoadExtDtdDefaultValue = XML_DETECT_IDS | XML_COMPLETE_ATTRS;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * xmlSubstituteEntitiesDefault(1);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * or corresponding parser context setting:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * xmlParserCtxtPtr ctxt;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * ...
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * ctxt->loadsubset = XML_DETECT_IDS | XML_COMPLETE_ATTRS;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * ctxt->replaceEntities = 1;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * ...
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN int XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlC14NDocSaveTo (xmlDocPtr doc,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlNodeSetPtr nodes,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync int exclusive,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlChar **inclusive_ns_prefixes,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync int with_comments,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlOutputBufferPtr buf);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN int XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlC14NDocDumpMemory (xmlDocPtr doc,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlNodeSetPtr nodes,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync int exclusive,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlChar **inclusive_ns_prefixes,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync int with_comments,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlChar **doc_txt_ptr);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN int XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlC14NDocSave (xmlDocPtr doc,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlNodeSetPtr nodes,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync int exclusive,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlChar **inclusive_ns_prefixes,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync int with_comments,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync const char* filename,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync int compression);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/**
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * This is the core C14N function
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsynctypedef int (*xmlC14NIsVisibleCallback) (void* user_data,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlNodePtr node,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlNodePtr parent);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN int XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlC14NExecute (xmlDocPtr doc,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlC14NIsVisibleCallback is_visible_callback,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync void* user_data,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync int exclusive,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlChar **inclusive_ns_prefixes,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync int with_comments,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlOutputBufferPtr buf);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#ifdef __cplusplus
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync}
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#endif /* __cplusplus */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#endif /* LIBXML_OUTPUT_ENABLED */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#endif /* LIBXML_C14N_ENABLED */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#endif /* __XML_C14N_H__ */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync