Home | History | Annotate | Download | only in libxml
      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