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

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

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