3f3be3265768f4c1fefebed80ce1a0ef62c912f4
[platform/upstream/libxml2.git] / os400 / libxmlrpg / xpath.rpgle
1       * Summary: XML Path Language implementation
2       * Description: API for the XML Path Language implementation
3       *
4       * XML Path Language implementation
5       * XPath is a language for addressing parts of an XML document,
6       * designed to be used by both XSLT and XPointer
7       *     http://www.w3.org/TR/xpath
8       *
9       * Implements
10       * W3C Recommendation 16 November 1999
11       *     http://www.w3.org/TR/1999/REC-xpath-19991116
12       *
13       * Copy: See Copyright for the status of this software.
14       *
15       * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
16
17       /if not defined(XML_XPATH_H__)
18       /define XML_XPATH_H__
19
20       /include "libxmlrpg/xmlversion"
21
22       /if defined(LIBXML_XPATH_ENABLED)
23
24       /include "libxmlrpg/xmlerror"
25       /include "libxmlrpg/tree"
26       /include "libxmlrpg/hash"
27       /endif                                                                    LIBXML_XPATH_ENABLED
28
29       /if defined(LIBXML_XPATH_ENABLED)
30
31      d xmlXPathContextPtr...
32      d                 s               *   based(######typedef######)
33
34      d xmlXPathParserContextPtr...
35      d                 s               *   based(######typedef######)
36
37       * The set of XPath error codes.
38
39      d xmlXPathError   s             10i 0 based(######typedef######)           enum
40      d  XPATH_EXPRESSION_OK...
41      d                 c                   0
42      d  XPATH_NUMBER_ERROR...
43      d                 c                   1
44      d  XPATH_UNFINISHED_LITERAL_ERROR...
45      d                 c                   2
46      d  XPATH_START_LITERAL_ERROR...
47      d                 c                   3
48      d  XPATH_VARIABLE_REF_ERROR...
49      d                 c                   4
50      d  XPATH_UNDEF_VARIABLE_ERROR...
51      d                 c                   5
52      d  XPATH_INVALID_PREDICATE_ERROR...
53      d                 c                   6
54      d  XPATH_EXPR_ERROR...
55      d                 c                   7
56      d  XPATH_UNCLOSED_ERROR...
57      d                 c                   8
58      d  XPATH_UNKNOWN_FUNC_ERROR...
59      d                 c                   9
60      d  XPATH_INVALID_OPERAND...
61      d                 c                   10
62      d  XPATH_INVALID_TYPE...
63      d                 c                   11
64      d  XPATH_INVALID_ARITY...
65      d                 c                   12
66      d  XPATH_INVALID_CTXT_SIZE...
67      d                 c                   13
68      d  XPATH_INVALID_CTXT_POSITION...
69      d                 c                   14
70      d  XPATH_MEMORY_ERROR...
71      d                 c                   15
72      d  XPTR_SYNTAX_ERROR...
73      d                 c                   16
74      d  XPTR_RESOURCE_ERROR...
75      d                 c                   17
76      d  XPTR_SUB_RESOURCE_ERROR...
77      d                 c                   18
78      d  XPATH_UNDEF_PREFIX_ERROR...
79      d                 c                   19
80      d  XPATH_ENCODING_ERROR...
81      d                 c                   20
82      d  XPATH_INVALID_CHAR_ERROR...
83      d                 c                   21
84      d  XPATH_INVALID_CTXT...
85      d                 c                   22
86      d  XPATH_STACK_ERROR...
87      d                 c                   23
88      d  XPATH_FORBID_VARIABLE_ERROR...
89      d                 c                   24
90
91       * A node-set (an unordered collection of nodes without duplicates).
92
93      d xmlNodeSetPtr   s               *   based(######typedef######)
94
95      d xmlNodeSet      ds                  based(xmlNodeSetPtr)
96      d                                     align qualified
97      d  nodeNr                       10i 0                                      Set node count
98      d  nodeMax                      10i 0                                      Max # nodes in set
99      d  nodeTab                        *                                        xmlNodePtr *
100
101       * An expression is evaluated to yield an object, which
102       * has one of the following four basic types:
103       *   - node-set
104       *   - boolean
105       *   - number
106       *   - string
107       *
108       * @@ XPointer will add more types !
109
110      d xmlXPathObjectType...
111      d                 s             10i 0 based(######typedef######)           enum
112      d  XPATH_UNDEFINED...
113      d                 c                   0
114      d  XPATH_NODESET  c                   1
115      d  XPATH_BOOLEAN  c                   2
116      d  XPATH_NUMBER   c                   3
117      d  XPATH_STRING   c                   4
118      d  XPATH_POINT    c                   5
119      d  XPATH_RANGE    c                   6
120      d  XPATH_LOCATIONSET...
121      d                 c                   7
122      d  XPATH_USERS    c                   8
123      d  XPATH_XSLT_TREE...                                                      R/O XSLT value tree
124      d                 c                   9
125
126      d xmlXPathObjectPtr...
127      d                 s               *   based(######typedef######)
128
129      d xmlXPathObject  ds                  based(xmlXPathObjectPtr)
130      d                                     align qualified
131      d  type                               like(xmlXPathObjectType)
132      d  nodesetval                         like(xmlNodeSetPtr)
133      d  boolval                      10i 0
134      d  floatval                      8f
135      d  stringval                      *                                        xmlChar *
136      d  user                           *                                        void *
137      d  index                        10i 0
138      d  user2                          *                                        void *
139      d  index2                       10i 0
140
141       * xmlXPathConvertFunc:
142       * @obj:  an XPath object
143       * @type:  the number of the target type
144       *
145       * A conversion function is associated to a type and used to cast
146       * the new type to primitive values.
147       *
148       * Returns -1 in case of error, 0 otherwise
149
150      d xmlXPathConvertFunc...
151      d                 s               *   based(######typedef######)
152      d                                     procptr
153
154       * Extra type: a name and a conversion function.
155
156      d xmlXPathTypePtr...
157      d                 s               *   based(######typedef######)
158
159      d xmlXPathType    ds                  based(xmlXPathTypePtr)
160      d                                     align qualified
161      d  name                           *                                        The type name
162      d  func                               like(xmlXPathConvertFunc)            Conversion function
163
164       * Extra variable: a name and a value.
165
166      d xmlXPathVariablePtr...
167      d                 s               *   based(######typedef######)
168
169      d xmlXPathVariable...
170      d                 ds                  based(xmlXPathVariablePtr)
171      d                                     align qualified
172      d  name                           *                                        The variable name
173      d  value                              like(xmlXPathObjectPtr)              The value
174
175       * xmlXPathEvalFunc:
176       * @ctxt: an XPath parser context
177       * @nargs: the number of arguments passed to the function
178       *
179       * An XPath evaluation function, the parameters are on the XPath
180       *   context stack.
181
182      d xmlXPathEvalFunc...
183      d                 s               *   based(######typedef######)
184      d                                     procptr
185
186       * Extra function: a name and an evaluation function.
187
188      d xmlXPathFuncPtr...
189      d                 s               *   based(######typedef######)
190
191      d xmlXPathFunct   ds                  based(xmlXPathFuncPtr)
192      d                                     align qualified
193      d  name                           *                                        The function name
194      d  func                               like(xmlXPathEvalFunc)               Evaluation function
195
196       * xmlXPathAxisFunc:
197       * @ctxt:  the XPath interpreter context
198       * @cur:  the previous node being explored on that axis
199       *
200       * An axis traversal function. To traverse an axis, the engine calls
201       * the first time with cur == NULL and repeat until the function returns
202       * NULL indicating the end of the axis traversal.
203       *
204       * Returns the next node in that axis or NULL if at the end of the axis.
205
206      d xmlXPathAxisFunc...
207      d                 s               *   based(######typedef######)
208      d                                     procptr
209
210       * Extra axis: a name and an axis function.
211
212      d xmlXPathAxisPtr...
213      d                 s               *   based(######typedef######)
214
215      d xmlXPathAxis    ds                  based(xmlXPathAxisPtr)
216      d                                     align qualified
217      d  name                           *                                        The axis name
218      d  func                               like(xmlXPathAxisFunc)               The search function
219
220       * xmlXPathFunction:
221       * @ctxt:  the XPath interprestation context
222       * @nargs:  the number of arguments
223       *
224       * An XPath function.
225       * The arguments (if any) are popped out from the context stack
226       * and the result is pushed on the stack.
227
228      d xmlXPathFunction...
229      d                 s               *   based(######typedef######)
230      d                                     procptr
231
232       * Function and Variable Lookup.
233
234       * xmlXPathVariableLookupFunc:
235       * @ctxt:  an XPath context
236       * @name:  name of the variable
237       * @ns_uri:  the namespace name hosting this variable
238       *
239       * Prototype for callbacks used to plug variable lookup in the XPath
240       * engine.
241       *
242       * Returns the XPath object value or NULL if not found.
243
244      d xmlXPathVariableLookupFunc...
245      d                 s               *   based(######typedef######)
246      d                                     procptr
247
248       * xmlXPathFuncLookupFunc:
249       * @ctxt:  an XPath context
250       * @name:  name of the function
251       * @ns_uri:  the namespace name hosting this function
252       *
253       * Prototype for callbacks used to plug function lookup in the XPath
254       * engine.
255       *
256       * Returns the XPath function or NULL if not found.
257
258      d xmlXPathFuncLookupFunc...
259      d                 s               *   based(######typedef######)
260      d                                     procptr
261
262       * xmlXPathFlags:
263       * Flags for XPath engine compilation and runtime
264
265       * XML_XPATH_CHECKNS:
266       *
267       * check namespaces at compilation
268
269      d  XML_XPATH_CHECKNS...
270      d                 c                   X'0001'
271
272       * XML_XPATH_NOVAR:
273       *
274       * forbid variables in expression
275
276      d  XML_XPATH_NOVAR...
277      d                 c                   X'0002'
278
279       * xmlXPathContext:
280       *
281       * Expression evaluation occurs with respect to a context.
282       * he context consists of:
283       *    - a node (the context node)
284       *    - a node list (the context node list)
285       *    - a set of variable bindings
286       *    - a function library
287       *    - the set of namespace declarations in scope for the expression
288       * Following the switch to hash tables, this need to be trimmed up at
289       * the next binary incompatible release.
290       * The node may be modified when the context is passed to libxml2
291       * for an XPath evaluation so you may need to initialize it again
292       * before the next call.
293
294      d xmlXPathContext...
295      d                 ds                  based(xmlXPathContextPtr)
296      d                                     align qualified
297      d  doc                                like(xmlDocPtr)                      Current document
298      d  node                               like(xmlNodePtr)                     Current node
299       *
300      d  nb_variables_unused...                                                  Unused (hash table)
301      d                               10i 0
302      d  max_variables_unused...                                                  Unused (hash table)
303      d                               10i 0
304      d  varHash                            like(xmlHashTablePtr)                 Defined variables
305       *
306      d  nb_types                     10i 0                                       # of defined types
307      d  max_types                    10i 0                                       Max number of types
308      d  types                              like(xmlXPathTypePtr)                 Defined types array
309       *
310      d  nb_funcs_unused...                                                      Unused (hash table)
311      d                               10i 0
312      d  max_funcs_unused...                                                      Unused (hash table)
313      d                               10i 0
314      d  funcHash                           like(xmlHashTablePtr)                 Defined functions
315       *
316      d  nb_axis                      10i 0                                       # of defined axis
317      d  max_axis                     10i 0                                       Max number of axis
318      d  axis                               like(xmlXPathAxisPtr)                 Defined axis array
319       *
320       * the namespace nodes of the context node
321       *
322      d  namespaces                     *                                         xmlNsPtr *
323      d  nsNr                         10i 0                                       # scope namespaces
324      d  user                           *   procptr                               Function to free
325       *
326       * extra variables
327       *
328      d  contextSize                  10i 0                                       The context size
329      d  proximityPosition...
330      d                               10i 0
331       *
332       * extra stuff for XPointer
333       *
334      d  xptr                         10i 0                                       XPointer context ?
335      d  here                               like(xmlNodePtr)                      For here()
336      d  origin                             like(xmlNodePtr)                      For origin()
337       *
338       * the set of namespace declarations in scope for the expression
339       *
340      d  nsHash                             like(xmlHashTablePtr)                 Namespace hashtable
341      d  varLookupFunc                      like(xmlXPathVariableLookupFunc)      Var lookup function
342      d  varLookupData                  *                                         void *
343       *
344       * Possibility to link in an extra item
345       *
346      d  extra                          *                                         void *
347       *
348       * The function name and URI when calling a function
349       *
350      d  function                       *                                         const xmlChar *
351      d  functionURI                    *                                         const xmlChar *
352       *
353       * function lookup function and data
354       *
355      d  funcLookupFunc...                                                        Func lookup func
356      d                                     like(xmlXPathVariableLookupFunc)
357      d  funcLookupData...                                                        void *
358      d                                 *
359       *
360       * temporary namespace lists kept for walking the namespace axis
361       *
362      d  tmpNsList                      *                                        xmlNsPtr *
363      d  tmpNsNr                      10i 0                                      # scope namespaces
364       *
365       * error reporting mechanism
366       *
367      d  userData                       *                                        void *
368      d  error                              like(xmlStructuredErrorFunc)         Error callback
369      d  lastError                          like(xmlError)                       The last error
370      d  debugNode                          like(xmlNodePtr)                     XSLT source node
371       *
372       * dictionary
373       *
374      d  dict                               like(xmlDictPtr)                     Dictionary if any
375       *
376      d  flags                        10i 0                                      Compilation control
377       *
378       * Cache for reusal of XPath objects
379       *
380      d  cache                          *                                        void *
381
382       * The structure of a compiled expression form is not public.
383
384      d xmlXPathCompExprPtr...
385      d                 s               *   based(######typedef######)
386
387       * xmlXPathParserContext:
388       *
389       * An XPath parser context. It contains pure parsing informations,
390       * an xmlXPathContext, and the stack of objects.
391
392      d xmlXPathParserContext...
393      d                 ds                  based(xmlXPathParserContextPtr)
394      d                                     align qualified
395      d  cur                            *                                        const xmlChar *
396      d  base                           *                                        const xmlChar *
397       *
398      d  error                        10i 0                                      Error code
399       *
400      d  context                            like(xmlXPathContextPtr)             Evaluation context
401      d  value                              like(xmlXPathObjectPtr)              The current value
402      d  valueNr                      10i 0                                      Value stack depth
403      d  valueMax                     10i 0                                      Max stack depth
404      d  valueTab                       *                                        xmlXPathObjectPtr *
405       *
406      d  comp                               like(xmlXPathCompExprPtr)            Precompiled expr.
407      d  xptr                         10i 0                                      XPointer expression?
408      d  ancestor                           like(xmlNodePtr)                     To walk prec. axis
409       *
410      d  valueFrame                   10i 0                                      Limit stack pop
411
412       **************************************************************************
413       *                                                                        *
414       *                             Public API                                 *
415       *                                                                        *
416       **************************************************************************
417
418       * Objects and Nodesets handling
419
420      d xmlXPathNAN     s              8f   import('xmlXPathNAN')
421      d xmlXPathPINF    s              8f   import('xmlXPathPINF')
422      d xmlXPathNINF    s              8f   import('xmlXPathNINF')
423
424      d xmlXPathFreeObject...
425      d                 pr                  extproc('xmlXPathFreeObject')
426      d obj                                 value like(xmlXPathObjectPtr)
427
428      d xmlXPathNodeSetCreate...
429      d                 pr                  extproc('xmlXPathNodeSetCreate')
430      d                                     like(xmlNodeSetPtr)
431      d val                                 value like(xmlNodePtr)
432
433      d xmlXPathFreeNodeSetList...
434      d                 pr                  extproc('xmlXPathFreeNodeSetList')
435      d obj                                 value like(xmlXPathObjectPtr)
436
437      d xmlXPathFreeNodeSet...
438      d                 pr                  extproc('xmlXPathFreeNodeSet')
439      d obj                                 value like(xmlNodeSetPtr)
440
441      d xmlXPathObjectCopy...
442      d                 pr                  extproc('xmlXPathObjectCopy')
443      d                                     like(xmlXPathObjectPtr)
444      d val                                 value like(xmlXPathObjectPtr)
445
446      d xmlXPathCmpNodes...
447      d                 pr            10i 0 extproc('xmlXPathCmpNodes')
448      d node1                               value like(xmlNodePtr)
449      d node2                               value like(xmlNodePtr)
450
451       * Conversion functions to basic types.
452
453      d xmlXPathCastNumberToBoolean...
454      d                 pr            10i 0 extproc(
455      d                                      'xmlXPathCastNumberToBoolean')
456      d val                            8f   value
457
458      d xmlXPathCastStringToBoolean...
459      d                 pr            10i 0 extproc(
460      d                                      'xmlXPathCastStringToBoolean')
461      d val                             *   value options(*string)               const xmlChar *
462
463      d xmlXPathCastNodeSetToBoolean...
464      d                 pr            10i 0 extproc(
465      d                                     'xmlXPathCastNodeSetToBoolean')
466      d ns                                  value like(xmlNodeSetPtr)
467
468      d xmlXPathCastToBoolean...
469      d                 pr            10i 0 extproc('xmlXPathCastToBoolean')
470      d val                                 value like(xmlXPathObjectPtr)
471
472      d xmlXPathCastBooleanToNumber...
473      d                 pr                  extproc(
474      d                                      'xmlXPathCastBooleanToNumber')
475      d                                8f
476      d val                           10i 0 value
477
478      d xmlXPathCastStringToNumber...
479      d                 pr             8f   extproc('xmlXPathCastStringToNumber')
480      d val                             *   value options(*string)               const xmlChar *
481
482      d xmlXPathCastNodeToNumber...
483      d                 pr             8f   extproc('xmlXPathCastNodeToNumber')
484      d node                                value like(xmlNodePtr)
485
486      d xmlXPathCastNodeSetToNumber...
487      d                 pr             8f   extproc(
488      d                                      'xmlXPathCastNodeSetToNumber')
489      d ns                                  value like(xmlNodeSetPtr)
490
491      d xmlXPathCastToNumber...
492      d                 pr             8f   extproc('xmlXPathCastToNumber')
493      d val                                 value like(xmlXPathObjectPtr)
494
495      d xmlXPathCastBooleanToString...
496      d                 pr              *   extproc(                             xmlChar *
497      d                                      'xmlXPathCastBooleanToString')
498      d val                           10i 0 value
499
500      d xmlXPathCastNumberToString...
501      d                 pr              *   extproc('xmlXPathCastNumberToString')xmlChar *
502      d val                            8f   value
503
504      d xmlXPathCastNodeToString...
505      d                 pr              *   extproc('xmlXPathCastNodeToString')  xmlChar *
506      d node                                value like(xmlNodePtr)
507
508      d xmlXPathCastNodeSetToString...
509      d                 pr              *   extproc('xmlXPathCastNodeSetToString'xmlChar *
510      d                                     )
511      d ns                                  value like(xmlNodeSetPtr)
512
513      d xmlXPathCastToString...
514      d                 pr              *   extproc('xmlXPathCastToString')      xmlChar *
515      d val                                 value like(xmlXPathObjectPtr)
516
517      d xmlXPathConvertBoolean...
518      d                 pr                  extproc('xmlXPathConvertBoolean')
519      d                                     like(xmlXPathObjectPtr)
520      d val                                 value like(xmlXPathObjectPtr)
521
522      d xmlXPathConvertNumber...
523      d                 pr                  extproc('xmlXPathConvertNumber')
524      d                                     like(xmlXPathObjectPtr)
525      d val                                 value like(xmlXPathObjectPtr)
526
527      d xmlXPathConvertString...
528      d                 pr                  extproc('xmlXPathConvertString')
529      d                                     like(xmlXPathObjectPtr)
530      d val                                 value like(xmlXPathObjectPtr)
531
532       * Context handling.
533
534      d xmlXPathNewContext...
535      d                 pr                  extproc('xmlXPathNewContext')
536      d                                     like(xmlXPathContextPtr)
537      d doc                                 value like(xmlDocPtr)
538
539      d xmlXPathFreeContext...
540      d                 pr                  extproc('xmlXPathFreeContext')
541      d ctxt                                value like(xmlXPathContextPtr)
542
543      d xmlXPathContextSetCache...
544      d                 pr            10i 0 extproc('xmlXPathContextSetCache')
545      d ctxt                                value like(xmlXPathContextPtr)
546      d active                        10i 0 value
547      d value                         10i 0 value
548      d options                       10i 0 value
549
550       * Evaluation functions.
551
552      d xmlXPathOrderDocElems...
553      d                 pr            20i 0 extproc('xmlXPathOrderDocElems')
554      d doc                                 value like(xmlDocPtr)
555
556      d xmlXPathSetContextNode...
557      d                 pr            10i 0 extproc('xmlXPathSetContextNode')
558      d node                                value like(xmlNodePtr)
559      d ctx                                 value like(xmlXPathContextPtr)
560
561      d xmlXPathNodeEval...
562      d                 pr                  extproc('xmlXPathNodeEval')
563      d                                     like(xmlXPathObjectPtr)
564      d node                                value like(xmlNodePtr)
565      d str                             *   value options(*string)               const xmlChar *
566      d ctx                                 value like(xmlXPathContextPtr)
567
568      d xmlXPathEval    pr                  extproc('xmlXPathEval')
569      d                                     like(xmlXPathObjectPtr)
570      d str                             *   value options(*string)               const xmlChar *
571      d ctx                                 value like(xmlXPathContextPtr)
572
573      d xmlXPathEvalExpression...
574      d                 pr                  extproc('xmlXPathEvalExpression')
575      d                                     like(xmlXPathObjectPtr)
576      d str                             *   value options(*string)               const xmlChar *
577      d ctxt                                value like(xmlXPathContextPtr)
578
579      d xmlXPathEvalPredicate...
580      d                 pr            10i 0 extproc('xmlXPathEvalPredicate')
581      d ctxt                                value like(xmlXPathContextPtr)
582      d res                                 value like(xmlXPathObjectPtr)
583
584       * Separate compilation/evaluation entry points.
585
586      d xmlXPathCompile...
587      d                 pr                  extproc('xmlXPathCompile')
588      d                                     like(xmlXPathCompExprPtr)
589      d str                             *   value options(*string)               const xmlChar *
590
591      d xmlXPathCtxtCompile...
592      d                 pr                  extproc('xmlXPathCtxtCompile')
593      d                                     like(xmlXPathCompExprPtr)
594      d ctxt                                value like(xmlXPathContextPtr)
595      d str                             *   value options(*string)               const xmlChar *
596
597      d xmlXPathCompiledEval...
598      d                 pr                  extproc('xmlXPathCompiledEval')
599      d                                     like(xmlXPathObjectPtr)
600      d comp                                value like(xmlXPathCompExprPtr)
601      d ctx                                 value like(xmlXPathContextPtr)
602
603      d xmlXPathCompiledEvalToBoolean...
604      d                 pr            10i 0 extproc(
605      d                                     'xmlXPathCompiledEvalToBoolean')
606      d comp                                value like(xmlXPathCompExprPtr)
607      d ctxt                                value like(xmlXPathContextPtr)
608
609      d xmlXPathFreeCompExpr...
610      d                 pr                  extproc('xmlXPathFreeCompExpr')
611      d comp                                value like(xmlXPathCompExprPtr)
612       /endif                                                                    LIBXML_XPATH_ENABLED
613
614       /undefine XML_TESTVAL
615       /if defined(LIBXML_XPATH_ENABLED)
616       /define XML_TESTVAL
617       /elseif defined(LIBXML_SCHEMAS_ENABLED)
618       /define XML_TESTVAL
619       /endif
620       /if defined(XML_TESTVAL)
621      d xmlXPathInit    pr                  extproc('xmlXPathInit')
622
623      d xmlXPathIsNaN   pr            10i 0 extproc('xmlXPathIsNaN')
624      d val                            8f   value
625
626      d xmlXPathIsInf   pr            10i 0 extproc('xmlXPathIsInf')
627      d val                            8f   value
628
629       /undefine XML_TESTVAL
630       /endif
631
632       * C macros implemented as procedures for ILE/RPG support.
633
634       /if defined(LIBXML_XPATH_ENABLED)
635      d xmlXPathNodeSetGetLength...
636      d                 pr            10i 0 extproc('__xmlXPathNodeSetGetLength')
637      d  ns                                 value like(xmlNodeSetPtr)
638
639      d xmlXPathNodeSetItem...
640      d                 pr                  extproc('__xmlXPathNodeSetItem')
641      d                                     like(xmlNodePtr)
642      d  ns                                 value like(xmlNodeSetPtr)
643      d  index                        10i 0 value
644
645      d xmlXPathNodeSetIsEmpty...
646      d                 pr            10i 0 extproc('__xmlXPathNodeSetIsEmpty')
647      d  ns                                 value like(xmlNodeSetPtr)
648       /endif                                                                    LIBXML_XPATH_ENABLED
649       /endif                                                                    XML_XPATH_H__