Annotation of embedaddon/libxml2/include/libxml/xpath.h, revision 1.1.1.2

1.1       misho       1: /*
                      2:  * Summary: XML Path Language implementation
                      3:  * Description: API for the XML Path Language implementation
                      4:  *
                      5:  * XML Path Language implementation
                      6:  * XPath is a language for addressing parts of an XML document,
                      7:  * designed to be used by both XSLT and XPointer
                      8:  *     http://www.w3.org/TR/xpath
                      9:  *
                     10:  * Implements
                     11:  * W3C Recommendation 16 November 1999
                     12:  *     http://www.w3.org/TR/1999/REC-xpath-19991116
                     13:  *
                     14:  * Copy: See Copyright for the status of this software.
                     15:  *
                     16:  * Author: Daniel Veillard
                     17:  */
                     18: 
                     19: #ifndef __XML_XPATH_H__
                     20: #define __XML_XPATH_H__
                     21: 
                     22: #include <libxml/xmlversion.h>
                     23: 
                     24: #ifdef LIBXML_XPATH_ENABLED
                     25: 
                     26: #include <libxml/xmlerror.h>
                     27: #include <libxml/tree.h>
                     28: #include <libxml/hash.h>
                     29: #endif /* LIBXML_XPATH_ENABLED */
                     30: 
                     31: #if defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
                     32: #ifdef __cplusplus
                     33: extern "C" {
                     34: #endif
                     35: #endif /* LIBXML_XPATH_ENABLED or LIBXML_SCHEMAS_ENABLED */
                     36:        
                     37: #ifdef LIBXML_XPATH_ENABLED
                     38: 
                     39: typedef struct _xmlXPathContext xmlXPathContext;
                     40: typedef xmlXPathContext *xmlXPathContextPtr;
                     41: typedef struct _xmlXPathParserContext xmlXPathParserContext;
                     42: typedef xmlXPathParserContext *xmlXPathParserContextPtr;
                     43: 
                     44: /**
                     45:  * The set of XPath error codes.
                     46:  */
                     47: 
                     48: typedef enum {
                     49:     XPATH_EXPRESSION_OK = 0,
                     50:     XPATH_NUMBER_ERROR,
                     51:     XPATH_UNFINISHED_LITERAL_ERROR,
                     52:     XPATH_START_LITERAL_ERROR,
                     53:     XPATH_VARIABLE_REF_ERROR,
                     54:     XPATH_UNDEF_VARIABLE_ERROR,
                     55:     XPATH_INVALID_PREDICATE_ERROR,
                     56:     XPATH_EXPR_ERROR,
                     57:     XPATH_UNCLOSED_ERROR,
                     58:     XPATH_UNKNOWN_FUNC_ERROR,
                     59:     XPATH_INVALID_OPERAND,
                     60:     XPATH_INVALID_TYPE,
                     61:     XPATH_INVALID_ARITY,
                     62:     XPATH_INVALID_CTXT_SIZE,
                     63:     XPATH_INVALID_CTXT_POSITION,
                     64:     XPATH_MEMORY_ERROR,
                     65:     XPTR_SYNTAX_ERROR,
                     66:     XPTR_RESOURCE_ERROR,
                     67:     XPTR_SUB_RESOURCE_ERROR,
                     68:     XPATH_UNDEF_PREFIX_ERROR,
                     69:     XPATH_ENCODING_ERROR,
                     70:     XPATH_INVALID_CHAR_ERROR,
1.1.1.2 ! misho      71:     XPATH_INVALID_CTXT,
        !            72:     XPATH_STACK_ERROR
1.1       misho      73: } xmlXPathError;
                     74: 
                     75: /*
                     76:  * A node-set (an unordered collection of nodes without duplicates).
                     77:  */
                     78: typedef struct _xmlNodeSet xmlNodeSet;
                     79: typedef xmlNodeSet *xmlNodeSetPtr;
                     80: struct _xmlNodeSet {
                     81:     int nodeNr;                        /* number of nodes in the set */
                     82:     int nodeMax;               /* size of the array as allocated */
                     83:     xmlNodePtr *nodeTab;       /* array of nodes in no particular order */
                     84:     /* @@ with_ns to check wether namespace nodes should be looked at @@ */
                     85: };
                     86: 
                     87: /*
                     88:  * An expression is evaluated to yield an object, which
                     89:  * has one of the following four basic types:
                     90:  *   - node-set
                     91:  *   - boolean
                     92:  *   - number
                     93:  *   - string
                     94:  *
                     95:  * @@ XPointer will add more types !
                     96:  */
                     97: 
                     98: typedef enum {
                     99:     XPATH_UNDEFINED = 0,
                    100:     XPATH_NODESET = 1,
                    101:     XPATH_BOOLEAN = 2,
                    102:     XPATH_NUMBER = 3,
                    103:     XPATH_STRING = 4,
                    104:     XPATH_POINT = 5,
                    105:     XPATH_RANGE = 6,
                    106:     XPATH_LOCATIONSET = 7,
                    107:     XPATH_USERS = 8,
                    108:     XPATH_XSLT_TREE = 9  /* An XSLT value tree, non modifiable */
                    109: } xmlXPathObjectType;
                    110: 
                    111: typedef struct _xmlXPathObject xmlXPathObject;
                    112: typedef xmlXPathObject *xmlXPathObjectPtr;
                    113: struct _xmlXPathObject {
                    114:     xmlXPathObjectType type;
                    115:     xmlNodeSetPtr nodesetval;
                    116:     int boolval;
                    117:     double floatval;
                    118:     xmlChar *stringval;
                    119:     void *user;
                    120:     int index;
                    121:     void *user2;
                    122:     int index2;
                    123: };
                    124: 
                    125: /**
                    126:  * xmlXPathConvertFunc:
                    127:  * @obj:  an XPath object
                    128:  * @type:  the number of the target type
                    129:  *
                    130:  * A conversion function is associated to a type and used to cast
                    131:  * the new type to primitive values.
                    132:  *
                    133:  * Returns -1 in case of error, 0 otherwise
                    134:  */
                    135: typedef int (*xmlXPathConvertFunc) (xmlXPathObjectPtr obj, int type);
                    136: 
                    137: /*
                    138:  * Extra type: a name and a conversion function.
                    139:  */
                    140: 
                    141: typedef struct _xmlXPathType xmlXPathType;
                    142: typedef xmlXPathType *xmlXPathTypePtr;
                    143: struct _xmlXPathType {
                    144:     const xmlChar         *name;               /* the type name */
                    145:     xmlXPathConvertFunc func;          /* the conversion function */
                    146: };
                    147: 
                    148: /*
                    149:  * Extra variable: a name and a value.
                    150:  */
                    151: 
                    152: typedef struct _xmlXPathVariable xmlXPathVariable;
                    153: typedef xmlXPathVariable *xmlXPathVariablePtr;
                    154: struct _xmlXPathVariable {
                    155:     const xmlChar       *name;         /* the variable name */
                    156:     xmlXPathObjectPtr value;           /* the value */
                    157: };
                    158: 
                    159: /**
                    160:  * xmlXPathEvalFunc:
                    161:  * @ctxt: an XPath parser context
                    162:  * @nargs: the number of arguments passed to the function
                    163:  *
                    164:  * An XPath evaluation function, the parameters are on the XPath context stack.
                    165:  */
                    166: 
                    167: typedef void (*xmlXPathEvalFunc)(xmlXPathParserContextPtr ctxt,
                    168:                                 int nargs);
                    169: 
                    170: /*
                    171:  * Extra function: a name and a evaluation function.
                    172:  */
                    173: 
                    174: typedef struct _xmlXPathFunct xmlXPathFunct;
                    175: typedef xmlXPathFunct *xmlXPathFuncPtr;
                    176: struct _xmlXPathFunct {
                    177:     const xmlChar      *name;          /* the function name */
                    178:     xmlXPathEvalFunc func;             /* the evaluation function */
                    179: };
                    180: 
                    181: /**
                    182:  * xmlXPathAxisFunc:
                    183:  * @ctxt:  the XPath interpreter context
                    184:  * @cur:  the previous node being explored on that axis
                    185:  *
                    186:  * An axis traversal function. To traverse an axis, the engine calls
                    187:  * the first time with cur == NULL and repeat until the function returns
                    188:  * NULL indicating the end of the axis traversal.
                    189:  *
                    190:  * Returns the next node in that axis or NULL if at the end of the axis.
                    191:  */
                    192: 
                    193: typedef xmlXPathObjectPtr (*xmlXPathAxisFunc) (xmlXPathParserContextPtr ctxt,
                    194:                                 xmlXPathObjectPtr cur);
                    195: 
                    196: /*
                    197:  * Extra axis: a name and an axis function.
                    198:  */
                    199: 
                    200: typedef struct _xmlXPathAxis xmlXPathAxis;
                    201: typedef xmlXPathAxis *xmlXPathAxisPtr;
                    202: struct _xmlXPathAxis {
                    203:     const xmlChar      *name;          /* the axis name */
                    204:     xmlXPathAxisFunc func;             /* the search function */
                    205: };
                    206: 
                    207: /**
                    208:  * xmlXPathFunction:
                    209:  * @ctxt:  the XPath interprestation context
                    210:  * @nargs:  the number of arguments
                    211:  *
                    212:  * An XPath function.
                    213:  * The arguments (if any) are popped out from the context stack
                    214:  * and the result is pushed on the stack.
                    215:  */
                    216: 
                    217: typedef void (*xmlXPathFunction) (xmlXPathParserContextPtr ctxt, int nargs);
                    218: 
                    219: /*
                    220:  * Function and Variable Lookup.
                    221:  */
                    222: 
                    223: /**
                    224:  * xmlXPathVariableLookupFunc:
                    225:  * @ctxt:  an XPath context
                    226:  * @name:  name of the variable
                    227:  * @ns_uri:  the namespace name hosting this variable
                    228:  *
                    229:  * Prototype for callbacks used to plug variable lookup in the XPath
                    230:  * engine.
                    231:  *
                    232:  * Returns the XPath object value or NULL if not found.
                    233:  */
                    234: typedef xmlXPathObjectPtr (*xmlXPathVariableLookupFunc) (void *ctxt,
                    235:                                          const xmlChar *name,
                    236:                                          const xmlChar *ns_uri);
                    237: 
                    238: /**
                    239:  * xmlXPathFuncLookupFunc:
                    240:  * @ctxt:  an XPath context
                    241:  * @name:  name of the function
                    242:  * @ns_uri:  the namespace name hosting this function
                    243:  *
                    244:  * Prototype for callbacks used to plug function lookup in the XPath
                    245:  * engine.
                    246:  *
                    247:  * Returns the XPath function or NULL if not found.
                    248:  */
                    249: typedef xmlXPathFunction (*xmlXPathFuncLookupFunc) (void *ctxt,
                    250:                                         const xmlChar *name,
                    251:                                         const xmlChar *ns_uri);
                    252: 
                    253: /**
                    254:  * xmlXPathFlags:
                    255:  * Flags for XPath engine compilation and runtime
                    256:  */
                    257: /**
                    258:  * XML_XPATH_CHECKNS:
                    259:  *
                    260:  * check namespaces at compilation
                    261:  */
                    262: #define XML_XPATH_CHECKNS (1<<0)
                    263: /**
                    264:  * XML_XPATH_NOVAR:
                    265:  *
                    266:  * forbid variables in expression
                    267:  */
                    268: #define XML_XPATH_NOVAR          (1<<1)
                    269: 
                    270: /**
                    271:  * xmlXPathContext:
                    272:  *
                    273:  * Expression evaluation occurs with respect to a context.
                    274:  * he context consists of:
                    275:  *    - a node (the context node) 
                    276:  *    - a node list (the context node list) 
                    277:  *    - a set of variable bindings 
                    278:  *    - a function library 
                    279:  *    - the set of namespace declarations in scope for the expression 
                    280:  * Following the switch to hash tables, this need to be trimmed up at
                    281:  * the next binary incompatible release.
                    282:  * The node may be modified when the context is passed to libxml2
                    283:  * for an XPath evaluation so you may need to initialize it again
                    284:  * before the next call.
                    285:  */
                    286: 
                    287: struct _xmlXPathContext {
                    288:     xmlDocPtr doc;                     /* The current document */
                    289:     xmlNodePtr node;                   /* The current node */
                    290: 
                    291:     int nb_variables_unused;           /* unused (hash table) */
                    292:     int max_variables_unused;          /* unused (hash table) */
                    293:     xmlHashTablePtr varHash;           /* Hash table of defined variables */
                    294: 
                    295:     int nb_types;                      /* number of defined types */
                    296:     int max_types;                     /* max number of types */
                    297:     xmlXPathTypePtr types;             /* Array of defined types */
                    298: 
                    299:     int nb_funcs_unused;               /* unused (hash table) */
                    300:     int max_funcs_unused;              /* unused (hash table) */
                    301:     xmlHashTablePtr funcHash;          /* Hash table of defined funcs */
                    302: 
                    303:     int nb_axis;                       /* number of defined axis */
                    304:     int max_axis;                      /* max number of axis */
                    305:     xmlXPathAxisPtr axis;              /* Array of defined axis */
                    306: 
                    307:     /* the namespace nodes of the context node */
                    308:     xmlNsPtr *namespaces;              /* Array of namespaces */
                    309:     int nsNr;                          /* number of namespace in scope */
                    310:     void *user;                                /* function to free */
                    311: 
                    312:     /* extra variables */
                    313:     int contextSize;                   /* the context size */
                    314:     int proximityPosition;             /* the proximity position */
                    315: 
                    316:     /* extra stuff for XPointer */
                    317:     int xptr;                          /* is this an XPointer context? */
                    318:     xmlNodePtr here;                   /* for here() */
                    319:     xmlNodePtr origin;                 /* for origin() */
                    320: 
                    321:     /* the set of namespace declarations in scope for the expression */
                    322:     xmlHashTablePtr nsHash;            /* The namespaces hash table */
                    323:     xmlXPathVariableLookupFunc varLookupFunc;/* variable lookup func */
                    324:     void *varLookupData;               /* variable lookup data */
                    325: 
                    326:     /* Possibility to link in an extra item */
                    327:     void *extra;                        /* needed for XSLT */
                    328: 
                    329:     /* The function name and URI when calling a function */
                    330:     const xmlChar *function;
                    331:     const xmlChar *functionURI;
                    332: 
                    333:     /* function lookup function and data */
                    334:     xmlXPathFuncLookupFunc funcLookupFunc;/* function lookup func */
                    335:     void *funcLookupData;              /* function lookup data */
                    336: 
                    337:     /* temporary namespace lists kept for walking the namespace axis */
                    338:     xmlNsPtr *tmpNsList;               /* Array of namespaces */
                    339:     int tmpNsNr;                       /* number of namespaces in scope */
                    340: 
                    341:     /* error reporting mechanism */
                    342:     void *userData;                     /* user specific data block */
                    343:     xmlStructuredErrorFunc error;       /* the callback in case of errors */
                    344:     xmlError lastError;                        /* the last error */
                    345:     xmlNodePtr debugNode;              /* the source node XSLT */
                    346: 
                    347:     /* dictionary */
                    348:     xmlDictPtr dict;                   /* dictionary if any */
                    349: 
                    350:     int flags;                         /* flags to control compilation */
                    351: 
                    352:     /* Cache for reusal of XPath objects */
                    353:     void *cache;
                    354: };
                    355: 
                    356: /*
                    357:  * The structure of a compiled expression form is not public.
                    358:  */
                    359: 
                    360: typedef struct _xmlXPathCompExpr xmlXPathCompExpr;
                    361: typedef xmlXPathCompExpr *xmlXPathCompExprPtr;
                    362: 
                    363: /**
                    364:  * xmlXPathParserContext:
                    365:  *
                    366:  * An XPath parser context. It contains pure parsing informations,
                    367:  * an xmlXPathContext, and the stack of objects.
                    368:  */
                    369: struct _xmlXPathParserContext {
                    370:     const xmlChar *cur;                        /* the current char being parsed */
                    371:     const xmlChar *base;                       /* the full expression */
                    372: 
                    373:     int error;                         /* error code */
                    374: 
                    375:     xmlXPathContextPtr  context;       /* the evaluation context */
                    376:     xmlXPathObjectPtr     value;       /* the current value */
                    377:     int                 valueNr;       /* number of values stacked */
                    378:     int                valueMax;       /* max number of values stacked */
                    379:     xmlXPathObjectPtr *valueTab;       /* stack of values */
                    380: 
                    381:     xmlXPathCompExprPtr comp;          /* the precompiled expression */
                    382:     int xptr;                          /* it this an XPointer expression */
                    383:     xmlNodePtr         ancestor;       /* used for walking preceding axis */
1.1.1.2 ! misho     384: 
        !           385:     int              valueFrame;        /* used to limit Pop on the stack */
1.1       misho     386: };
                    387: 
                    388: /************************************************************************
                    389:  *                                                                     *
                    390:  *                     Public API                                      *
                    391:  *                                                                     *
                    392:  ************************************************************************/
                    393: 
                    394: /**
                    395:  * Objects and Nodesets handling
                    396:  */
                    397: 
                    398: XMLPUBVAR double xmlXPathNAN;
                    399: XMLPUBVAR double xmlXPathPINF;
                    400: XMLPUBVAR double xmlXPathNINF;
                    401: 
                    402: /* These macros may later turn into functions */
                    403: /**
                    404:  * xmlXPathNodeSetGetLength:
                    405:  * @ns:  a node-set
                    406:  *
                    407:  * Implement a functionality similar to the DOM NodeList.length.
                    408:  *
                    409:  * Returns the number of nodes in the node-set.
                    410:  */
                    411: #define xmlXPathNodeSetGetLength(ns) ((ns) ? (ns)->nodeNr : 0)
                    412: /**
                    413:  * xmlXPathNodeSetItem:
                    414:  * @ns:  a node-set
                    415:  * @index:  index of a node in the set
                    416:  *
                    417:  * Implements a functionality similar to the DOM NodeList.item().
                    418:  *
                    419:  * Returns the xmlNodePtr at the given @index in @ns or NULL if
                    420:  *         @index is out of range (0 to length-1)
                    421:  */
                    422: #define xmlXPathNodeSetItem(ns, index)                         \
                    423:                ((((ns) != NULL) &&                             \
                    424:                  ((index) >= 0) && ((index) < (ns)->nodeNr)) ? \
                    425:                 (ns)->nodeTab[(index)]                         \
                    426:                 : NULL)
                    427: /**
                    428:  * xmlXPathNodeSetIsEmpty:
                    429:  * @ns: a node-set
                    430:  *
                    431:  * Checks whether @ns is empty or not.
                    432:  *
                    433:  * Returns %TRUE if @ns is an empty node-set.
                    434:  */
                    435: #define xmlXPathNodeSetIsEmpty(ns)                                      \
                    436:     (((ns) == NULL) || ((ns)->nodeNr == 0) || ((ns)->nodeTab == NULL))
                    437: 
                    438: 
                    439: XMLPUBFUN void XMLCALL            
                    440:                    xmlXPathFreeObject          (xmlXPathObjectPtr obj);
                    441: XMLPUBFUN xmlNodeSetPtr XMLCALL           
                    442:                    xmlXPathNodeSetCreate       (xmlNodePtr val);
                    443: XMLPUBFUN void XMLCALL            
                    444:                    xmlXPathFreeNodeSetList     (xmlXPathObjectPtr obj);
                    445: XMLPUBFUN void XMLCALL            
                    446:                    xmlXPathFreeNodeSet         (xmlNodeSetPtr obj);
                    447: XMLPUBFUN xmlXPathObjectPtr XMLCALL  
                    448:                    xmlXPathObjectCopy          (xmlXPathObjectPtr val);
                    449: XMLPUBFUN int XMLCALL             
                    450:                    xmlXPathCmpNodes            (xmlNodePtr node1,
                    451:                                                 xmlNodePtr node2);
                    452: /**
                    453:  * Conversion functions to basic types.
                    454:  */
                    455: XMLPUBFUN int XMLCALL             
                    456:                    xmlXPathCastNumberToBoolean (double val);
                    457: XMLPUBFUN int XMLCALL             
                    458:                    xmlXPathCastStringToBoolean (const xmlChar * val);
                    459: XMLPUBFUN int XMLCALL             
                    460:                    xmlXPathCastNodeSetToBoolean(xmlNodeSetPtr ns);
                    461: XMLPUBFUN int XMLCALL             
                    462:                    xmlXPathCastToBoolean       (xmlXPathObjectPtr val);
                    463: 
                    464: XMLPUBFUN double XMLCALL                  
                    465:                    xmlXPathCastBooleanToNumber (int val);
                    466: XMLPUBFUN double XMLCALL                  
                    467:                    xmlXPathCastStringToNumber  (const xmlChar * val);
                    468: XMLPUBFUN double XMLCALL                  
                    469:                    xmlXPathCastNodeToNumber    (xmlNodePtr node);
                    470: XMLPUBFUN double XMLCALL                  
                    471:                    xmlXPathCastNodeSetToNumber (xmlNodeSetPtr ns);
                    472: XMLPUBFUN double XMLCALL                  
                    473:                    xmlXPathCastToNumber        (xmlXPathObjectPtr val);
                    474: 
                    475: XMLPUBFUN xmlChar * XMLCALL       
                    476:                    xmlXPathCastBooleanToString (int val);
                    477: XMLPUBFUN xmlChar * XMLCALL       
                    478:                    xmlXPathCastNumberToString  (double val);
                    479: XMLPUBFUN xmlChar * XMLCALL       
                    480:                    xmlXPathCastNodeToString    (xmlNodePtr node);
                    481: XMLPUBFUN xmlChar * XMLCALL       
                    482:                    xmlXPathCastNodeSetToString (xmlNodeSetPtr ns);
                    483: XMLPUBFUN xmlChar * XMLCALL       
                    484:                    xmlXPathCastToString        (xmlXPathObjectPtr val);
                    485: 
                    486: XMLPUBFUN xmlXPathObjectPtr XMLCALL  
                    487:                    xmlXPathConvertBoolean      (xmlXPathObjectPtr val);
                    488: XMLPUBFUN xmlXPathObjectPtr XMLCALL  
                    489:                    xmlXPathConvertNumber       (xmlXPathObjectPtr val);
                    490: XMLPUBFUN xmlXPathObjectPtr XMLCALL  
                    491:                    xmlXPathConvertString       (xmlXPathObjectPtr val);
                    492: 
                    493: /**
                    494:  * Context handling.
                    495:  */
                    496: XMLPUBFUN xmlXPathContextPtr XMLCALL 
                    497:                    xmlXPathNewContext          (xmlDocPtr doc);
                    498: XMLPUBFUN void XMLCALL
                    499:                    xmlXPathFreeContext         (xmlXPathContextPtr ctxt);
                    500: XMLPUBFUN int XMLCALL
                    501:                    xmlXPathContextSetCache(xmlXPathContextPtr ctxt,
                    502:                                            int active,
                    503:                                            int value,
                    504:                                            int options);
                    505: /**
                    506:  * Evaluation functions.
                    507:  */
                    508: XMLPUBFUN long XMLCALL               
                    509:                    xmlXPathOrderDocElems       (xmlDocPtr doc);
                    510: XMLPUBFUN xmlXPathObjectPtr XMLCALL  
                    511:                    xmlXPathEval                (const xmlChar *str,
                    512:                                                 xmlXPathContextPtr ctx);
                    513: XMLPUBFUN xmlXPathObjectPtr XMLCALL  
                    514:                    xmlXPathEvalExpression      (const xmlChar *str,
                    515:                                                 xmlXPathContextPtr ctxt);
                    516: XMLPUBFUN int XMLCALL                
                    517:                    xmlXPathEvalPredicate       (xmlXPathContextPtr ctxt,
                    518:                                                 xmlXPathObjectPtr res);
                    519: /**
                    520:  * Separate compilation/evaluation entry points.
                    521:  */
                    522: XMLPUBFUN xmlXPathCompExprPtr XMLCALL 
                    523:                    xmlXPathCompile             (const xmlChar *str);
                    524: XMLPUBFUN xmlXPathCompExprPtr XMLCALL 
                    525:                    xmlXPathCtxtCompile         (xmlXPathContextPtr ctxt,
                    526:                                                 const xmlChar *str);
                    527: XMLPUBFUN xmlXPathObjectPtr XMLCALL   
                    528:                    xmlXPathCompiledEval        (xmlXPathCompExprPtr comp,
                    529:                                                 xmlXPathContextPtr ctx);
                    530: XMLPUBFUN int XMLCALL   
                    531:                    xmlXPathCompiledEvalToBoolean(xmlXPathCompExprPtr comp,
                    532:                                                 xmlXPathContextPtr ctxt);
                    533: XMLPUBFUN void XMLCALL                
                    534:                    xmlXPathFreeCompExpr        (xmlXPathCompExprPtr comp);
                    535: #endif /* LIBXML_XPATH_ENABLED */
                    536: #if defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
                    537: XMLPUBFUN void XMLCALL            
                    538:                    xmlXPathInit                (void);
                    539: XMLPUBFUN int XMLCALL
                    540:                xmlXPathIsNaN   (double val);
                    541: XMLPUBFUN int XMLCALL
                    542:                xmlXPathIsInf   (double val);
                    543: 
                    544: #ifdef __cplusplus
                    545: }
                    546: #endif
                    547: 
                    548: #endif /* LIBXML_XPATH_ENABLED or LIBXML_SCHEMAS_ENABLED*/
                    549: #endif /* ! __XML_XPATH_H__ */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>