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