1*7c568831SAndroid Build Coastguard Worker /* 2*7c568831SAndroid Build Coastguard Worker * Summary: pattern expression handling 3*7c568831SAndroid Build Coastguard Worker * Description: allows to compile and test pattern expressions for nodes 4*7c568831SAndroid Build Coastguard Worker * either in a tree or based on a parser state. 5*7c568831SAndroid Build Coastguard Worker * 6*7c568831SAndroid Build Coastguard Worker * Copy: See Copyright for the status of this software. 7*7c568831SAndroid Build Coastguard Worker * 8*7c568831SAndroid Build Coastguard Worker * Author: Daniel Veillard 9*7c568831SAndroid Build Coastguard Worker */ 10*7c568831SAndroid Build Coastguard Worker 11*7c568831SAndroid Build Coastguard Worker #ifndef __XML_PATTERN_H__ 12*7c568831SAndroid Build Coastguard Worker #define __XML_PATTERN_H__ 13*7c568831SAndroid Build Coastguard Worker 14*7c568831SAndroid Build Coastguard Worker #include <libxml/xmlversion.h> 15*7c568831SAndroid Build Coastguard Worker #include <libxml/tree.h> 16*7c568831SAndroid Build Coastguard Worker #include <libxml/dict.h> 17*7c568831SAndroid Build Coastguard Worker 18*7c568831SAndroid Build Coastguard Worker #ifdef LIBXML_PATTERN_ENABLED 19*7c568831SAndroid Build Coastguard Worker 20*7c568831SAndroid Build Coastguard Worker #ifdef __cplusplus 21*7c568831SAndroid Build Coastguard Worker extern "C" { 22*7c568831SAndroid Build Coastguard Worker #endif 23*7c568831SAndroid Build Coastguard Worker 24*7c568831SAndroid Build Coastguard Worker /** 25*7c568831SAndroid Build Coastguard Worker * xmlPattern: 26*7c568831SAndroid Build Coastguard Worker * 27*7c568831SAndroid Build Coastguard Worker * A compiled (XPath based) pattern to select nodes 28*7c568831SAndroid Build Coastguard Worker */ 29*7c568831SAndroid Build Coastguard Worker typedef struct _xmlPattern xmlPattern; 30*7c568831SAndroid Build Coastguard Worker typedef xmlPattern *xmlPatternPtr; 31*7c568831SAndroid Build Coastguard Worker 32*7c568831SAndroid Build Coastguard Worker /** 33*7c568831SAndroid Build Coastguard Worker * xmlPatternFlags: 34*7c568831SAndroid Build Coastguard Worker * 35*7c568831SAndroid Build Coastguard Worker * This is the set of options affecting the behaviour of pattern 36*7c568831SAndroid Build Coastguard Worker * matching with this module 37*7c568831SAndroid Build Coastguard Worker * 38*7c568831SAndroid Build Coastguard Worker */ 39*7c568831SAndroid Build Coastguard Worker typedef enum { 40*7c568831SAndroid Build Coastguard Worker XML_PATTERN_DEFAULT = 0, /* simple pattern match */ 41*7c568831SAndroid Build Coastguard Worker XML_PATTERN_XPATH = 1<<0, /* standard XPath pattern */ 42*7c568831SAndroid Build Coastguard Worker XML_PATTERN_XSSEL = 1<<1, /* XPath subset for schema selector */ 43*7c568831SAndroid Build Coastguard Worker XML_PATTERN_XSFIELD = 1<<2 /* XPath subset for schema field */ 44*7c568831SAndroid Build Coastguard Worker } xmlPatternFlags; 45*7c568831SAndroid Build Coastguard Worker 46*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void 47*7c568831SAndroid Build Coastguard Worker xmlFreePattern (xmlPatternPtr comp); 48*7c568831SAndroid Build Coastguard Worker 49*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void 50*7c568831SAndroid Build Coastguard Worker xmlFreePatternList (xmlPatternPtr comp); 51*7c568831SAndroid Build Coastguard Worker 52*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlPatternPtr 53*7c568831SAndroid Build Coastguard Worker xmlPatterncompile (const xmlChar *pattern, 54*7c568831SAndroid Build Coastguard Worker xmlDict *dict, 55*7c568831SAndroid Build Coastguard Worker int flags, 56*7c568831SAndroid Build Coastguard Worker const xmlChar **namespaces); 57*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int 58*7c568831SAndroid Build Coastguard Worker xmlPatternCompileSafe (const xmlChar *pattern, 59*7c568831SAndroid Build Coastguard Worker xmlDict *dict, 60*7c568831SAndroid Build Coastguard Worker int flags, 61*7c568831SAndroid Build Coastguard Worker const xmlChar **namespaces, 62*7c568831SAndroid Build Coastguard Worker xmlPatternPtr *patternOut); 63*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int 64*7c568831SAndroid Build Coastguard Worker xmlPatternMatch (xmlPatternPtr comp, 65*7c568831SAndroid Build Coastguard Worker xmlNodePtr node); 66*7c568831SAndroid Build Coastguard Worker 67*7c568831SAndroid Build Coastguard Worker /* streaming interfaces */ 68*7c568831SAndroid Build Coastguard Worker typedef struct _xmlStreamCtxt xmlStreamCtxt; 69*7c568831SAndroid Build Coastguard Worker typedef xmlStreamCtxt *xmlStreamCtxtPtr; 70*7c568831SAndroid Build Coastguard Worker 71*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int 72*7c568831SAndroid Build Coastguard Worker xmlPatternStreamable (xmlPatternPtr comp); 73*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int 74*7c568831SAndroid Build Coastguard Worker xmlPatternMaxDepth (xmlPatternPtr comp); 75*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int 76*7c568831SAndroid Build Coastguard Worker xmlPatternMinDepth (xmlPatternPtr comp); 77*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int 78*7c568831SAndroid Build Coastguard Worker xmlPatternFromRoot (xmlPatternPtr comp); 79*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlStreamCtxtPtr 80*7c568831SAndroid Build Coastguard Worker xmlPatternGetStreamCtxt (xmlPatternPtr comp); 81*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void 82*7c568831SAndroid Build Coastguard Worker xmlFreeStreamCtxt (xmlStreamCtxtPtr stream); 83*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int 84*7c568831SAndroid Build Coastguard Worker xmlStreamPushNode (xmlStreamCtxtPtr stream, 85*7c568831SAndroid Build Coastguard Worker const xmlChar *name, 86*7c568831SAndroid Build Coastguard Worker const xmlChar *ns, 87*7c568831SAndroid Build Coastguard Worker int nodeType); 88*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int 89*7c568831SAndroid Build Coastguard Worker xmlStreamPush (xmlStreamCtxtPtr stream, 90*7c568831SAndroid Build Coastguard Worker const xmlChar *name, 91*7c568831SAndroid Build Coastguard Worker const xmlChar *ns); 92*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int 93*7c568831SAndroid Build Coastguard Worker xmlStreamPushAttr (xmlStreamCtxtPtr stream, 94*7c568831SAndroid Build Coastguard Worker const xmlChar *name, 95*7c568831SAndroid Build Coastguard Worker const xmlChar *ns); 96*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int 97*7c568831SAndroid Build Coastguard Worker xmlStreamPop (xmlStreamCtxtPtr stream); 98*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int 99*7c568831SAndroid Build Coastguard Worker xmlStreamWantsAnyNode (xmlStreamCtxtPtr stream); 100*7c568831SAndroid Build Coastguard Worker #ifdef __cplusplus 101*7c568831SAndroid Build Coastguard Worker } 102*7c568831SAndroid Build Coastguard Worker #endif 103*7c568831SAndroid Build Coastguard Worker 104*7c568831SAndroid Build Coastguard Worker #endif /* LIBXML_PATTERN_ENABLED */ 105*7c568831SAndroid Build Coastguard Worker 106*7c568831SAndroid Build Coastguard Worker #endif /* __XML_PATTERN_H__ */ 107