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
47 xmlFreePattern (xmlPatternPtr comp);
48
49 XMLPUBFUN void
50 xmlFreePatternList (xmlPatternPtr comp);
51
52 XMLPUBFUN xmlPatternPtr
53 xmlPatterncompile (const xmlChar *pattern,
54 xmlDict *dict,
55 int flags,
56 const xmlChar **namespaces);
57 XMLPUBFUN int
58 xmlPatternMatch (xmlPatternPtr comp,
59 xmlNodePtr node);
60
61 /* streaming interfaces */
62 typedef struct _xmlStreamCtxt xmlStreamCtxt;
63 typedef xmlStreamCtxt *xmlStreamCtxtPtr;
64
65 XMLPUBFUN int
66 xmlPatternStreamable (xmlPatternPtr comp);
67 XMLPUBFUN int
68 xmlPatternMaxDepth (xmlPatternPtr comp);
69 XMLPUBFUN int
70 xmlPatternMinDepth (xmlPatternPtr comp);
71 XMLPUBFUN int
72 xmlPatternFromRoot (xmlPatternPtr comp);
73 XMLPUBFUN xmlStreamCtxtPtr
74 xmlPatternGetStreamCtxt (xmlPatternPtr comp);
75 XMLPUBFUN void
76 xmlFreeStreamCtxt (xmlStreamCtxtPtr stream);
77 XMLPUBFUN int
78 xmlStreamPushNode (xmlStreamCtxtPtr stream,
79 const xmlChar *name,
80 const xmlChar *ns,
81 int nodeType);
82 XMLPUBFUN int
83 xmlStreamPush (xmlStreamCtxtPtr stream,
84 const xmlChar *name,
85 const xmlChar *ns);
86 XMLPUBFUN int
87 xmlStreamPushAttr (xmlStreamCtxtPtr stream,
88 const xmlChar *name,
89 const xmlChar *ns);
90 XMLPUBFUN int
91 xmlStreamPop (xmlStreamCtxtPtr stream);
92 XMLPUBFUN int
93 xmlStreamWantsAnyNode (xmlStreamCtxtPtr stream);
94 #ifdef __cplusplus
95 }
96 #endif
97
98 #endif /* LIBXML_PATTERN_ENABLED */
99
100 #endif /* __XML_PATTERN_H__ */