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