libxml2 Reference Manual |
---|
pattern - pattern expression handling
allows to compile and test pattern expressions for nodes either in a tree or based on a parser state.
Author(s): Daniel Veillard
typedef struct _xmlPattern xmlPattern; typedef enum xmlPatternFlags; typedef xmlPattern * xmlPatternPtr; typedef struct _xmlStreamCtxt xmlStreamCtxt; typedef xmlStreamCtxt * xmlStreamCtxtPtr; void xmlFreePattern (xmlPatternPtr comp); void xmlFreePatternList (xmlPatternPtr comp); void xmlFreeStreamCtxt (xmlStreamCtxtPtr stream); int xmlPatternCompileSafe (const xmlChar * pattern,
xmlDict * dict,
int flags,
const xmlChar ** namespaces,
xmlPatternPtr * patternOut); int xmlPatternFromRoot (xmlPatternPtr comp); xmlStreamCtxtPtr xmlPatternGetStreamCtxt (xmlPatternPtr comp); int xmlPatternMatch (xmlPatternPtr comp,
xmlNodePtr node); int xmlPatternMaxDepth (xmlPatternPtr comp); int xmlPatternMinDepth (xmlPatternPtr comp); int xmlPatternStreamable (xmlPatternPtr comp); xmlPatternPtr xmlPatterncompile (const xmlChar * pattern,
xmlDict * dict,
int flags,
const xmlChar ** namespaces); int xmlStreamPop (xmlStreamCtxtPtr stream); int xmlStreamPush (xmlStreamCtxtPtr stream,
const xmlChar * name,
const xmlChar * ns); int xmlStreamPushAttr (xmlStreamCtxtPtr stream,
const xmlChar * name,
const xmlChar * ns); int xmlStreamPushNode (xmlStreamCtxtPtr stream,
const xmlChar * name,
const xmlChar * ns,
int nodeType); int xmlStreamWantsAnyNode (xmlStreamCtxtPtr streamCtxt);
struct _xmlPattern { The content of this structure is not made public by the API. } xmlPattern;
enum xmlPatternFlags { XML_PATTERN_DEFAULT = 0 /* simple pattern match */ XML_PATTERN_XPATH = 1 /* standard XPath pattern */ XML_PATTERN_XSSEL = 2 /* XPath subset for schema selector */ XML_PATTERN_XSFIELD = 4 /* XPath subset for schema field */ };
xmlPattern * xmlPatternPtr;
struct _xmlStreamCtxt { The content of this structure is not made public by the API. } xmlStreamCtxt;
xmlStreamCtxt * xmlStreamCtxtPtr;
void xmlFreePattern (xmlPatternPtr comp)
Free up the memory allocated by @comp
comp: | an XSLT comp |
void xmlFreePatternList (xmlPatternPtr comp)
Free up the memory allocated by all the elements of @comp
comp: | an XSLT comp list |
void xmlFreeStreamCtxt (xmlStreamCtxtPtr stream)
Free the stream context
stream: | the stream context |
int xmlPatternCompileSafe (const xmlChar * pattern,
xmlDict * dict,
int flags,
const xmlChar ** namespaces,
xmlPatternPtr * patternOut)
Compile a pattern. Available since 2.13.0.
pattern: | the pattern to compile |
dict: | an optional dictionary for interned strings |
flags: | compilation flags, see xmlPatternFlags |
namespaces: | the prefix definitions, array of [URI, prefix] or NULL |
patternOut: | output pattern |
Returns: | 0 on success, 1 on error, -1 if a memory allocation failed. |
int xmlPatternFromRoot (xmlPatternPtr comp)
Check if the pattern must be looked at from the root.
comp: | the precompiled pattern |
Returns: | 1 if true, 0 if false and -1 in case of error |
xmlStreamCtxtPtr xmlPatternGetStreamCtxt (xmlPatternPtr comp)
Get a streaming context for that pattern Use xmlFreeStreamCtxt to free the context.
comp: | the precompiled pattern |
Returns: | a pointer to the context or NULL in case of failure |
int xmlPatternMatch (xmlPatternPtr comp,
xmlNodePtr node)
Test whether the node matches the pattern
comp: | the precompiled pattern |
node: | a node |
Returns: | 1 if it matches, 0 if it doesn't and -1 in case of failure |
int xmlPatternMaxDepth (xmlPatternPtr comp)
Check the maximum depth reachable by a pattern
comp: | the precompiled pattern |
Returns: | -2 if no limit (using //), otherwise the depth, and -1 in case of error |
int xmlPatternMinDepth (xmlPatternPtr comp)
Check the minimum depth reachable by a pattern, 0 mean the / or . are part of the set.
comp: | the precompiled pattern |
Returns: | -1 in case of error otherwise the depth, |
int xmlPatternStreamable (xmlPatternPtr comp)
Check if the pattern is streamable i.e. xmlPatternGetStreamCtxt() should work.
comp: | the precompiled pattern |
Returns: | 1 if streamable, 0 if not and -1 in case of error. |
xmlPatternPtr xmlPatterncompile (const xmlChar * pattern,
xmlDict * dict,
int flags,
const xmlChar ** namespaces)
Compile a pattern.
pattern: | the pattern to compile |
dict: | an optional dictionary for interned strings |
flags: | compilation flags, see xmlPatternFlags |
namespaces: | the prefix definitions, array of [URI, prefix] or NULL |
Returns: | the compiled form of the pattern or NULL in case of error |
int xmlStreamPop (xmlStreamCtxtPtr stream)
push one level from the stream.
stream: | the stream context |
Returns: | -1 in case of error, 0 otherwise. |
int xmlStreamPush (xmlStreamCtxtPtr stream,
const xmlChar * name,
const xmlChar * ns)
Push new data onto the stream. NOTE: if the call xmlPatterncompile() indicated a dictionary, then strings for name and ns will be expected to come from the dictionary. Both @name and @ns being NULL means the / i.e. the root of the document. This can also act as a reset. Otherwise the function will act as if it has been given an element-node.
stream: | the stream context |
name: | the current name |
ns: | the namespace name |
Returns: | -1 in case of error, 1 if the current state in the stream is a match and 0 otherwise. |
int xmlStreamPushAttr (xmlStreamCtxtPtr stream,
const xmlChar * name,
const xmlChar * ns)
Push new attribute data onto the stream. NOTE: if the call xmlPatterncompile() indicated a dictionary, then strings for name and ns will be expected to come from the dictionary. Both @name and @ns being NULL means the / i.e. the root of the document. This can also act as a reset. Otherwise the function will act as if it has been given an attribute-node.
stream: | the stream context |
name: | the current name |
ns: | the namespace name |
Returns: | -1 in case of error, 1 if the current state in the stream is a match and 0 otherwise. |
int xmlStreamPushNode (xmlStreamCtxtPtr stream,
const xmlChar * name,
const xmlChar * ns,
int nodeType)
Push new data onto the stream. NOTE: if the call xmlPatterncompile() indicated a dictionary, then strings for name and ns will be expected to come from the dictionary. Both @name and @ns being NULL means the / i.e. the root of the document. This can also act as a reset. Different from xmlStreamPush() this function can be fed with nodes of type: element-, attribute-, text-, cdata-section-, comment- and processing-instruction-node.
stream: | the stream context |
name: | the current name |
ns: | the namespace name |
nodeType: | the type of the node being pushed |
Returns: | -1 in case of error, 1 if the current state in the stream is a match and 0 otherwise. |
int xmlStreamWantsAnyNode (xmlStreamCtxtPtr streamCtxt)
Query if the streaming pattern additionally needs to be fed with text-, cdata-section-, comment- and processing-instruction-nodes. If the result is 0 then only element-nodes and attribute-nodes need to be pushed.
streamCtxt: | the stream context |
Returns: | 1 in case of need of nodes of the above described types, 0 otherwise. -1 on API errors. |