(root)/
libxml2-2.12.3/
include/
libxml/
pattern.h
       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__ */