=head1 NAME XML::LibXML::Pattern - XML::LibXML::Pattern - interface to libxml2 XPath patterns =head1 SYNOPSIS use XML::LibXML; my $pattern = XML::LibXML::Pattern->new('/x:html/x:body//x:div', { 'x' => 'http://www.w3.org/1999/xhtml' }); # test a match on an XML::LibXML::Node $node if ($pattern->matchesNode($node)) { ... } # or on an XML::LibXML::Reader if ($reader->matchesPattern($pattern)) { ... } # or skip reading all nodes that do not match print $reader->nodePath while $reader->nextPatternMatch($pattern); $pattern = XML::LibXML::Pattern->new( pattern, { prefix => namespace_URI, ... } ); $bool = $pattern->matchesNode($node); =head1 DESCRIPTION This is a perl interface to libxml2's pattern matching support I<<<<<< http://xmlsoft.org/html/libxml-pattern.html >>>>>>. This feature requires recent versions of libxml2. Patterns are a small subset of XPath language, which is limited to (disjunctions of) location paths involving the child and descendant axes in abbreviated form as described by the extended BNF given below: Selector ::= Path ( '|' Path )* Path ::= ('.//' | '//' | '/' )? Step ( '/' Step )* Step ::= '.' | NameTest NameTest ::= QName | '*' | NCName ':' '*' For readability, whitespace may be used in selector XPath expressions even though not explicitly allowed by the grammar: whitespace may be freely added within patterns before or after any token, where token ::= '.' | '/' | '//' | '|' | NameTest Note that no predicates or attribute tests are allowed. Patterns are particularly useful for stream parsing provided via the C<<<<<< XML::LibXML::Reader >>>>>> interface. =over 4 =item new() $pattern = XML::LibXML::Pattern->new( pattern, { prefix => namespace_URI, ... } ); The constructor of a pattern takes a pattern expression (as described by the BNF grammar above) and an optional HASH reference mapping prefixes to namespace URIs. The method returns a compiled pattern object. Note that if the document has a default namespace, it must still be given an prefix in order to be matched (as demanded by the XPath 1.0 specification). For example, to match an element C<<<<<< <a xmlns="http://foo.bar"</a> >>>>>>, one should use a pattern like this: $pattern = XML::LibXML::Pattern->new( 'foo:a', { foo => 'http://foo.bar' }); =item matchesNode($node) $bool = $pattern->matchesNode($node); Given an XML::LibXML::Node object, returns a true value if the node is matched by the compiled pattern expression. =back =head1 SEE ALSO L<<<<<< XML::LibXML::Reader >>>>>> for other methods involving compiled patterns. =head1 AUTHORS Matt Sergeant, Christian Glahn, Petr Pajas =head1 VERSION 2.0132 =head1 COPYRIGHT 2001-2007, AxKit.com Ltd. 2002-2006, Christian Glahn. 2006-2009, Petr Pajas. =cut =head1 LICENSE This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
SAX | Folder | 0755 |
|
|
Attr.pod | File | 4.02 KB | 0644 |
|
AttributeHash.pm | File | 4.49 KB | 0644 |
|
Boolean.pm | File | 1.56 KB | 0644 |
|
CDATASection.pod | File | 1.28 KB | 0644 |
|
Comment.pod | File | 1.36 KB | 0644 |
|
Common.pm | File | 8.22 KB | 0644 |
|
Common.pod | File | 3.59 KB | 0644 |
|
DOM.pod | File | 6.23 KB | 0644 |
|
Devel.pm | File | 4.91 KB | 0644 |
|
Document.pod | File | 20.9 KB | 0644 |
|
DocumentFragment.pod | File | 819 B | 0644 |
|
Dtd.pod | File | 1.99 KB | 0644 |
|
Element.pod | File | 13.48 KB | 0644 |
|
ErrNo.pm | File | 27.83 KB | 0644 |
|
ErrNo.pod | File | 591 B | 0644 |
|
Error.pm | File | 8.47 KB | 0644 |
|
Error.pod | File | 5.97 KB | 0644 |
|
InputCallback.pod | File | 9.59 KB | 0644 |
|
Literal.pm | File | 2.04 KB | 0644 |
|
Namespace.pod | File | 3.28 KB | 0644 |
|
Node.pod | File | 25.38 KB | 0644 |
|
NodeList.pm | File | 7.31 KB | 0644 |
|
Number.pm | File | 1.87 KB | 0644 |
|
PI.pod | File | 2.22 KB | 0644 |
|
Parser.pod | File | 27.49 KB | 0644 |
|
Pattern.pod | File | 2.89 KB | 0644 |
|
Reader.pm | File | 5.75 KB | 0644 |
|
Reader.pod | File | 17.57 KB | 0644 |
|
RegExp.pod | File | 1.54 KB | 0644 |
|
RelaxNG.pod | File | 2.08 KB | 0644 |
|
SAX.pm | File | 2.96 KB | 0644 |
|
SAX.pod | File | 1.76 KB | 0644 |
|
Schema.pod | File | 1.96 KB | 0644 |
|
Text.pod | File | 5.47 KB | 0644 |
|
XPathContext.pm | File | 3.15 KB | 0644 |
|
XPathContext.pod | File | 11.49 KB | 0644 |
|
XPathExpression.pod | File | 1.64 KB | 0644 |
|