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
21extern "C" {
22#endif
23
24/**
25 * xmlPattern:
26 *
27 * A compiled (XPath based) pattern to select nodes
28 */
29typedef struct _xmlPattern xmlPattern;
30typedef 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 */
39typedef 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
46XMLPUBFUN void XMLCALL
47 xmlFreePattern (xmlPatternPtr comp);
48
49XMLPUBFUN void XMLCALL
50 xmlFreePatternList (xmlPatternPtr comp);
51
52XMLPUBFUN xmlPatternPtr XMLCALL
53 xmlPatterncompile (const xmlChar *pattern,
54 xmlDict *dict,
55 int flags,
56 const xmlChar **namespaces);
57XMLPUBFUN int XMLCALL
58 xmlPatternMatch (xmlPatternPtr comp,
59 xmlNodePtr node);
60
61/* streaming interfaces */
62typedef struct _xmlStreamCtxt xmlStreamCtxt;
63typedef xmlStreamCtxt *xmlStreamCtxtPtr;
64
65XMLPUBFUN int XMLCALL
66 xmlPatternStreamable (xmlPatternPtr comp);
67XMLPUBFUN int XMLCALL
68 xmlPatternMaxDepth (xmlPatternPtr comp);
69XMLPUBFUN int XMLCALL
70 xmlPatternMinDepth (xmlPatternPtr comp);
71XMLPUBFUN int XMLCALL
72 xmlPatternFromRoot (xmlPatternPtr comp);
73XMLPUBFUN xmlStreamCtxtPtr XMLCALL
74 xmlPatternGetStreamCtxt (xmlPatternPtr comp);
75XMLPUBFUN void XMLCALL
76 xmlFreeStreamCtxt (xmlStreamCtxtPtr stream);
77XMLPUBFUN int XMLCALL
78 xmlStreamPushNode (xmlStreamCtxtPtr stream,
79 const xmlChar *name,
80 const xmlChar *ns,
81 int nodeType);
82XMLPUBFUN int XMLCALL
83 xmlStreamPush (xmlStreamCtxtPtr stream,
84 const xmlChar *name,
85 const xmlChar *ns);
86XMLPUBFUN int XMLCALL
87 xmlStreamPushAttr (xmlStreamCtxtPtr stream,
88 const xmlChar *name,
89 const xmlChar *ns);
90XMLPUBFUN int XMLCALL
91 xmlStreamPop (xmlStreamCtxtPtr stream);
92XMLPUBFUN 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