| /** | |
| * @file | |
| * | |
| * @brief pattern expression handling | |
| * | |
| * allows to compile and test pattern expressions for nodes | |
| * either in a tree or based on a parser state. | |
| * | |
| * @copyright See Copyright for the status of this software. | |
| * | |
| * @author Daniel Veillard | |
| */ | |
| #ifndef __XML_PATTERN_H__ | |
| #define __XML_PATTERN_H__ | |
| #include <libxml/xmlversion.h> | |
| #include <libxml/tree.h> | |
| #include <libxml/dict.h> | |
| #ifdef LIBXML_PATTERN_ENABLED | |
| #ifdef __cplusplus | |
| extern "C" { | |
| #endif | |
| /** | |
| * A compiled (XPath based) pattern to select nodes | |
| */ | |
| typedef struct _xmlPattern xmlPattern; | |
| typedef xmlPattern *xmlPatternPtr; | |
| /** | |
| * Internal type. This is the set of options affecting the behaviour | |
| * of pattern matching with this module. | |
| */ | |
| typedef enum { | |
| XML_PATTERN_DEFAULT = 0, /* simple pattern match */ | |
| XML_PATTERN_XPATH = 1<<0, /* standard XPath pattern */ | |
| XML_PATTERN_XSSEL = 1<<1, /* XPath subset for schema selector */ | |
| XML_PATTERN_XSFIELD = 1<<2 /* XPath subset for schema field */ | |
| } xmlPatternFlags; | |
| XMLPUBFUN void | |
| xmlFreePattern (xmlPattern *comp); | |
| XMLPUBFUN void | |
| xmlFreePatternList (xmlPattern *comp); | |
| XMLPUBFUN xmlPattern * | |
| xmlPatterncompile (const xmlChar *pattern, | |
| xmlDict *dict, | |
| int flags, | |
| const xmlChar **namespaces); | |
| XMLPUBFUN int | |
| xmlPatternCompileSafe (const xmlChar *pattern, | |
| xmlDict *dict, | |
| int flags, | |
| const xmlChar **namespaces, | |
| xmlPattern **patternOut); | |
| XMLPUBFUN int | |
| xmlPatternMatch (xmlPattern *comp, | |
| xmlNode *node); | |
| /** State object for streaming interface */ | |
| typedef struct _xmlStreamCtxt xmlStreamCtxt; | |
| typedef xmlStreamCtxt *xmlStreamCtxtPtr; | |
| XMLPUBFUN int | |
| xmlPatternStreamable (xmlPattern *comp); | |
| XMLPUBFUN int | |
| xmlPatternMaxDepth (xmlPattern *comp); | |
| XMLPUBFUN int | |
| xmlPatternMinDepth (xmlPattern *comp); | |
| XMLPUBFUN int | |
| xmlPatternFromRoot (xmlPattern *comp); | |
| XMLPUBFUN xmlStreamCtxt * | |
| xmlPatternGetStreamCtxt (xmlPattern *comp); | |
| XMLPUBFUN void | |
| xmlFreeStreamCtxt (xmlStreamCtxt *stream); | |
| XMLPUBFUN int | |
| xmlStreamPushNode (xmlStreamCtxt *stream, | |
| const xmlChar *name, | |
| const xmlChar *ns, | |
| int nodeType); | |
| XMLPUBFUN int | |
| xmlStreamPush (xmlStreamCtxt *stream, | |
| const xmlChar *name, | |
| const xmlChar *ns); | |
| XMLPUBFUN int | |
| xmlStreamPushAttr (xmlStreamCtxt *stream, | |
| const xmlChar *name, | |
| const xmlChar *ns); | |
| XMLPUBFUN int | |
| xmlStreamPop (xmlStreamCtxt *stream); | |
| XMLPUBFUN int | |
| xmlStreamWantsAnyNode (xmlStreamCtxt *stream); | |
| #ifdef __cplusplus | |
| } | |
| #endif | |
| #endif /* LIBXML_PATTERN_ENABLED */ | |
| #endif /* __XML_PATTERN_H__ */ |