2
* Summary: internal interfaces for XML Path Language implementation
3
* Description: internal interfaces for XML Path Language implementation
4
* used to build new modules on top of XPath like XPointer and
7
* Copy: See Copyright for the status of this software.
9
* Author: Daniel Veillard
12
#ifndef __XML_XPATH_INTERNALS_H__
13
#define __XML_XPATH_INTERNALS_H__
15
#include <libxml/xmlversion.h>
16
#include <libxml/xpath.h>
18
#ifdef LIBXML_XPATH_ENABLED
24
/************************************************************************
28
************************************************************************/
31
* Many of these macros may later turn into functions. They
32
* shouldn't be used in #ifdef's preprocessor instructions.
36
* @ctxt: an XPath parser context
37
* @err: an xmlXPathError code
41
#define xmlXPathSetError(ctxt, err) \
42
{ xmlXPatherror((ctxt), __FILE__, __LINE__, (err)); \
43
if ((ctxt) != NULL) (ctxt)->error = (err); }
46
* xmlXPathSetArityError:
47
* @ctxt: an XPath parser context
49
* Raises an XPATH_INVALID_ARITY error.
51
#define xmlXPathSetArityError(ctxt) \
52
xmlXPathSetError((ctxt), XPATH_INVALID_ARITY)
55
* xmlXPathSetTypeError:
56
* @ctxt: an XPath parser context
58
* Raises an XPATH_INVALID_TYPE error.
60
#define xmlXPathSetTypeError(ctxt) \
61
xmlXPathSetError((ctxt), XPATH_INVALID_TYPE)
65
* @ctxt: an XPath parser context
67
* Get the error code of an XPath context.
69
* Returns the context error.
71
#define xmlXPathGetError(ctxt) ((ctxt)->error)
75
* @ctxt: an XPath parser context
77
* Check if an XPath error was raised.
79
* Returns true if an error has been raised, false otherwise.
81
#define xmlXPathCheckError(ctxt) ((ctxt)->error != XPATH_EXPRESSION_OK)
84
* xmlXPathGetDocument:
85
* @ctxt: an XPath parser context
87
* Get the document of an XPath context.
89
* Returns the context document.
91
#define xmlXPathGetDocument(ctxt) ((ctxt)->context->doc)
94
* xmlXPathGetContextNode:
95
* @ctxt: an XPath parser context
97
* Get the context node of an XPath context.
99
* Returns the context node.
101
#define xmlXPathGetContextNode(ctxt) ((ctxt)->context->node)
103
XMLPUBFUN int XMLCALL
104
xmlXPathPopBoolean (xmlXPathParserContextPtr ctxt);
105
XMLPUBFUN double XMLCALL
106
xmlXPathPopNumber (xmlXPathParserContextPtr ctxt);
107
XMLPUBFUN xmlChar * XMLCALL
108
xmlXPathPopString (xmlXPathParserContextPtr ctxt);
109
XMLPUBFUN xmlNodeSetPtr XMLCALL
110
xmlXPathPopNodeSet (xmlXPathParserContextPtr ctxt);
111
XMLPUBFUN void * XMLCALL
112
xmlXPathPopExternal (xmlXPathParserContextPtr ctxt);
115
* xmlXPathReturnBoolean:
116
* @ctxt: an XPath parser context
119
* Pushes the boolean @val on the context stack.
121
#define xmlXPathReturnBoolean(ctxt, val) \
122
valuePush((ctxt), xmlXPathNewBoolean(val))
125
* xmlXPathReturnTrue:
126
* @ctxt: an XPath parser context
128
* Pushes true on the context stack.
130
#define xmlXPathReturnTrue(ctxt) xmlXPathReturnBoolean((ctxt), 1)
133
* xmlXPathReturnFalse:
134
* @ctxt: an XPath parser context
136
* Pushes false on the context stack.
138
#define xmlXPathReturnFalse(ctxt) xmlXPathReturnBoolean((ctxt), 0)
141
* xmlXPathReturnNumber:
142
* @ctxt: an XPath parser context
145
* Pushes the double @val on the context stack.
147
#define xmlXPathReturnNumber(ctxt, val) \
148
valuePush((ctxt), xmlXPathNewFloat(val))
151
* xmlXPathReturnString:
152
* @ctxt: an XPath parser context
155
* Pushes the string @str on the context stack.
157
#define xmlXPathReturnString(ctxt, str) \
158
valuePush((ctxt), xmlXPathWrapString(str))
161
* xmlXPathReturnEmptyString:
162
* @ctxt: an XPath parser context
164
* Pushes an empty string on the stack.
166
#define xmlXPathReturnEmptyString(ctxt) \
167
valuePush((ctxt), xmlXPathNewCString(""))
170
* xmlXPathReturnNodeSet:
171
* @ctxt: an XPath parser context
174
* Pushes the node-set @ns on the context stack.
176
#define xmlXPathReturnNodeSet(ctxt, ns) \
177
valuePush((ctxt), xmlXPathWrapNodeSet(ns))
180
* xmlXPathReturnEmptyNodeSet:
181
* @ctxt: an XPath parser context
183
* Pushes an empty node-set on the context stack.
185
#define xmlXPathReturnEmptyNodeSet(ctxt) \
186
valuePush((ctxt), xmlXPathNewNodeSet(NULL))
189
* xmlXPathReturnExternal:
190
* @ctxt: an XPath parser context
193
* Pushes user data on the context stack.
195
#define xmlXPathReturnExternal(ctxt, val) \
196
valuePush((ctxt), xmlXPathWrapExternal(val))
199
* xmlXPathStackIsNodeSet:
200
* @ctxt: an XPath parser context
202
* Check if the current value on the XPath stack is a node set or
203
* an XSLT value tree.
205
* Returns true if the current object on the stack is a node-set.
207
#define xmlXPathStackIsNodeSet(ctxt) \
208
(((ctxt)->value != NULL) \
209
&& (((ctxt)->value->type == XPATH_NODESET) \
210
|| ((ctxt)->value->type == XPATH_XSLT_TREE)))
213
* xmlXPathStackIsExternal:
214
* @ctxt: an XPath parser context
216
* Checks if the current value on the XPath stack is an external
219
* Returns true if the current object on the stack is an external
222
#define xmlXPathStackIsExternal(ctxt) \
223
((ctxt->value != NULL) && (ctxt->value->type == XPATH_USERS))
226
* xmlXPathEmptyNodeSet:
229
* Empties a node-set.
231
#define xmlXPathEmptyNodeSet(ns) \
232
{ while ((ns)->nodeNr > 0) (ns)->nodeTab[(ns)->nodeNr--] = NULL; }
237
* Macro to return from the function if an XPath error was detected.
239
#define CHECK_ERROR \
240
if (ctxt->error != XPATH_EXPRESSION_OK) return
245
* Macro to return 0 from the function if an XPath error was detected.
247
#define CHECK_ERROR0 \
248
if (ctxt->error != XPATH_EXPRESSION_OK) return(0)
254
* Macro to raise an XPath error and return.
256
#define XP_ERROR(X) \
257
{ xmlXPathErr(ctxt, X); return; }
263
* Macro to raise an XPath error and return 0.
265
#define XP_ERROR0(X) \
266
{ xmlXPathErr(ctxt, X); return(0); }
270
* @typeval: the XPath type
272
* Macro to check that the value on top of the XPath stack is of a given
275
#define CHECK_TYPE(typeval) \
276
if ((ctxt->value == NULL) || (ctxt->value->type != typeval)) \
277
XP_ERROR(XPATH_INVALID_TYPE)
281
* @typeval: the XPath type
283
* Macro to check that the value on top of the XPath stack is of a given
284
* type. Return(0) in case of failure
286
#define CHECK_TYPE0(typeval) \
287
if ((ctxt->value == NULL) || (ctxt->value->type != typeval)) \
288
XP_ERROR0(XPATH_INVALID_TYPE)
292
* @x: the number of expected args
294
* Macro to check that the number of args passed to an XPath function matches.
296
#define CHECK_ARITY(x) \
297
if (ctxt == NULL) return; \
299
XP_ERROR(XPATH_INVALID_ARITY);
304
* Macro to try to cast the value on the top of the XPath stack to a string.
306
#define CAST_TO_STRING \
307
if ((ctxt->value != NULL) && (ctxt->value->type != XPATH_STRING)) \
308
xmlXPathStringFunction(ctxt, 1);
313
* Macro to try to cast the value on the top of the XPath stack to a number.
315
#define CAST_TO_NUMBER \
316
if ((ctxt->value != NULL) && (ctxt->value->type != XPATH_NUMBER)) \
317
xmlXPathNumberFunction(ctxt, 1);
322
* Macro to try to cast the value on the top of the XPath stack to a boolean.
324
#define CAST_TO_BOOLEAN \
325
if ((ctxt->value != NULL) && (ctxt->value->type != XPATH_BOOLEAN)) \
326
xmlXPathBooleanFunction(ctxt, 1);
329
* Variable Lookup forwarding.
332
XMLPUBFUN void XMLCALL
333
xmlXPathRegisterVariableLookup (xmlXPathContextPtr ctxt,
334
xmlXPathVariableLookupFunc f,
338
* Function Lookup forwarding.
341
XMLPUBFUN void XMLCALL
342
xmlXPathRegisterFuncLookup (xmlXPathContextPtr ctxt,
343
xmlXPathFuncLookupFunc f,
349
XMLPUBFUN void XMLCALL
350
xmlXPatherror (xmlXPathParserContextPtr ctxt,
355
XMLPUBFUN void XMLCALL
356
xmlXPathErr (xmlXPathParserContextPtr ctxt,
359
#ifdef LIBXML_DEBUG_ENABLED
360
XMLPUBFUN void XMLCALL
361
xmlXPathDebugDumpObject (FILE *output,
362
xmlXPathObjectPtr cur,
364
XMLPUBFUN void XMLCALL
365
xmlXPathDebugDumpCompExpr(FILE *output,
366
xmlXPathCompExprPtr comp,
372
XMLPUBFUN int XMLCALL
373
xmlXPathNodeSetContains (xmlNodeSetPtr cur,
375
XMLPUBFUN xmlNodeSetPtr XMLCALL
376
xmlXPathDifference (xmlNodeSetPtr nodes1,
377
xmlNodeSetPtr nodes2);
378
XMLPUBFUN xmlNodeSetPtr XMLCALL
379
xmlXPathIntersection (xmlNodeSetPtr nodes1,
380
xmlNodeSetPtr nodes2);
382
XMLPUBFUN xmlNodeSetPtr XMLCALL
383
xmlXPathDistinctSorted (xmlNodeSetPtr nodes);
384
XMLPUBFUN xmlNodeSetPtr XMLCALL
385
xmlXPathDistinct (xmlNodeSetPtr nodes);
387
XMLPUBFUN int XMLCALL
388
xmlXPathHasSameNodes (xmlNodeSetPtr nodes1,
389
xmlNodeSetPtr nodes2);
391
XMLPUBFUN xmlNodeSetPtr XMLCALL
392
xmlXPathNodeLeadingSorted (xmlNodeSetPtr nodes,
394
XMLPUBFUN xmlNodeSetPtr XMLCALL
395
xmlXPathLeadingSorted (xmlNodeSetPtr nodes1,
396
xmlNodeSetPtr nodes2);
397
XMLPUBFUN xmlNodeSetPtr XMLCALL
398
xmlXPathNodeLeading (xmlNodeSetPtr nodes,
400
XMLPUBFUN xmlNodeSetPtr XMLCALL
401
xmlXPathLeading (xmlNodeSetPtr nodes1,
402
xmlNodeSetPtr nodes2);
404
XMLPUBFUN xmlNodeSetPtr XMLCALL
405
xmlXPathNodeTrailingSorted (xmlNodeSetPtr nodes,
407
XMLPUBFUN xmlNodeSetPtr XMLCALL
408
xmlXPathTrailingSorted (xmlNodeSetPtr nodes1,
409
xmlNodeSetPtr nodes2);
410
XMLPUBFUN xmlNodeSetPtr XMLCALL
411
xmlXPathNodeTrailing (xmlNodeSetPtr nodes,
413
XMLPUBFUN xmlNodeSetPtr XMLCALL
414
xmlXPathTrailing (xmlNodeSetPtr nodes1,
415
xmlNodeSetPtr nodes2);
419
* Extending a context.
422
XMLPUBFUN int XMLCALL
423
xmlXPathRegisterNs (xmlXPathContextPtr ctxt,
424
const xmlChar *prefix,
425
const xmlChar *ns_uri);
426
XMLPUBFUN const xmlChar * XMLCALL
427
xmlXPathNsLookup (xmlXPathContextPtr ctxt,
428
const xmlChar *prefix);
429
XMLPUBFUN void XMLCALL
430
xmlXPathRegisteredNsCleanup (xmlXPathContextPtr ctxt);
432
XMLPUBFUN int XMLCALL
433
xmlXPathRegisterFunc (xmlXPathContextPtr ctxt,
436
XMLPUBFUN int XMLCALL
437
xmlXPathRegisterFuncNS (xmlXPathContextPtr ctxt,
439
const xmlChar *ns_uri,
441
XMLPUBFUN int XMLCALL
442
xmlXPathRegisterVariable (xmlXPathContextPtr ctxt,
444
xmlXPathObjectPtr value);
445
XMLPUBFUN int XMLCALL
446
xmlXPathRegisterVariableNS (xmlXPathContextPtr ctxt,
448
const xmlChar *ns_uri,
449
xmlXPathObjectPtr value);
450
XMLPUBFUN xmlXPathFunction XMLCALL
451
xmlXPathFunctionLookup (xmlXPathContextPtr ctxt,
452
const xmlChar *name);
453
XMLPUBFUN xmlXPathFunction XMLCALL
454
xmlXPathFunctionLookupNS (xmlXPathContextPtr ctxt,
456
const xmlChar *ns_uri);
457
XMLPUBFUN void XMLCALL
458
xmlXPathRegisteredFuncsCleanup (xmlXPathContextPtr ctxt);
459
XMLPUBFUN xmlXPathObjectPtr XMLCALL
460
xmlXPathVariableLookup (xmlXPathContextPtr ctxt,
461
const xmlChar *name);
462
XMLPUBFUN xmlXPathObjectPtr XMLCALL
463
xmlXPathVariableLookupNS (xmlXPathContextPtr ctxt,
465
const xmlChar *ns_uri);
466
XMLPUBFUN void XMLCALL
467
xmlXPathRegisteredVariablesCleanup(xmlXPathContextPtr ctxt);
470
* Utilities to extend XPath.
472
XMLPUBFUN xmlXPathParserContextPtr XMLCALL
473
xmlXPathNewParserContext (const xmlChar *str,
474
xmlXPathContextPtr ctxt);
475
XMLPUBFUN void XMLCALL
476
xmlXPathFreeParserContext (xmlXPathParserContextPtr ctxt);
478
/* TODO: remap to xmlXPathValuePop and Push. */
479
XMLPUBFUN xmlXPathObjectPtr XMLCALL
480
valuePop (xmlXPathParserContextPtr ctxt);
481
XMLPUBFUN int XMLCALL
482
valuePush (xmlXPathParserContextPtr ctxt,
483
xmlXPathObjectPtr value);
485
XMLPUBFUN xmlXPathObjectPtr XMLCALL
486
xmlXPathNewString (const xmlChar *val);
487
XMLPUBFUN xmlXPathObjectPtr XMLCALL
488
xmlXPathNewCString (const char *val);
489
XMLPUBFUN xmlXPathObjectPtr XMLCALL
490
xmlXPathWrapString (xmlChar *val);
491
XMLPUBFUN xmlXPathObjectPtr XMLCALL
492
xmlXPathWrapCString (char * val);
493
XMLPUBFUN xmlXPathObjectPtr XMLCALL
494
xmlXPathNewFloat (double val);
495
XMLPUBFUN xmlXPathObjectPtr XMLCALL
496
xmlXPathNewBoolean (int val);
497
XMLPUBFUN xmlXPathObjectPtr XMLCALL
498
xmlXPathNewNodeSet (xmlNodePtr val);
499
XMLPUBFUN xmlXPathObjectPtr XMLCALL
500
xmlXPathNewValueTree (xmlNodePtr val);
501
XMLPUBFUN void XMLCALL
502
xmlXPathNodeSetAdd (xmlNodeSetPtr cur,
504
XMLPUBFUN void XMLCALL
505
xmlXPathNodeSetAddUnique (xmlNodeSetPtr cur,
507
XMLPUBFUN void XMLCALL
508
xmlXPathNodeSetAddNs (xmlNodeSetPtr cur,
511
XMLPUBFUN void XMLCALL
512
xmlXPathNodeSetSort (xmlNodeSetPtr set);
514
XMLPUBFUN void XMLCALL
515
xmlXPathRoot (xmlXPathParserContextPtr ctxt);
516
XMLPUBFUN void XMLCALL
517
xmlXPathEvalExpr (xmlXPathParserContextPtr ctxt);
518
XMLPUBFUN xmlChar * XMLCALL
519
xmlXPathParseName (xmlXPathParserContextPtr ctxt);
520
XMLPUBFUN xmlChar * XMLCALL
521
xmlXPathParseNCName (xmlXPathParserContextPtr ctxt);
524
* Existing functions.
526
XMLPUBFUN double XMLCALL
527
xmlXPathStringEvalNumber (const xmlChar *str);
528
XMLPUBFUN int XMLCALL
529
xmlXPathEvaluatePredicateResult (xmlXPathParserContextPtr ctxt,
530
xmlXPathObjectPtr res);
531
XMLPUBFUN void XMLCALL
532
xmlXPathRegisterAllFunctions (xmlXPathContextPtr ctxt);
533
XMLPUBFUN xmlNodeSetPtr XMLCALL
534
xmlXPathNodeSetMerge (xmlNodeSetPtr val1,
536
XMLPUBFUN void XMLCALL
537
xmlXPathNodeSetDel (xmlNodeSetPtr cur,
539
XMLPUBFUN void XMLCALL
540
xmlXPathNodeSetRemove (xmlNodeSetPtr cur,
542
XMLPUBFUN xmlXPathObjectPtr XMLCALL
543
xmlXPathNewNodeSetList (xmlNodeSetPtr val);
544
XMLPUBFUN xmlXPathObjectPtr XMLCALL
545
xmlXPathWrapNodeSet (xmlNodeSetPtr val);
546
XMLPUBFUN xmlXPathObjectPtr XMLCALL
547
xmlXPathWrapExternal (void *val);
549
XMLPUBFUN int XMLCALL xmlXPathEqualValues(xmlXPathParserContextPtr ctxt);
550
XMLPUBFUN int XMLCALL xmlXPathNotEqualValues(xmlXPathParserContextPtr ctxt);
551
XMLPUBFUN int XMLCALL xmlXPathCompareValues(xmlXPathParserContextPtr ctxt, int inf, int strict);
552
XMLPUBFUN void XMLCALL xmlXPathValueFlipSign(xmlXPathParserContextPtr ctxt);
553
XMLPUBFUN void XMLCALL xmlXPathAddValues(xmlXPathParserContextPtr ctxt);
554
XMLPUBFUN void XMLCALL xmlXPathSubValues(xmlXPathParserContextPtr ctxt);
555
XMLPUBFUN void XMLCALL xmlXPathMultValues(xmlXPathParserContextPtr ctxt);
556
XMLPUBFUN void XMLCALL xmlXPathDivValues(xmlXPathParserContextPtr ctxt);
557
XMLPUBFUN void XMLCALL xmlXPathModValues(xmlXPathParserContextPtr ctxt);
559
XMLPUBFUN int XMLCALL xmlXPathIsNodeType(const xmlChar *name);
562
* Some of the axis navigation routines.
564
XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextSelf(xmlXPathParserContextPtr ctxt,
566
XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextChild(xmlXPathParserContextPtr ctxt,
568
XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextDescendant(xmlXPathParserContextPtr ctxt,
570
XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextDescendantOrSelf(xmlXPathParserContextPtr ctxt,
572
XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextParent(xmlXPathParserContextPtr ctxt,
574
XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextAncestorOrSelf(xmlXPathParserContextPtr ctxt,
576
XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextFollowingSibling(xmlXPathParserContextPtr ctxt,
578
XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextFollowing(xmlXPathParserContextPtr ctxt,
580
XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextNamespace(xmlXPathParserContextPtr ctxt,
582
XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextAttribute(xmlXPathParserContextPtr ctxt,
584
XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextPreceding(xmlXPathParserContextPtr ctxt,
586
XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextAncestor(xmlXPathParserContextPtr ctxt,
588
XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextPrecedingSibling(xmlXPathParserContextPtr ctxt,
591
* The official core of XPath functions.
593
XMLPUBFUN void XMLCALL xmlXPathLastFunction(xmlXPathParserContextPtr ctxt, int nargs);
594
XMLPUBFUN void XMLCALL xmlXPathPositionFunction(xmlXPathParserContextPtr ctxt, int nargs);
595
XMLPUBFUN void XMLCALL xmlXPathCountFunction(xmlXPathParserContextPtr ctxt, int nargs);
596
XMLPUBFUN void XMLCALL xmlXPathIdFunction(xmlXPathParserContextPtr ctxt, int nargs);
597
XMLPUBFUN void XMLCALL xmlXPathLocalNameFunction(xmlXPathParserContextPtr ctxt, int nargs);
598
XMLPUBFUN void XMLCALL xmlXPathNamespaceURIFunction(xmlXPathParserContextPtr ctxt, int nargs);
599
XMLPUBFUN void XMLCALL xmlXPathStringFunction(xmlXPathParserContextPtr ctxt, int nargs);
600
XMLPUBFUN void XMLCALL xmlXPathStringLengthFunction(xmlXPathParserContextPtr ctxt, int nargs);
601
XMLPUBFUN void XMLCALL xmlXPathConcatFunction(xmlXPathParserContextPtr ctxt, int nargs);
602
XMLPUBFUN void XMLCALL xmlXPathContainsFunction(xmlXPathParserContextPtr ctxt, int nargs);
603
XMLPUBFUN void XMLCALL xmlXPathStartsWithFunction(xmlXPathParserContextPtr ctxt, int nargs);
604
XMLPUBFUN void XMLCALL xmlXPathSubstringFunction(xmlXPathParserContextPtr ctxt, int nargs);
605
XMLPUBFUN void XMLCALL xmlXPathSubstringBeforeFunction(xmlXPathParserContextPtr ctxt, int nargs);
606
XMLPUBFUN void XMLCALL xmlXPathSubstringAfterFunction(xmlXPathParserContextPtr ctxt, int nargs);
607
XMLPUBFUN void XMLCALL xmlXPathNormalizeFunction(xmlXPathParserContextPtr ctxt, int nargs);
608
XMLPUBFUN void XMLCALL xmlXPathTranslateFunction(xmlXPathParserContextPtr ctxt, int nargs);
609
XMLPUBFUN void XMLCALL xmlXPathNotFunction(xmlXPathParserContextPtr ctxt, int nargs);
610
XMLPUBFUN void XMLCALL xmlXPathTrueFunction(xmlXPathParserContextPtr ctxt, int nargs);
611
XMLPUBFUN void XMLCALL xmlXPathFalseFunction(xmlXPathParserContextPtr ctxt, int nargs);
612
XMLPUBFUN void XMLCALL xmlXPathLangFunction(xmlXPathParserContextPtr ctxt, int nargs);
613
XMLPUBFUN void XMLCALL xmlXPathNumberFunction(xmlXPathParserContextPtr ctxt, int nargs);
614
XMLPUBFUN void XMLCALL xmlXPathSumFunction(xmlXPathParserContextPtr ctxt, int nargs);
615
XMLPUBFUN void XMLCALL xmlXPathFloorFunction(xmlXPathParserContextPtr ctxt, int nargs);
616
XMLPUBFUN void XMLCALL xmlXPathCeilingFunction(xmlXPathParserContextPtr ctxt, int nargs);
617
XMLPUBFUN void XMLCALL xmlXPathRoundFunction(xmlXPathParserContextPtr ctxt, int nargs);
618
XMLPUBFUN void XMLCALL xmlXPathBooleanFunction(xmlXPathParserContextPtr ctxt, int nargs);
621
* Really internal functions
623
XMLPUBFUN void XMLCALL xmlXPathNodeSetFreeNs(xmlNsPtr ns);
629
#endif /* LIBXML_XPATH_ENABLED */
630
#endif /* ! __XML_XPATH_INTERNALS_H__ */