Home | History | Annotate | Download | only in libxmlrpg
      1       * Summary: Provide Canonical XML and Exclusive XML Canonicalization
      2       * Description: the c14n modules provides a
      3       *
      4       * "Canonical XML" implementation
      5       * http://www.w3.org/TR/xml-c14n
      6       *
      7       * and an
      8       *
      9       * "Exclusive XML Canonicalization" implementation
     10       * http://www.w3.org/TR/xml-exc-c14n
     11       *
     12       * Copy: See Copyright for the status of this software.
     13       *
     14       * Author: Patrick Monnerat <pm (a] datasphere.ch>, DATASPHERE S.A.
     15 
     16       /if not defined(XML_C14N_H__)
     17       /define XML_C14N_H__
     18 
     19       /include "libxmlrpg/xmlversion"
     20 
     21       /if defined(LIBXML_C14N_ENABLED)
     22       /if defined(LIBXML_OUTPUT_ENABLED)
     23 
     24       /include "libxmlrpg/tree"
     25       /include "libxmlrpg/xpath"
     26 
     27       * XML Canonicazation
     28       * http://www.w3.org/TR/xml-c14n
     29       *
     30       * Exclusive XML Canonicazation
     31       * http://www.w3.org/TR/xml-exc-c14n
     32       *
     33       * Canonical form of an XML document could be created if and only if
     34       *  a) default attributes (if any) are added to all nodes
     35       *  b) all character and parsed entity references are resolved
     36       * In order to achive this in libxml2 the document MUST be loaded with
     37       * following global setings:
     38       *
     39       *    xmlLoadExtDtdDefaultValue = XML_DETECT_IDS  XML_COMPLETE_ATTRS;
     40       *    xmlSubstituteEntitiesDefault(1);
     41       *
     42       * or corresponding parser context setting:
     43       *    xmlParserCtxtPtr ctxt;
     44       *
     45       *    ...
     46       *    ctxt->loadsubset = XML_DETECT_IDS  XML_COMPLETE_ATTRS;
     47       *    ctxt->replaceEntities = 1;
     48       *    ...
     49 
     50       * xmlC14NMode:
     51       *
     52       * Predefined values for C14N modes
     53 
     54      d xmlBufferAllocationScheme...
     55      d xmlC14NMode     s             10i 0 based(######typedef######)           enum
     56      d  XML_C14N_1_0   c                   0                                    Original C14N 1.0
     57      d  XML_C14N_EXCLUSIVE_1_0...                                               Exclusive C14N 1.0
     58      d                 c                   1
     59      d  XML_C14N_1_1   c                   2                                    C14N 1.1 spec
     60 
     61      d xmlC14NDocSaveTo...
     62      d                 pr            10i 0 extproc('xmlC14NDocSaveTo')
     63      d  doc                                value like(xmlDocPtr)
     64      d  nodes                              value like(xmlNodeSetPtr)
     65      d  mode                         10i 0 value
     66      d  inclusive_ns_prefixes...
     67      d                                 *                                        xmlChar *(*)
     68      d  with_comments                10i 0 value
     69      d  buf                                value like(xmlOutputBufferPtr)
     70 
     71      d xmlC14NDocDumpMemory...
     72      d                 pr            10i 0 extproc('xmlC14NDocDumpMemory')
     73      d  doc                                value like(xmlDocPtr)
     74      d  nodes                              value like(xmlNodeSetPtr)
     75      d  mode                         10i 0 value
     76      d  inclusive_ns_prefixes...
     77      d                                 *                                        xmlChar *(*)
     78      d  with_comments                10i 0 value
     79      d  doc_txt_ptr                    *                                        xmlChar *(*)
     80 
     81      d xmlC14NDocSave  pr            10i 0 extproc('xmlC14NDocSave')
     82      d  doc                                value like(xmlDocPtr)
     83      d  nodes                              value like(xmlNodeSetPtr)
     84      d  mode                         10i 0 value
     85      d  inclusive_ns_prefixes...
     86      d                                 *                                        xmlChar *(*)
     87      d  with_comments                10i 0 value
     88      d  filename                       *   value options(*string)               const char *
     89      d  compression                  10i 0 value
     90 
     91       * This is the core C14N function
     92 
     93       * xmlC14NIsVisibleCallback:
     94       * @user_data: user data
     95       * @node: the curent node
     96       * @parent: the parent node
     97       *
     98       * Signature for a C14N callback on visible nodes
     99       *
    100       * Returns 1 if the node should be included
    101 
    102      d xmlC14NIsVisibleCallback...
    103      d                 s               *   based(######typedef######)
    104      d                                     procptr
    105 
    106      d xmlC14NExecute  pr            10i 0 extproc('xmlC14NExecute')
    107      d  doc                                value like(xmlDocPtr)
    108      d  is_visible_callback...
    109      d                                     value like(xmlC14NIsVisibleCallback)
    110      d  user_data                      *   value                                void *
    111      d  mode                         10i 0 value
    112      d  inclusive_ns_prefixes...
    113      d                                 *                                        xmlChar *(*)
    114      d  with_comments                10i 0 value
    115      d  buf                                value like(xmlOutputBufferPtr)
    116 
    117       /endif                                                                    LIBXML_OUTPUT_ENABLD
    118       /endif                                                                    LIBXML_C14N_ENABLED
    119       /endif                                                                    XML_C14N_H__
    120