diff options
Diffstat (limited to 'Master/tlpkg/tlperl.straw/lib/XML/LibXML/Pattern.pod')
-rwxr-xr-x | Master/tlpkg/tlperl.straw/lib/XML/LibXML/Pattern.pod | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/Master/tlpkg/tlperl.straw/lib/XML/LibXML/Pattern.pod b/Master/tlpkg/tlperl.straw/lib/XML/LibXML/Pattern.pod new file mode 100755 index 00000000000..f8a05c67b91 --- /dev/null +++ b/Master/tlpkg/tlperl.straw/lib/XML/LibXML/Pattern.pod @@ -0,0 +1,107 @@ +=head1 NAME + +XML::LibXML::Pattern - XML::LibXML::Pattern - interface to libxml2 XPath patterns + +=head1 SYNOPSIS + + + + use XML::LibXML; + my $pattern = new XML::LibXML::Pattern('/x:html/x:body//x:div', { 'x' => 'http://www.w3.org/1999/xhtml' }); + # test a match on a XML::LibXML::Node $node + + if ($pattern->matchesNode($node)) { ... } + + # or on a 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 limitted 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 a 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 + +1.70 + +=head1 COPYRIGHT + +2001-2007, AxKit.com Ltd. + +2002-2006, Christian Glahn. + +2006-2009, Petr Pajas. + +=cut |