Go to main content

man pages section 3: Library Interfaces and Headers

Exit Print View

Updated: Wednesday, July 27, 2022
 
 

XML::LibXML::Pattern (3)

Name

XML::LibXML::Pattern - interface to libxml2 XPath patterns

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);

Description

User Contributed Perl Documentation                    XML::LibXML::Pattern(3)



NAME
       XML::LibXML::Pattern - XML::LibXML::Pattern - interface to libxml2
       XPath patterns

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);

DESCRIPTION
       This is a perl interface to libxml2's pattern matching support
       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
       "XML::LibXML::Reader" interface.

       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 "<a
           xmlns="http://foo.bar"</a>", one should use a pattern like this:

             $pattern = XML::LibXML::Pattern->new( 'foo:a', { foo => 'http://foo.bar' });

       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.


ATTRIBUTES
       See attributes(7) for descriptions of the following attributes:


       +---------------+-------------------------------+
       |ATTRIBUTE TYPE |       ATTRIBUTE VALUE         |
       +---------------+-------------------------------+
       |Availability   | library/perl-5/xml-libxml-532 |
       +---------------+-------------------------------+
       |Stability      | Volatile                      |
       +---------------+-------------------------------+

SEE ALSO
       XML::LibXML::Reader for other methods involving compiled patterns.

AUTHORS
       Matt Sergeant, Christian Glahn, Petr Pajas

VERSION
       2.0201

COPYRIGHT
       2001-2007, AxKit.com Ltd.

       2002-2006, Christian Glahn.

       2006-2009, Petr Pajas.

LICENSE
       This program is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.



NOTES
       Source code for open source software components in Oracle Solaris can
       be found at https://www.oracle.com/downloads/opensource/solaris-source-
       code-downloads.html.

       This software was built from source available at
       https://github.com/oracle/solaris-userland.  The original community
       source was downloaded from
       http://search.cpan.org/CPAN/authors/id/S/SH/SHLOMIF/XML-
       LibXML-2.0201.tar.gz.

       Further information about this software can be found on the open source
       community website at http://search.cpan.org/~shlomif/XML-LibXML/.



perl v5.32.0                      2019-05-25           XML::LibXML::Pattern(3)