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 | |