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