| /* libxml2 - Library for parsing XML documents |
| * Copyright (C) 2006-2019 Free Software Foundation, Inc. |
| * |
| * This file is not part of the GNU gettext program, but is used with |
| * GNU gettext. |
| * |
| * The original copyright notice is as follows: |
| */ |
| |
| /* |
| * Copyright (C) 1998-2012 Daniel Veillard. All Rights Reserved. |
| * |
| * Permission is hereby granted, free of charge, to any person obtaining a copy |
| * of this software and associated documentation files (the "Software"), to deal |
| * in the Software without restriction, including without limitation the rights |
| * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
| * copies of the Software, and to permit persons to whom the Software is fur- |
| * nished to do so, subject to the following conditions: |
| * |
| * The above copyright notice and this permission notice shall be included in |
| * all copies or substantial portions of the Software. |
| * |
| * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
| * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT- |
| * NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
| * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
| * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
| * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| * THE SOFTWARE. |
| * |
| * Author: Aleksey Sanin <aleksey@aleksey.com> |
| */ |
| |
| /* |
| * Summary: Provide Canonical XML and Exclusive XML Canonicalization |
| * Description: 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 |
| */ |
| |
| #ifndef __XML_C14N_H__ |
| #define __XML_C14N_H__ |
| #ifdef LIBXML_C14N_ENABLED |
| #ifdef LIBXML_OUTPUT_ENABLED |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif /* __cplusplus */ |
| |
| #include <libxml/xmlversion.h> |
| #include <libxml/tree.h> |
| #include <libxml/xpath.h> |
| |
| /* |
| * XML Canonicazation |
| * http://www.w3.org/TR/xml-c14n |
| * |
| * Exclusive XML Canonicazation |
| * 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 achive this in libxml2 the document MUST be loaded with |
| * following global setings: |
| * |
| * xmlLoadExtDtdDefaultValue = XML_DETECT_IDS | XML_COMPLETE_ATTRS; |
| * xmlSubstituteEntitiesDefault(1); |
| * |
| * or corresponding parser context setting: |
| * xmlParserCtxtPtr ctxt; |
| * |
| * ... |
| * ctxt->loadsubset = XML_DETECT_IDS | XML_COMPLETE_ATTRS; |
| * ctxt->replaceEntities = 1; |
| * ... |
| */ |
| |
| /* |
| * xmlC14NMode: |
| * |
| * Predefined values for C14N modes |
| * |
| */ |
| typedef enum { |
| XML_C14N_1_0 = 0, /* Origianal C14N 1.0 spec */ |
| XML_C14N_EXCLUSIVE_1_0 = 1, /* Exclusive C14N 1.0 spec */ |
| XML_C14N_1_1 = 2 /* C14N 1.1 spec */ |
| } xmlC14NMode; |
| |
| XMLPUBFUN int XMLCALL |
| xmlC14NDocSaveTo (xmlDocPtr doc, |
| xmlNodeSetPtr nodes, |
| int mode, /* a xmlC14NMode */ |
| xmlChar **inclusive_ns_prefixes, |
| int with_comments, |
| xmlOutputBufferPtr buf); |
| |
| XMLPUBFUN int XMLCALL |
| xmlC14NDocDumpMemory (xmlDocPtr doc, |
| xmlNodeSetPtr nodes, |
| int mode, /* a xmlC14NMode */ |
| xmlChar **inclusive_ns_prefixes, |
| int with_comments, |
| xmlChar **doc_txt_ptr); |
| |
| XMLPUBFUN int XMLCALL |
| xmlC14NDocSave (xmlDocPtr doc, |
| xmlNodeSetPtr nodes, |
| int mode, /* a xmlC14NMode */ |
| xmlChar **inclusive_ns_prefixes, |
| int with_comments, |
| const char* filename, |
| int compression); |
| |
| |
| /** |
| * This is the core C14N function |
| */ |
| /** |
| * xmlC14NIsVisibleCallback: |
| * @user_data: user data |
| * @node: the curent node |
| * @parent: the parent node |
| * |
| * Signature for a C14N callback on visible nodes |
| * |
| * Returns 1 if the node should be included |
| */ |
| typedef int (*xmlC14NIsVisibleCallback) (void* user_data, |
| xmlNodePtr node, |
| xmlNodePtr parent); |
| |
| XMLPUBFUN int XMLCALL |
| xmlC14NExecute (xmlDocPtr doc, |
| xmlC14NIsVisibleCallback is_visible_callback, |
| void* user_data, |
| int mode, /* a xmlC14NMode */ |
| xmlChar **inclusive_ns_prefixes, |
| int with_comments, |
| xmlOutputBufferPtr buf); |
| |
| #ifdef __cplusplus |
| } |
| #endif /* __cplusplus */ |
| |
| #endif /* LIBXML_OUTPUT_ENABLED */ |
| #endif /* LIBXML_C14N_ENABLED */ |
| #endif /* __XML_C14N_H__ */ |
| |