• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1      * Summary: the core parser module
2      * Description: Interfaces, constants and types related to the XML parser
3      *
4      * Copy: See Copyright for the status of this software.
5      *
6      * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
7
8      /if not defined(XML_PARSER_H__)
9      /define XML_PARSER_H__
10
11      /include "libxmlrpg/xmlversion"
12      /include "libxmlrpg/xmlTypesC"
13      /include "libxmlrpg/tree"
14      /include "libxmlrpg/dict"
15      /include "libxmlrpg/hash"
16      /include "libxmlrpg/valid"
17      /include "libxmlrpg/entities"
18      /include "libxmlrpg/xmlerror"
19      /include "libxmlrpg/xmlstring"
20
21      * XML_DEFAULT_VERSION:
22      *
23      * The default version of XML used: 1.0
24
25     d XML_DEFAULT_VERSION...
26     d                 c                   '1.0'
27
28      * xmlParserInput:
29      *
30      * An xmlParserInput is an input flow for the XML processor.
31      * Each entity parsed is associated an xmlParserInput (except the
32      * few predefined ones). This is the case both for internal entities
33      * - in which case the flow is already completely in memory - or
34      * external entities - in which case we use the buf structure for
35      * progressive reading and I18N conversions to the internal UTF-8 format.
36
37      * xmlParserInputDeallocate:
38      * @str:  the string to deallocate
39      *
40      * Callback for freeing some parser input allocations.
41
42     d xmlParserInputDeallocate...
43     d                 s               *   based(######typedef######)
44     d                                     procptr
45
46      * Input buffer
47
48     d xmlParserInput  ds                  based(xmlParserInputPtr)
49     d                                     align qualified
50     d  buf                                like(xmlParserInputBufferPtr)        UTF-8 encoded buffer
51     d  filename                       *                                        const char *
52     d  directory                      *                                        const char *
53     d  base                           *                                        const char *
54     d  cur                            *                                        const char *
55     d  end                            *                                        const char *
56     d  length                             like(xmlCint)                        Length if known
57     d  line                               like(xmlCint)                        Current line
58     d  col                                like(xmlCint)                        Current column
59      *
60      * NOTE: consumed is only tested for equality in the parser code,
61      *       so even if there is an overflow this should not give troubles
62      *       for parsing very large instances.
63      *
64     d  consumed                           like(xmlCulong)                      # consumed xmlChars
65     d  free                               like(xmlParserInputDeallocate)       base deallocator
66     d  encoding                       *                                        const xmlChar *
67     d  version                        *                                        const xmlChar *
68     d  standalone                         like(xmlCint)                        Standalone entity ?
69     d  id                                 like(xmlCint)                        Entity unique ID
70
71      * xmlParserNodeInfo:
72      *
73      * The parser can be asked to collect Node information, i.e. at what
74      * place in the file they were detected.
75      * NOTE: This is off by default and not very well tested.
76
77     d xmlParserNodeInfoPtr...
78     d                 s               *   based(######typedef######)
79
80     d xmlParserNodeInfo...
81     d                 ds                  based(xmlParserNodeInfoPtr)
82     d                                     align qualified
83     d  node                               like(xmlNodePtr)                     const
84      * Position & line # that text that created the node begins & ends on
85     d  begin_pos                          like(xmlCulong)
86     d  begin_line                         like(xmlCulong)
87     d  end_pos                            like(xmlCulong)
88     d  end_line                           like(xmlCulong)
89
90     d xmlParserNodeInfoSeqPtr...
91     d                 s               *   based(######typedef######)
92
93     d xmlParserNodeInfoSeq...
94     d                 ds                  based(xmlParserNodeInfoSeqPtr)
95     d                                     align qualified
96     d  maximum                            like(xmlCulong)
97     d  length                             like(xmlCulong)
98     d  buffer                             like(xmlParserNodeInfoPtr)
99
100      * xmlParserInputState:
101      *
102      * The parser is now working also as a state based parser.
103      * The recursive one use the state info for entities processing.
104
105     d xmlParserInputState...
106     d                 s                   based(######typedef######)
107     d                                     like(xmlCenum)
108     d  XML_PARSER_EOF...                                                       Nothing to parse
109     d                 c                   -1
110     d  XML_PARSER_START...                                                     Nothing parsed
111     d                 c                   0
112     d  XML_PARSER_MISC...                                                      Misc* b4 int subset
113     d                 c                   1
114     d  XML_PARSER_PI  c                   2                                    In proc instr
115     d  XML_PARSER_DTD...                                                       In some DTD content
116     d                 c                   3
117     d  XML_PARSER_PROLOG...                                                    Misc* after int sbst
118     d                 c                   4
119     d  XML_PARSER_COMMENT...                                                   Within a comment
120     d                 c                   5
121     d  XML_PARSER_START_TAG...                                                 Within a start tag
122     d                 c                   6
123     d  XML_PARSER_CONTENT...                                                   Within the content
124     d                 c                   7
125     d  XML_PARSER_CDATA_SECTION...                                             Within a CDATA
126     d                 c                   8
127     d  XML_PARSER_END_TAG...                                                   Within a closing tag
128     d                 c                   9
129     d  XML_PARSER_ENTITY_DECL...                                               In an entity decl
130     d                 c                   10
131     d  XML_PARSER_ENTITY_VALUE...                                              In entity decl value
132     d                 c                   11
133     d  XML_PARSER_ATTRIBUTE_VALUE...                                           In attribute value
134     d                 c                   12
135     d  XML_PARSER_SYSTEM_LITERAL...                                            In a SYSTEM value
136     d                 c                   13
137     d  XML_PARSER_EPILOG...                                                    Last end tag Misc*
138     d                 c                   14
139     d  XML_PARSER_IGNORE...                                                    In IGNORED section
140     d                 c                   15
141     d  XML_PARSER_PUBLIC_LITERAL...                                            In a PUBLIC value
142     d                 c                   16
143
144      * XML_DETECT_IDS:
145      *
146      * Bit in the loadsubset context field to tell to do ID/REFs lookups.
147      * Use it to initialize xmlLoadExtDtdDefaultValue.
148
149     d XML_DETECT_IDS  c                   2
150
151      * XML_COMPLETE_ATTRS:
152      *
153      * Bit in the loadsubset context field to tell to do complete the
154      * elements attributes lists with the ones defaulted from the DTDs.
155      * Use it to initialize xmlLoadExtDtdDefaultValue.
156
157     d XML_COMPLETE_ATTRS...
158     d                 c                   4
159
160      * XML_SKIP_IDS:
161      *
162      * Bit in the loadsubset context field to tell to not do ID/REFs
163      *   registration.
164      * Used to initialize xmlLoadExtDtdDefaultValue in some special cases.
165
166     d XML_SKIP_IDS    c                   8
167
168      * xmlParserMode:
169      *
170      * A parser can operate in various modes
171
172     d xmlParserMode   s                   based(######typedef######)
173     d                                     like(xmlCenum)
174     d  XML_PARSE_UNKNOWN...
175     d                 c                   0
176     d  XML_PARSE_DOM...
177     d                 c                   1
178     d  XML_PARSE_SAX...
179     d                 c                   2
180     d  XML_PARSE_PUSH_DOM...
181     d                 c                   3
182     d  XML_PARSE_PUSH_SAX...
183     d                 c                   4
184     d  XML_PARSE_READER...
185     d                 c                   5
186
187      * xmlParserCtxt:
188      *
189      * The parser context.
190      * NOTE This doesn't completely define the parser state, the (current ?)
191      *      design of the parser uses recursive function calls since this allow
192      *      and easy mapping from the production rules of the specification
193      *      to the actual code. The drawback is that the actual function call
194      *      also reflect the parser state. However most of the parsing routines
195      *      takes as the only argument the parser context pointer, so migrating
196      *      to a state based parser for progressive parsing shouldn't be too
197      *      hard.
198
199     d xmlParserCtxt   ds                  based(xmlParserCtxtPtr)
200     d                                     align qualified
201     d  sax                                like(xmlSAXHandlerPtr)               The SAX handler
202     d  userData                       *                                        SAX only-4 DOM build
203     d  myDoc                              like(xmlDocPtr)                      Document being built
204     d  wellFormed                         like(xmlCint)                        Well formed doc ?
205     d  replaceEntities...                                                      Replace entities ?
206     d                                     like(xmlCint)
207     d  version                        *                                        const xmlChar *
208     d  encoding                       *                                        const xmlChar *
209     d  standalone                         like(xmlCint)                        Standalone document
210     d  html                               like(xmlCint)                        HTML state/type
211      *
212      * Input stream stack
213      *
214     d  input                              like(xmlParserInputPtr)              Current input stream
215     d  inputNr                            like(xmlCint)                        # current in streams
216     d  inputMax                           like(xmlCint)                        Max # of in streams
217     d  inputTab                       *                                        xmlParserInputPtr *
218      *
219      * Node analysis stack only used for DOM building
220      *
221     d  node                               like(xmlNodePtr)                     Current parsed node
222     d  nodeNr                             like(xmlCint)                        Parsing stack depth
223     d  nodeMax                            like(xmlCint)                        Max stack depth
224     d  nodeTab                        *                                        xmlNodePtr *
225      *
226     d  record_info                        like(xmlCint)                        Keep node info ?
227     d  node_seq                           likeds(xmlParserNodeInfoSeq)         Parsed nodes info
228      *
229     d  errNo                              like(xmlCint)                        Error code
230      *
231     d  hasExternalSubset...
232     d                                     like(xmlCint)
233     d  hasPErefs                          like(xmlCint)
234     d  external                           like(xmlCint)                        Parsing ext. entity?
235      *
236     d  valid                              like(xmlCint)                        Valid document ?
237     d  validate                           like(xmlCint)                        Try to validate ?
238     d  vctxt                              likeds(xmlValidCtxt)                 Validity context
239      *
240     d  instate                            like(xmlParserInputState)            Current input type
241     d  token                              like(xmlCint)                        Next look-ahead char
242      *
243     d  directory                      *                                        char *
244      *
245      * Node name stack
246      *
247     d  name                           *                                        const xmlChar *
248     d  nameNr                             like(xmlCint)                        Parsing stack depth
249     d  nameMax                            like(xmlCint)                        Max stack depth
250     d  nameTab                        *                                        const xmlChar * *
251      *
252     d  nbChars                            like(xmlClong)                       # xmlChars processed
253     d  checkIndex                         like(xmlClong)                       4 progressive parse
254     d  keepBlanks                         like(xmlCint)                        Ugly but ...
255     d  disableSAX                         like(xmlCint)                        Disable SAX cllbacks
256     d  inSubset                           like(xmlCint)                        In int 1/ext 2 sbset
257     d  intSubName                     *                                        const xmlChar *
258     d  extSubURI                      *                                        const xmlChar *
259     d  extSubSytem                    *                                        const xmlChar *
260      *
261      * xml:space values
262      *
263     d  space                          *                                        int *
264     d  spaceNr                            like(xmlCint)                        Parsing stack depth
265     d  spaceMax                           like(xmlCint)                        Max stack depth
266     d  spaceTab                       *                                        int *
267      *
268     d  depth                              like(xmlCint)                        To detect loops
269     d  entity                             like(xmlParserInputPtr)              To check boundaries
270     d  charset                            like(xmlCint)                        In-memory content
271     d  nodelen                            like(xmlCint)                        Speed up parsing
272     d  nodemem                            like(xmlCint)                        Speed up parsing
273     d  pedantic                           like(xmlCint)                        Enb. pedantic warng
274     d  #private                       *                                        void *
275      *
276     d  loadsubset                         like(xmlCint)                        Load ext. subset ?
277     d  linenumbers                        like(xmlCint)                        Set line numbers ?
278     d  catalogs                       *                                        void *
279     d  recovery                           like(xmlCint)                        Run in recovery mode
280     d  progressive                        like(xmlCint)                        Progressive parsing?
281     d  dict                               like(xmlDictPtr)                     Parser dictionary
282     d  atts                           *                                        const xmlChar *
283     d  maxatts                            like(xmlCint)                        Above array size
284     d  docdict                            like(xmlCint)                        Use dictionary ?
285      *
286      * pre-interned strings
287      *
288     d  str_xml                        *                                        const xmlChar *
289     d  str_xmlns                      *                                        const xmlChar *
290     d  str_xml_ms                     *                                        const xmlChar *
291      *
292      * Everything below is used only by the new SAX mode
293      *
294     d  sax2                               like(xmlCint)                        New SAX mode ?
295     d  nsNr                               like(xmlCint)                        # inherited nmspaces
296     d  nsMax                              like(xmlCint)                        Array size
297     d  nsTab                          *                                        const xmlChar *
298     d  attallocs                      *                                        int *
299     d  pushTab                        *                                        void *
300     d  attsDefault                        like(xmlHashTablePtr)                Defaulted attrs
301     d  attsSpecial                        like(xmlHashTablePtr)                non-CDATA attrs
302     d  nsWellFormed                       like(xmlCint)                        Doc namespace OK ?
303     d  options                            like(xmlCint)                        Extra options
304      *
305      * Those fields are needed only for treaming parsing so far
306      *
307     d  dictNames                          like(xmlCint)                        Dict names in tree ?
308     d  freeElemsNr                        like(xmlCint)                        # free element nodes
309     d  freeElems                          like(xmlNodePtr)                     Free elem nodes list
310     d  freeAttrsNr                        like(xmlCint)                        # free attr. nodes
311     d  freeAttrs                          like(xmlAttrPtr)                     Free attr noes list
312      *
313      * the complete error information for the last error.
314      *
315     d  lastError                          likeds(xmlError)
316     d  parseMode                          like(xmlParserMode)                  The parser mode
317     d  nbentities                         like(xmlCulong)                      # entity references
318     d  sizeentities                       like(xmlCulong)                      Parsed entities size
319      *
320      * for use by HTML non-recursive parser
321      *
322     d  nodeInfo                           like(xmlParserNodeInfoPtr)           Current NodeInfo
323     d  nodeInfoNr                         like(xmlCint)                        Parsing stack depth
324     d  nodeInfoMax                        like(xmlCint)                        Max stack depth
325     d  nodeInfoTab                    *                                        xmlParserNodeInfo *
326      *
327     d  input_id                           like(xmlCint)                        Label inputs ?
328     d  sizeentcopy                        like(xmlCulong)                      Entity copy volume
329
330      * xmlSAXLocator:
331      *
332      * A SAX Locator.
333
334     d xmlSAXLocator   ds                  based(xmlSAXLocatorPtr)
335     d                                     align qualified
336     d  getPublicId                    *   procptr
337     d  getSystemId                    *   procptr
338     d  getLineNumber                  *   procptr
339     d  getColumnNumber...
340     d                                 *   procptr
341
342      * xmlSAXHandler:
343      *
344      * A SAX handler is bunch of callbacks called by the parser when
345      * processing of the input generate data or structure information.
346
347      * resolveEntitySAXFunc:
348      * @ctx:  the user data (XML parser context)
349      * @publicId: The public ID of the entity
350      * @systemId: The system ID of the entity
351      *
352      * Callback:
353      * The entity loader, to control the loading of external entities,
354      * the application can either:
355      *    - override this resolveEntity() callback in the SAX block
356      *    - or better use the xmlSetExternalEntityLoader() function to
357      *      set up it's own entity resolution routine
358      *
359      * Returns the xmlParserInputPtr if inlined or NULL for DOM behaviour.
360
361     d resolveEntitySAXFunc...
362     d                 s               *   based(######typedef######)
363     d                                     procptr
364
365      * internalSubsetSAXFunc:
366      * @ctx:  the user data (XML parser context)
367      * @name:  the root element name
368      * @ExternalID:  the external ID
369      * @SystemID:  the SYSTEM ID (e.g. filename or URL)
370      *
371      * Callback on internal subset declaration.
372
373     d internalSubsetSAXFunc...
374     d                 s               *   based(######typedef######)
375     d                                     procptr
376
377      * externalSubsetSAXFunc:
378      * @ctx:  the user data (XML parser context)
379      * @name:  the root element name
380      * @ExternalID:  the external ID
381      * @SystemID:  the SYSTEM ID (e.g. filename or URL)
382      *
383      * Callback on external subset declaration.
384
385     d externalSubsetSAXFunc...
386     d                 s               *   based(######typedef######)
387     d                                     procptr
388
389      * getEntitySAXFunc:
390      * @ctx:  the user data (XML parser context)
391      * @name: The entity name
392      *
393      * Get an entity by name.
394      *
395      * Returns the xmlEntityPtr if found.
396
397     d getEntitySAXFunc...
398     d                 s               *   based(######typedef######)
399     d                                     procptr
400
401      * getParameterEntitySAXFunc:
402      * @ctx:  the user data (XML parser context)
403      * @name: The entity name
404      *
405      * Get a parameter entity by name.
406      *
407      * Returns the xmlEntityPtr if found.
408
409     d getParameterEntitySAXFunc...
410     d                 s               *   based(######typedef######)
411     d                                     procptr
412
413      * entityDeclSAXFunc:
414      * @ctx:  the user data (XML parser context)
415      * @name:  the entity name
416      * @type:  the entity type
417      * @publicId: The public ID of the entity
418      * @systemId: The system ID of the entity
419      * @content: the entity value (without processing).
420      *
421      * An entity definition has been parsed.
422
423     d entityDeclSAXFunc...
424     d                 s               *   based(######typedef######)
425     d                                     procptr
426
427      * notationDeclSAXFunc:
428      * @ctx:  the user data (XML parser context)
429      * @name: The name of the notation
430      * @publicId: The public ID of the entity
431      * @systemId: The system ID of the entity
432      *
433      * What to do when a notation declaration has been parsed.
434
435     d notationDeclSAXFunc...
436     d                 s               *   based(######typedef######)
437     d                                     procptr
438
439      * attributeDeclSAXFunc:
440      * @ctx:  the user data (XML parser context)
441      * @elem:  the name of the element
442      * @fullname:  the attribute name
443      * @type:  the attribute type
444      * @def:  the type of default value
445      * @defaultValue: the attribute default value
446      * @tree:  the tree of enumerated value set
447      *
448      * An attribute definition has been parsed.
449
450     d attributeDeclSAXFunc...
451     d                 s               *   based(######typedef######)
452     d                                     procptr
453
454      * elementDeclSAXFunc:
455      * @ctx:  the user data (XML parser context)
456      * @name:  the element name
457      * @type:  the element type
458      * @content: the element value tree
459      *
460      * An element definition has been parsed.
461
462     d elementDeclSAXFunc...
463     d                 s               *   based(######typedef######)
464     d                                     procptr
465
466      * unparsedEntityDeclSAXFunc:
467      * @ctx:  the user data (XML parser context)
468      * @name: The name of the entity
469      * @publicId: The public ID of the entity
470      * @systemId: The system ID of the entity
471      * @notationName: the name of the notation
472      *
473      * What to do when an unparsed entity declaration is parsed.
474
475     d unparsedEntityDeclSAXFunc...
476     d                 s               *   based(######typedef######)
477     d                                     procptr
478
479      * setDocumentLocatorSAXFunc:
480      * @ctx:  the user data (XML parser context)
481      * @loc: A SAX Locator
482      *
483      * Receive the document locator at startup, actually xmlDefaultSAXLocator.
484      * Everything is available on the context, so this is useless in our case.
485
486     d setDocumentLocatorSAXFunc...
487     d                 s               *   based(######typedef######)
488     d                                     procptr
489
490      * startDocumentSAXFunc:
491      * @ctx:  the user data (XML parser context)
492      *
493      * Called when the document start being processed.
494
495     d startDocumentSAXFunc...
496     d                 s               *   based(######typedef######)
497     d                                     procptr
498
499      * endDocumentSAXFunc:
500      * @ctx:  the user data (XML parser context)
501      *
502      * Called when the document end has been detected.
503
504     d endDocumentSAXFunc...
505     d                 s               *   based(######typedef######)
506     d                                     procptr
507
508      * startElementSAXFunc:
509      * @ctx:  the user data (XML parser context)
510      * @name:  The element name, including namespace prefix
511      * @atts:  An array of name/value attributes pairs, NULL terminated
512      *
513      * Called when an opening tag has been processed.
514
515     d startElementSAXFunc...
516     d                 s               *   based(######typedef######)
517     d                                     procptr
518
519      * endElementSAXFunc:
520      * @ctx:  the user data (XML parser context)
521      * @name:  The element name
522      *
523      * Called when the end of an element has been detected.
524
525     d endElementSAXFunc...
526     d                 s               *   based(######typedef######)
527     d                                     procptr
528
529      * attributeSAXFunc:
530      * @ctx:  the user data (XML parser context)
531      * @name:  The attribute name, including namespace prefix
532      * @value:  The attribute value
533      *
534      * Handle an attribute that has been read by the parser.
535      * The default handling is to convert the attribute into an
536      * DOM subtree and past it in a new xmlAttr element added to
537      * the element.
538
539     d attributeSAXFunc...
540     d                 s               *   based(######typedef######)
541     d                                     procptr
542
543      * referenceSAXFunc:
544      * @ctx:  the user data (XML parser context)
545      * @name:  The entity name
546      *
547      * Called when an entity reference is detected.
548
549     d referenceSAXFunc...
550     d                 s               *   based(######typedef######)
551     d                                     procptr
552
553      * charactersSAXFunc:
554      * @ctx:  the user data (XML parser context)
555      * @ch:  a xmlChar string
556      * @len: the number of xmlChar
557      *
558      * Receiving some chars from the parser.
559
560     d charactersSAXFunc...
561     d                 s               *   based(######typedef######)
562     d                                     procptr
563
564      * ignorableWhitespaceSAXFunc:
565      * @ctx:  the user data (XML parser context)
566      * @ch:  a xmlChar string
567      * @len: the number of xmlChar
568      *
569      * Receiving some ignorable whitespaces from the parser.
570      * UNUSED: by default the DOM building will use characters.
571
572     d ignorableWhitespaceSAXFunc...
573     d                 s               *   based(######typedef######)
574     d                                     procptr
575
576      * processingInstructionSAXFunc:
577      * @ctx:  the user data (XML parser context)
578      * @target:  the target name
579      * @data: the PI data's
580      *
581      * A processing instruction has been parsed.
582
583     d processingInstructionSAXFunc...
584     d                 s               *   based(######typedef######)
585     d                                     procptr
586
587      * commentSAXFunc:
588      * @ctx:  the user data (XML parser context)
589      * @value:  the comment content
590      *
591      * A comment has been parsed.
592
593     d commentSAXFunc...
594     d                 s               *   based(######typedef######)
595     d                                     procptr
596
597      * cdataBlockSAXFunc:
598      * @ctx:  the user data (XML parser context)
599      * @value:  The pcdata content
600      * @len:  the block length
601      *
602      * Called when a pcdata block has been parsed.
603
604     d cdataBlockSAXFunc...
605     d                 s               *   based(######typedef######)
606     d                                     procptr
607
608      * warningSAXFunc:
609      * @ctx:  an XML parser context
610      * @msg:  the message to display/transmit
611      * @...:  extra parameters for the message display
612      *
613      * Display and format a warning messages, callback.
614
615     d warningSAXFunc...
616     d                 s               *   based(######typedef######)
617     d                                     procptr
618
619      * errorSAXFunc:
620      * @ctx:  an XML parser context
621      * @msg:  the message to display/transmit
622      * @...:  extra parameters for the message display
623      *
624      * Display and format an error messages, callback.
625
626     d errorSAXFunc...
627     d                 s               *   based(######typedef######)
628     d                                     procptr
629
630      * fatalErrorSAXFunc:
631      * @ctx:  an XML parser context
632      * @msg:  the message to display/transmit
633      * @...:  extra parameters for the message display
634      *
635      * Display and format fatal error messages, callback.
636      * Note: so far fatalError() SAX callbacks are not used, error()
637      *       get all the callbacks for errors.
638
639     d fatalErrorSAXFunc...
640     d                 s               *   based(######typedef######)
641     d                                     procptr
642
643      * isStandaloneSAXFunc:
644      * @ctx:  the user data (XML parser context)
645      *
646      * Is this document tagged standalone?
647      *
648      * Returns 1 if true
649
650     d isStandaloneSAXFunc...
651     d                 s               *   based(######typedef######)
652     d                                     procptr
653
654      * hasInternalSubsetSAXFunc:
655      * @ctx:  the user data (XML parser context)
656      *
657      * Does this document has an internal subset.
658      *
659      * Returns 1 if true
660
661     d hasInternalSubsetSAXFunc...
662     d                 s               *   based(######typedef######)
663     d                                     procptr
664
665      * hasExternalSubsetSAXFunc:
666      * @ctx:  the user data (XML parser context)
667      *
668      * Does this document has an external subset?
669      *
670      * Returns 1 if true
671
672     d hasExternalSubsetSAXFunc...
673     d                 s               *   based(######typedef######)
674     d                                     procptr
675
676      ************************************************************************
677      *                                                                      *
678      *                      The SAX version 2 API extensions                *
679      *                                                                      *
680      ************************************************************************
681
682      * XML_SAX2_MAGIC:
683      *
684      * Special constant found in SAX2 blocks initialized fields
685
686     d XML_SAX2_MAGIC  c                   X'DEEDBEAF'
687
688      * startElementNsSAX2Func:
689      * @ctx:           the user data (XML parser context)
690      * @localname:     the local name of the element
691      * @prefix:        the element namespace prefix if available
692      * @URI:           the element namespace name if available
693      * @nb_namespaces: number of namespace definitions on that node
694      * @namespaces:    pointer to the array of prefix/URI pairs namespace
695      *                 definitions
696      * @nb_attributes:  the number of attributes on that node
697      * @nb_defaulted:   the number of defaulted attributes. The defaulted
698      *                  ones are at the end of the array
699      * @attributes:     pointer to the array of
700      *                  (localname/prefix/URI/value/end) attribute values.
701      *
702      * SAX2 callback when an element start has been detected by the parser.
703      * It provides the namespace information for the element, as well as
704      * the new namespace declarations on the element.
705
706     d startElementNsSAX2Func...
707     d                 s               *   based(######typedef######)
708     d                                     procptr
709
710      * endElementNsSAX2Func:
711      * @ctx:  the user data (XML parser context)
712      * @localname:  the local name of the element
713      * @prefix:  the element namespace prefix if available
714      * @URI:  the element namespace name if available
715      *
716      * SAX2 callback when an element end has been detected by the parser.
717      * It provides the namespace information for the element.
718
719     d endElementNsSAX2Func...
720     d                 s               *   based(######typedef######)
721     d                                     procptr
722
723     d xmlSAXHandler   ds                  based(xmlSAXHandlerPtr)
724     d                                     align qualified
725     d  internalSubset...
726     d                                     like(internalSubsetSAXFunc)
727     d  isStandalone                       like(isStandaloneSAXFunc)
728     d  hasInternalSubset...
729     d                                     like(hasInternalSubsetSAXFunc)
730     d  hasExternalSubset...
731     d                                     like(hasExternalSubsetSAXFunc)
732     d  resolveEntity                      like(resolveEntitySAXFunc)
733     d  getEntity                          like(getEntitySAXFunc)
734     d  entityDecl                         like(entityDeclSAXFunc)
735     d  notationDecl                       like(notationDeclSAXFunc)
736     d  attributeDecl                      like(attributeDeclSAXFunc)
737     d  elementDecl                        like(elementDeclSAXFunc)
738     d  unparsedEntityDecl...
739     d                                     like(unparsedEntityDeclSAXFunc)
740     d  setDocumentLocator...
741     d                                     like(setDocumentLocatorSAXFunc)
742     d  startDocument                      like(startDocumentSAXFunc)
743     d  endDocument                        like(endDocumentSAXFunc)
744     d  startElement                       like(startElementSAXFunc)
745     d  endElement                         like(endElementSAXFunc)
746     d  reference                          like(referenceSAXFunc)
747     d  characters                         like(charactersSAXFunc)
748     d  ignorableWhitespace...
749     d                                     like(ignorableWhitespaceSAXFunc)
750     d  processingInstruction...
751     d                                     like(processingInstructionSAXFunc)
752     d  comment                            like(commentSAXFunc)
753     d  warning                            like(warningSAXFunc)
754     d  error                              like(errorSAXFunc)
755     d  fatalError                         like(fatalErrorSAXFunc)
756     d  getParameterEntity...
757     d                                     like(getParameterEntitySAXFunc)
758     d  cdataBlock                         like(cdataBlockSAXFunc)
759     d  externalSubset...
760     d                                     like(externalSubsetSAXFunc)
761     d  initialized                        like(xmlCuint)
762      *
763      * The following fields are extensions available only on version 2
764      *
765     d  #private                       *                                        void *
766     d  startElementNs...
767     d                                     like(startElementNsSAX2Func)
768     d  endELementNs                       like(endElementNsSAX2Func)
769     d  serror                             like(xmlStructuredErrorFunc)
770
771      * SAX Version 1
772
773     d xmlSAXHandlerV1Ptr...
774     d                 s               *   based(######typedef######)
775
776     d xmlSAXHandlerV1...
777     d                 ds                  based(xmlSAXHandlerV1Ptr)
778     d                                     align qualified
779     d  internalSubset...
780     d                                     like(internalSubsetSAXFunc)
781     d  isStandalone                       like(isStandaloneSAXFunc)
782     d  hasInternalSubset...
783     d                                     like(hasInternalSubsetSAXFunc)
784     d  hasExternalSubset...
785     d                                     like(hasExternalSubsetSAXFunc)
786     d  resolveEntity                      like(resolveEntitySAXFunc)
787     d  getEntity                          like(getEntitySAXFunc)
788     d  entityDecl                         like(entityDeclSAXFunc)
789     d  notationDecl                       like(notationDeclSAXFunc)
790     d  attributeDecl                      like(attributeDeclSAXFunc)
791     d  elementDecl                        like(elementDeclSAXFunc)
792     d  unparsedEntityDecl...
793     d                                     like(unparsedEntityDeclSAXFunc)
794     d  setDocumentLocator...
795     d                                     like(setDocumentLocatorSAXFunc)
796     d  startDocument                      like(startDocumentSAXFunc)
797     d  endDocument                        like(endDocumentSAXFunc)
798     d  startElement                       like(startElementSAXFunc)
799     d  endElement                         like(endElementSAXFunc)
800     d  reference                          like(referenceSAXFunc)
801     d  characters                         like(charactersSAXFunc)
802     d  ignorableWhitespace...
803     d                                     like(ignorableWhitespaceSAXFunc)
804     d  processingInstruction...
805     d                                     like(processingInstructionSAXFunc)
806     d  comment                            like(commentSAXFunc)
807     d  warning                            like(warningSAXFunc)
808     d  error                              like(errorSAXFunc)
809     d  fatalError                         like(fatalErrorSAXFunc)
810     d  getParameterEntity...
811     d                                     like(getParameterEntitySAXFunc)
812     d  cdataBlock                         like(cdataBlockSAXFunc)
813     d  externalSubset...
814     d                                     like(externalSubsetSAXFunc)
815     d  initialized                        like(xmlCuint)
816
817      * xmlExternalEntityLoader:
818      * @URL: The System ID of the resource requested
819      * @ID: The Public ID of the resource requested
820      * @context: the XML parser context
821      *
822      * External entity loaders types.
823      *
824      * Returns the entity input parser.
825
826     d xmlExternalEntityLoader...
827     d                 s               *   based(######typedef######)
828     d                                     procptr
829
830      /include "libxmlrpg/encoding"
831      /include "libxmlrpg/xmlIO"
832      /include "libxmlrpg/globals"
833
834      * Init/Cleanup
835
836     d xmlInitParser   pr                  extproc('xmlInitParser')
837
838     d xmlCleanupParser...
839     d                 pr                  extproc('xmlCleanupParser')
840
841      * Input functions
842
843     d xmlParserInputRead...
844     d                 pr                  extproc('xmlParserInputRead')
845     d                                     like(xmlCint)
846     d  in                                 value like(xmlParserInputPtr)
847     d  len                                value like(xmlCint)
848
849     d xmlParserInputGrow...
850     d                 pr                  extproc('xmlParserInputGrow')
851     d                                     like(xmlCint)
852     d  in                                 value like(xmlParserInputPtr)
853     d  len                                value like(xmlCint)
854
855      * Basic parsing Interfaces
856
857      /if defined(LIBXML_SAX1_ENABLED)
858     d xmlParseDoc     pr                  extproc('xmlParseDoc')
859     d                                     like(xmlDocPtr)
860     d  cur                            *   value options(*string)               const xmlChar *
861
862     d xmlParseFile    pr                  extproc('xmlParseFile')
863     d                                     like(xmlDocPtr)
864     d  filename                       *   value options(*string)               const char *
865
866     d xmlParseMemory  pr                  extproc('xmlParseMemory')
867     d                                     like(xmlDocPtr)
868     d  buffer                         *   value options(*string)               const char *
869     d  size                               value like(xmlCint)
870      /endif                                                                    LIBXML_SAX1_ENABLED
871
872     d xmlSubstituteEntitiesDefault...
873     d                 pr                  extproc(
874     d                                      'xmlSubstituteEntitiesDefault')
875     d                                     like(xmlCint)
876     d  val                                value like(xmlCint)
877
878     d xmlKeepBlanksDefault...
879     d                 pr                  extproc('xmlKeepBlanksDefault')
880     d                                     like(xmlCint)
881     d  val                                value like(xmlCint)
882
883     d xmlStopParser   pr                  extproc('xmlStopParser')
884     d  ctxt                               value like(xmlParserCtxtPtr)
885
886     d xmlPedanticParserDefault...
887     d                 pr                  extproc('xmlPedanticParserDefault')
888     d                                     like(xmlCint)
889     d  val                                value like(xmlCint)
890
891     d xmlLineNumbersDefault...
892     d                 pr                  extproc('xmlLineNumbersDefault')
893     d                                     like(xmlCint)
894     d  val                                value like(xmlCint)
895
896      /if defined(LIBXML_SAX1_ENABLED)
897      * Recovery mode
898
899     d xmlRecoverDoc   pr                  extproc('xmlRecoverDoc')
900     d                                     like(xmlDocPtr)
901     d  cur                            *   value options(*string)               const xmlChar *
902
903     d xmlRecoverMemory...
904     d                 pr                  extproc('xmlRecoverMemory')
905     d                                     like(xmlDocPtr)
906     d  buffer                         *   value options(*string)               const char *
907     d  size                               value like(xmlCint)
908
909     d xmlRecoverFile  pr                  extproc('xmlRecoverFile')
910     d                                     like(xmlDocPtr)
911     d  filename                       *   value options(*string)               const char *
912      /endif                                                                    LIBXML_SAX1_ENABLED
913
914      * Less common routines and SAX interfaces
915
916     d xmlParseDocument...
917     d                 pr                  extproc('xmlParseDocument')
918     d                                     like(xmlCint)
919     d  ctxt                               value like(xmlParserCtxtPtr)
920
921     d xmlParseExtParsedEnt...
922     d                 pr                  extproc('xmlParseExtParsedEnt')
923     d                                     like(xmlCint)
924     d  ctxt                               value like(xmlParserCtxtPtr)
925
926      /if defined(LIBXML_SAX1_ENABLED)
927     d xmlSAXUserParseFile...
928     d                 pr                  extproc('xmlSAXUserParseFile')
929     d                                     like(xmlCint)
930     d  sax                                value like(xmlSAXHandlerPtr)
931     d  user_data                      *   value                                void *
932     d  filename                       *   value options(*string)               const char *
933
934     d xmlSAXUserParseMemory...
935     d                 pr                  extproc('xmlSAXUserParseMemory')
936     d                                     like(xmlCint)
937     d  sax                                value like(xmlSAXHandlerPtr)
938     d  user_data                      *   value                                void *
939     d  buffer                         *   value options(*string)               const char *
940     d  size                               value like(xmlCint)
941
942     d xmlSAXParseDoc  pr                  extproc('xmlSAXParseDoc')
943     d                                     like(xmlDocPtr)
944     d  sax                                value like(xmlSAXHandlerPtr)
945     d  cur                            *   value options(*string)               const xmlChar *
946     d  recovery                           value like(xmlCint)
947
948     d xmlSAXParseMemory...
949     d                 pr                  extproc('xmlSAXParseMemory')
950     d                                     like(xmlDocPtr)
951     d  sax                                value like(xmlSAXHandlerPtr)
952     d  buffer                         *   value options(*string)               const char *
953     d  size                               value like(xmlCint)
954     d  recovery                           value like(xmlCint)
955
956     d xmlSAXParseMemoryWithData...
957     d                 pr                  extproc('xmlSAXParseMemoryWithData')
958     d                                     like(xmlDocPtr)
959     d  sax                                value like(xmlSAXHandlerPtr)
960     d  buffer                         *   value options(*string)               const char *
961     d  size                               value like(xmlCint)
962     d  recovery                           value like(xmlCint)
963     d  data                           *   value                                void *
964
965     d xmlSAXParseFile...
966     d                 pr                  extproc('xmlSAXParseFile')
967     d                                     like(xmlDocPtr)
968     d  sax                                value like(xmlSAXHandlerPtr)
969     d  filename                       *   value options(*string)               const char *
970     d  recovery                           value like(xmlCint)
971
972     d xmlSAXParseFileWithData...
973     d                 pr                  extproc('xmlSAXParseFileWithData')
974     d                                     like(xmlDocPtr)
975     d  sax                                value like(xmlSAXHandlerPtr)
976     d  filename                       *   value options(*string)               const char *
977     d  recovery                           value like(xmlCint)
978     d  data                           *   value                                void *
979
980     d xmlSAXParseEntity...
981     d                 pr                  extproc('xmlSAXParseEntity')
982     d                                     like(xmlDocPtr)
983     d  sax                                value like(xmlSAXHandlerPtr)
984     d  filename                       *   value options(*string)               const char *
985
986     d xmlParseEntity...
987     d                 pr                  extproc('xmlParseEntity')
988     d                                     like(xmlDocPtr)
989     d  filename                       *   value options(*string)               const char *
990      /endif                                                                    LIBXML_SAX1_ENABLED
991
992      /if defined(LIBXML_VALID_ENABLED)
993     d xmlSAXParseDTD  pr                  extproc('xmlSAXParseDTD')
994     d                                     like(xmlDtdPtr)
995     d  sax                                value like(xmlSAXHandlerPtr)
996     d  ExternalID                     *   value options(*string)               const xmlChar *
997     d  SystemID                       *   value options(*string)               const xmlChar *
998
999     d xmlParseDTD     pr                  extproc('xmlParseDTD')
1000     d                                     like(xmlDtdPtr)
1001     d  ExternalID                     *   value options(*string)               const xmlChar *
1002     d  SystemID                       *   value options(*string)               const xmlChar *
1003
1004     d xmlIOParseDTD   pr                  extproc('xmlIOParseDTD')
1005     d                                     like(xmlDtdPtr)
1006     d  sax                                value like(xmlSAXHandlerPtr)
1007     d  input                              value like(xmlParserInputBufferPtr)
1008     d  enc                                value like(xmlCharEncoding)
1009      /endif                                                                    LIBXML_VALID_ENABLED
1010
1011      /if defined(LIBXML_SAX1_ENABLED)
1012     d xmlParseBalancedChunkMemory...
1013     d                 pr                  extproc(
1014     d                                      'xmlParseBalancedChunkMemory')
1015     d                                     like(xmlCint)
1016     d  doc                                value like(xmlDocPtr)
1017     d  sax                                value like(xmlSAXHandlerPtr)
1018     d  user_data                      *   value                                void *
1019     d  depth                              value like(xmlCint)
1020     d  user_data                      *   value                                void *
1021     d  string                         *   value options(*string)               const xmlChar *
1022     d  lst                            *   value                                xmlNodePtr *
1023      /endif                                                                    LIBXML_SAX1_ENABLED
1024
1025     d xmlParseInNodeContext...
1026     d                 pr                  extproc('xmlParseInNodeContext')
1027     d                                     like(xmlParserErrors)
1028     d  node                               value like(xmlNodePtr)
1029     d  data                           *   value options(*string)               const char *
1030     d  datalen                            value like(xmlCint)
1031     d  options                            value like(xmlCint)
1032     d  lst                            *   value                                xmlNodePtr *
1033
1034      /if defined(LIBXML_SAX1_ENABLED)
1035     d xmlParseBalancedChunkMemoryRecover...
1036     d                 pr                  extproc(
1037     d                                     'xmlParseBalancedChunkMemoryRecover')
1038     d                                     like(xmlCint)
1039     d  doc                                value like(xmlDocPtr)
1040     d  sax                                value like(xmlSAXHandlerPtr)
1041     d  user_data                      *   value                                void *
1042     d  depth                              value like(xmlCint)
1043     d  string                         *   value options(*string)               const xmlChar *
1044     d  lst                            *   value                                xmlNodePtr *
1045     d  recover                            value like(xmlCint)
1046
1047     d xmlParseExternalEntity...
1048     d                 pr                  extproc('xmlParseExternalEntity')
1049     d                                     like(xmlCint)
1050     d  doc                                value like(xmlDocPtr)
1051     d  sax                                value like(xmlSAXHandlerPtr)
1052     d  user_data                      *   value                                void *
1053     d  depth                              value like(xmlCint)
1054     d  URL                            *   value options(*string)               const xmlChar *
1055     d  ID                             *   value options(*string)               const xmlChar *
1056     d  lst                            *   value                                xmlNodePtr *
1057      /endif                                                                    LIBXML_SAX1_ENABLED
1058
1059     d xmlParseCtxtExternalEntity...
1060     d                 pr                  extproc('xmlParseCtxtExternalEntity')
1061     d                                     like(xmlCint)
1062     d  sax                                value like(xmlSAXHandlerPtr)
1063     d  URL                            *   value options(*string)               const xmlChar *
1064     d  ID                             *   value options(*string)               const xmlChar *
1065     d  lst                            *   value                                xmlNodePtr *
1066
1067      * Parser contexts handling.
1068
1069     d xmlNewParserCtxt...
1070     d                 pr                  extproc('xmlNewParserCtxt')
1071     d                                     like(xmlParserCtxtPtr)
1072
1073     d xmlInitParserCtxt...
1074     d                 pr                  extproc('xmlInitParserCtxt')
1075     d                                     like(xmlCint)
1076     d  ctxt                               value like(xmlParserCtxtPtr)
1077
1078     d xmlClearParserCtxt...
1079     d                 pr                  extproc('xmlClearParserCtxt')
1080     d  ctxt                               value like(xmlParserCtxtPtr)
1081
1082     d xmlFreeParserCtxt...
1083     d                 pr                  extproc('xmlFreeParserCtxt')
1084     d  ctxt                               value like(xmlParserCtxtPtr)
1085
1086      /if defined(LIBXML_SAX1_ENABLED)
1087     d xmlSetupParserForBuffer...
1088     d                 pr                  extproc('xmlSetupParserForBuffer')
1089     d  ctxt                               value like(xmlParserCtxtPtr)
1090     d  buffer                         *   value options(*string)               const xmlChar *
1091     d  filename                       *   value options(*string)               const char *
1092      /endif                                                                    LIBXML_SAX1_ENABLED
1093
1094     d xmlCreateDocParserCtxt...
1095     d                 pr                  extproc('xmlCreateDocParserCtxt')
1096     d                                     like(xmlParserCtxtPtr)
1097     d  cur                            *   value options(*string)               const xmlChar *
1098
1099      /if defined(LIBXML_LEGACY_ENABLED)
1100      * Reading/setting optional parsing features.
1101
1102     d xmlGetFeaturesList...
1103     d                 pr                  extproc('xmlGetFeaturesList')
1104     d                                     like(xmlCint)
1105     d  len                                like(xmlCint)
1106     d  result                         *                                        const char *(*)
1107
1108     d xmlGetFeature   pr                  extproc('xmlGetFeature')
1109     d                                     like(xmlCint)
1110     d  ctxt                               value like(xmlParserCtxtPtr)
1111     d  name                           *   value options(*string)               const char *
1112     d  result                         *   value                                void *
1113
1114     d xmlSetFeature   pr                  extproc('xmlSetFeature')
1115     d                                     like(xmlCint)
1116     d  ctxt                               value like(xmlParserCtxtPtr)
1117     d  name                           *   value options(*string)               const char *
1118     d  result                         *   value                                void *
1119      /endif                                                                    LIBXML_LEGACY_ENABLD
1120
1121      /if defined(LIBXML_PUSH_ENABLED)
1122      * Interfaces for the Push mode.
1123
1124     d xmlCreatePushParserCtxt...
1125     d                 pr                  extproc('xmlCreatePushParserCtxt')
1126     d                                     like(xmlParserCtxtPtr)
1127     d  sax                                value like(xmlSAXHandlerPtr)
1128     d  user_data                      *   value                                void *
1129     d  chunk                          *   value options(*string)               const char *
1130     d  size                               value like(xmlCint)
1131     d  filename                       *   value options(*string)               const char *
1132
1133     d xmlParseChunk   pr                  extproc('xmlParseChunk')
1134     d                                     like(xmlCint)
1135     d  ctxt                               value like(xmlParserCtxtPtr)
1136     d  chunk                          *   value options(*string)               const char *
1137     d  size                               value like(xmlCint)
1138     d  terminate                          value like(xmlCint)
1139      /endif                                                                    LIBXML_PUSH_ENABLED
1140
1141      * Special I/O mode.
1142
1143     d xmlCreateIOParserCtxt...
1144     d                 pr                  extproc('xmlCreateIOParserCtxt')
1145     d                                     like(xmlParserCtxtPtr)
1146     d  sax                                value like(xmlSAXHandlerPtr)
1147     d  user_data                      *   value                                void *
1148     d  ioread                             value like(xmlInputReadCallback)
1149     d  ioclose                            value like(xmlInputCloseCallback)
1150     d  ioctx                          *   value                                void *
1151     d  enc                                value like(xmlCharEncoding)
1152
1153     d xmlNewIOInputStream...
1154     d                 pr                  extproc('xmlNewIOInputStream')
1155     d                                     like(xmlParserInputPtr)
1156     d  ctxt                               value like(xmlParserCtxtPtr)
1157     d  input                              value like(xmlParserInputBufferPtr)
1158     d  enc                                value like(xmlCharEncoding)
1159
1160      * Node infos.
1161
1162     d xmlParserFindNodeInfo...
1163     d                 pr              *   extproc('xmlParserFindNodeInfo')     xmlParserNodeInfo *
1164     d  ctxt                               value like(xmlParserCtxtPtr)
1165     d  node                               value like(xmlNodePtr)               const
1166
1167     d xmlInitNodeInfoSeq...
1168     d                 pr                  extproc('xmlInitNodeInfoSeq')
1169     d  seq                                value like(xmlParserNodeInfoSeqPtr)
1170
1171     d xmlClearNodeInfoSeq...
1172     d                 pr                  extproc('xmlClearNodeInfoSeq')
1173     d  seq                                value like(xmlParserNodeInfoSeqPtr)
1174
1175     d xmlParserFindNodeInfoIndex...
1176     d                 pr                  extproc('xmlParserFindNodeInfoIndex')
1177     d                                     like(xmlCulong)
1178     d  seq                                value like(xmlParserNodeInfoSeqPtr)
1179     d  node                               value like(xmlNodePtr)               const
1180
1181     d xmlParserAddNodeInfo...
1182     d                 pr                  extproc('xmlParserAddNodeInfo')
1183     d  ctxt                               value like(xmlParserCtxtPtr)
1184     d  info                               value like(xmlParserNodeInfoPtr)     const
1185
1186      * External entities handling actually implemented in xmlIO.
1187
1188     d xmlSetExternalEntityLoader...
1189     d                 pr                  extproc('xmlSetExternalEntityLoader')
1190     d  f                                  value like(xmlExternalEntityLoader)
1191
1192     d xmlGetExternalEntityLoader...
1193     d                 pr                  extproc('xmlGetExternalEntityLoader')
1194     d                                     like(xmlExternalEntityLoader)
1195
1196     d xmlLoadExternalEntity...
1197     d                 pr                  extproc('xmlLoadExternalEntity')
1198     d                                     like(xmlParserInputPtr)
1199     d  URL                            *   value options(*string)               const char *
1200     d  ID                             *   value options(*string)               const char *
1201     d  ctxt                               value like(xmlParserCtxtPtr)
1202
1203      * Index lookup, actually implemented in the encoding module
1204
1205     d xmlByteConsumed...
1206     d                 pr                  extproc('xmlByteConsumed')
1207     d                                     like(xmlClong)
1208     d  ctxt                               value like(xmlParserCtxtPtr)
1209
1210      * New set of simpler/more flexible APIs
1211
1212      * xmlParserOption:
1213      *
1214      * This is the set of XML parser options that can be passed down
1215      * to the xmlReadDoc() and similar calls.
1216
1217     d xmlParserOption...
1218     d                 s                   based(######typedef######)
1219     d                                     like(xmlCenum)
1220     d  XML_PARSE_RECOVER...                                                    Recover on errors
1221     d                 c                   X'00000001'
1222     d  XML_PARSE_NOENT...                                                      Substitute entities
1223     d                 c                   X'00000002'
1224     d  XML_PARSE_DTDLOAD...                                                    Load external subset
1225     d                 c                   X'00000004'
1226     d  XML_PARSE_DTDATTR...                                                    Default DTD attrs
1227     d                 c                   X'00000008'
1228     d  XML_PARSE_DTDVALID...                                                   Validate with DTD
1229     d                 c                   X'00000010'
1230     d  XML_PARSE_NOERROR...                                                    Suppress err reports
1231     d                 c                   X'00000020'
1232     d  XML_PARSE_NOWARNING...                                                  Suppr warn reports
1233     d                 c                   X'00000040'
1234     d  XML_PARSE_PEDANTIC...                                                   Pedantic err report
1235     d                 c                   X'00000080'
1236     d  XML_PARSE_NOBLANKS...                                                   Remove blank nodes
1237     d                 c                   X'00000100'
1238     d  XML_PARSE_SAX1...                                                       Use SAX1 internally
1239     d                 c                   X'00000200'
1240     d  XML_PARSE_XINCLUDE...                                                   Impl XInclude subst
1241     d                 c                   X'00000400'
1242     d  XML_PARSE_NONET...                                                      Forbid netwrk access
1243     d                 c                   X'00000800'
1244     d  XML_PARSE_NODICT...                                                     No contxt dict reuse
1245     d                 c                   X'00001000'
1246     d  XML_PARSE_NSCLEAN...                                                    Rmv redndnt ns decls
1247     d                 c                   X'00002000'
1248     d  XML_PARSE_NOCDATA...                                                    CDATA as text nodes
1249     d                 c                   X'00004000'
1250     d  XML_PARSE_NOXINCNODE...                                                 No XINCL START/END
1251     d                 c                   X'00008000'
1252     d  XML_PARSE_COMPACT...                                                    Compact text nodes
1253     d                 c                   X'00010000'
1254     d  XML_PARSE_OLD10...                                                      B4 upd5 compatible
1255     d                 c                   X'00020000'
1256     d  XML_PARSE_NOBASEFIX...                                                  No XINC xml:base fix
1257     d                 c                   X'00040000'
1258     d  XML_PARSE_HUGE...                                                       No parsing limit
1259     d                 c                   X'00080000'
1260     d  XML_PARSE_OLDSAX...                                                     Use SAX2 b4 2.7.0
1261     d                 c                   X'00100000'
1262     d  XML_PARSE_IGNORE_ENC...                                                 No int doc code hint
1263     d                 c                   X'00200000'
1264     d  XML_PARSE_BIG_LINES...                                                  Big line#-->PSVI fld
1265     d                 c                   X'00400000'
1266
1267     d xmlCtxtReset    pr                  extproc('xmlCtxtReset')
1268     d  ctxt                               value like(xmlParserCtxtPtr)
1269
1270     d xmlCtxtResetPush...
1271     d                 pr                  extproc('xmlCtxtResetPush')
1272     d                                     like(xmlCint)
1273     d  ctxt                               value like(xmlParserCtxtPtr)
1274     d  chunk                          *   value options(*string)               const char *
1275     d  size                               value like(xmlCint)
1276     d  filename                       *   value options(*string)               const char *
1277     d  encoding                       *   value options(*string)               const char *
1278
1279     d xmlCtxtUseOptions...
1280     d                 pr                  extproc('xmlCtxtUseOptions')
1281     d                                     like(xmlCint)
1282     d  ctxt                               value like(xmlParserCtxtPtr)
1283     d  options                            value like(xmlCint)
1284
1285     d xmlReadDoc      pr                  extproc('xmlReadDoc')
1286     d                                     like(xmlDocPtr)
1287     d  cur                            *   value options(*string)               const xmlChar *
1288     d  URL                            *   value options(*string)               const char *
1289     d  encoding                       *   value options(*string)               const char *
1290     d  options                            value like(xmlCint)
1291
1292     d xmlReadFile     pr                  extproc('xmlReadFile')
1293     d                                     like(xmlDocPtr)
1294     d  URL                            *   value options(*string)               const char *
1295     d  encoding                       *   value options(*string)               const char *
1296     d  options                            value like(xmlCint)
1297
1298     d xmlReadMemory   pr                  extproc('xmlReadMemory')
1299     d                                     like(xmlDocPtr)
1300     d  buffer                         *   value options(*string)               const char *
1301     d  size                               value like(xmlCint)
1302     d  URL                            *   value options(*string)               const char *
1303     d  encoding                       *   value options(*string)               const char *
1304     d  options                            value like(xmlCint)
1305
1306     d xmlReadFd       pr                  extproc('xmlReadFd')
1307     d                                     like(xmlDocPtr)
1308     d  fd                                 value like(xmlCint)
1309     d  URL                            *   value options(*string)               const char *
1310     d  encoding                       *   value options(*string)               const char *
1311     d  options                            value like(xmlCint)
1312
1313     d xmlReadIO       pr                  extproc('xmlReadIO')
1314     d                                     like(xmlDocPtr)
1315     d  ioread                             value like(xmlInputReadCallback)
1316     d  ioclose                            value like(xmlInputCloseCallback)
1317     d  ioctx                          *   value                                void *
1318     d  URL                            *   value options(*string)               const char *
1319     d  encoding                       *   value options(*string)               const char *
1320     d  options                            value like(xmlCint)
1321
1322     d xmlCtxtReadDoc  pr                  extproc('xmlCtxtReadDoc')
1323     d                                     like(xmlDocPtr)
1324     d  ctxt                               value like(xmlParserCtxtPtr)
1325     d  cur                            *   value options(*string)               const xmlChar *
1326     d  URL                            *   value options(*string)               const char *
1327     d  encoding                       *   value options(*string)               const char *
1328     d  options                            value like(xmlCint)
1329
1330     d xmlCtxtReadFile...
1331     d                 pr                  extproc('xmlCtxtReadFile')
1332     d                                     like(xmlDocPtr)
1333     d  ctxt                               value like(xmlParserCtxtPtr)
1334     d  filename                       *   value options(*string)               const char *
1335     d  encoding                       *   value options(*string)               const char *
1336     d  options                            value like(xmlCint)
1337
1338     d xmlCtxtReadMemory...
1339     d                 pr                  extproc('xmlCtxtReadMemory')
1340     d                                     like(xmlDocPtr)
1341     d  ctxt                               value like(xmlParserCtxtPtr)
1342     d  buffer                         *   value options(*string)               const char *
1343     d  size                               value like(xmlCint)
1344     d  URL                            *   value options(*string)               const char *
1345     d  encoding                       *   value options(*string)               const char *
1346     d  options                            value like(xmlCint)
1347
1348     d xmlCtxtReadFd   pr                  extproc('xmlCtxtReadFd')
1349     d                                     like(xmlDocPtr)
1350     d  ctxt                               value like(xmlParserCtxtPtr)
1351     d  fd                                 value like(xmlCint)
1352     d  URL                            *   value options(*string)               const char *
1353     d  encoding                       *   value options(*string)               const char *
1354     d  options                            value like(xmlCint)
1355
1356     d xmlCtxtReadIO   pr                  extproc('xmlCtxtReadIO')
1357     d                                     like(xmlDocPtr)
1358     d  ctxt                               value like(xmlParserCtxtPtr)
1359     d  ioread                             value like(xmlInputReadCallback)
1360     d  ioclose                            value like(xmlInputCloseCallback)
1361     d  ioctx                          *   value                                void *
1362     d  URL                            *   value options(*string)               const char *
1363     d  encoding                       *   value options(*string)               const char *
1364     d  options                            value like(xmlCint)
1365
1366      * Library wide options
1367
1368      * xmlFeature:
1369      *
1370      * Used to examine the existence of features that can be enabled
1371      * or disabled at compile-time.
1372      * They used to be called XML_FEATURE_xxx but this clashed with Expat
1373
1374     d xmlFeature      s                   based(######typedef######)
1375     d                                     like(xmlCenum)
1376     d  XML_WITH_THREAD...
1377     d                 c                   1
1378     d  XML_WITH_TREE  c                   2
1379     d  XML_WITH_OUTPUT...
1380     d                 c                   3
1381     d  XML_WITH_PUSH  c                   4
1382     d  XML_WITH_READER...
1383     d                 c                   5
1384     d  XML_WITH_PATTERN...
1385     d                 c                   6
1386     d  XML_WITH_WRITER...
1387     d                 c                   7
1388     d  XML_WITH_SAX1  c                   8
1389     d  XML_WITH_FTP   c                   9
1390     d  XML_WITH_HTTP  c                   10
1391     d  XML_WITH_VALID...
1392     d                 c                   11
1393     d  XML_WITH_HTML  c                   12
1394     d  XML_WITH_LEGACY...
1395     d                 c                   13
1396     d  XML_WITH_C14N  c                   14
1397     d  XML_WITH_CATALOG...
1398     d                 c                   15
1399     d  XML_WITH_XPATH...
1400     d                 c                   16
1401     d  XML_WITH_XPTR  c                   17
1402     d  XML_WITH_XINCLUDE...
1403     d                 c                   18
1404     d  XML_WITH_ICONV...
1405     d                 c                   19
1406     d  XML_WITH_ISO8859X...
1407     d                 c                   20
1408     d  XML_WITH_UNICODE...
1409     d                 c                   21
1410     d  XML_WITH_REGEXP...
1411     d                 c                   22
1412     d  XML_WITH_AUTOMATA...
1413     d                 c                   23
1414     d  XML_WITH_EXPR  c                   24
1415     d  XML_WITH_SCHEMAS...
1416     d                 c                   25
1417     d  XML_WITH_SCHEMATRON...
1418     d                 c                   26
1419     d  XML_WITH_MODULES...
1420     d                 c                   27
1421     d  XML_WITH_DEBUG...
1422     d                 c                   28
1423     d  XML_WITH_DEBUG_MEM...
1424     d                 c                   29
1425     d  XML_WITH_DEBUG_RUN...
1426     d                 c                   30
1427     d  XML_WITH_ZLIB  c                   31
1428     d  XML_WITH_ICU   c                   32
1429     d  XML_WITH_LZMA  c                   33
1430     d  XML_WITH_NONE  c                   99999
1431
1432     d xmlHasFeature   pr                  extproc('xmlHasFeature')
1433     d                                     like(xmlCint)
1434     d  feature                            value like(xmlFeature)
1435
1436      /endif                                                                    XML_PARSER_H__
1437