NAME
    XML::LibXML::LazyMatcher - A simple XML matcher with lazy evaluation.

VERSION
    Version 0.01

SYNOPSIS
        my $dom = XML::LibXML->load_xml (string => "<root><c1><c2>hello</c2><c3>world</c3></c1></root>");
        my $matcher;
        my ($c2content, $c3content);
        {
            package XML::LibXML::LazyMatcher;
            $matcher = M (root =>
                          C (M (c1 =>
                                C (M (c2 =>
                                      sub {
                                          $c2content = $_[0]->textContent;
                                          return 1;
                                      }),
                                   M (c3 =>
                                      sub {
                                          $c3content = $_[0]->textContent;
                                          return 1;
                                      })))));
        }
        $matcher->($dom->documentElement);

EXPORT
    None.

SUBROUTINES/METHODS
  M (tagname => [sub_matcher, ...])
    Returns a matcher function. This returned function takes an
    XML::LibXML::Node object as an argument. First, The matcher checks if
    the tag name of the passed node is correct, then, applies the node to
    all `sub_matcher's. If all `sub_matcher's return true value then the
    `M()' returns 1. Otherwise returns 0.

    You can define some action as a sub_matcher. A typical `sub_matcher' may
    be like this:

        sub {
            my $node = shift;       # $node should be a XML::LibXML::Node.
    
            return 0 unless is_valid($node);
    
            do_some_action($node);
            return 1;
        }

  C (sub_matcher, ...)
    Creates a matcher function which tests all child nodes. If a sub_matcher
    returns true value, then the `C()' returns 1. Otherwise returns 0.

AUTHOR
    Toru Hisai, `<toru at torus.jp>'

BUGS
    Please report any bugs or feature requests to
    `bug-xml-libxml-lazymatcher at rt.cpan.org', or through the web
    interface at
    http://rt.cpan.org/NoAuth/ReportBug.html?Queue=XML-LibXML-LazyMatcher. I
    will be notified, and then you'll automatically be notified of progress
    on your bug as I make changes.

SUPPORT
    You can find documentation for this module with the perldoc command.

        perldoc XML::LibXML::LazyMatcher

    You can also look for information at:

    * RT: CPAN's request tracker
        http://rt.cpan.org/NoAuth/Bugs.html?Dist=XML-LibXML-LazyMatcher

    * AnnoCPAN: Annotated CPAN documentation
        http://annocpan.org/dist/XML-LibXML-LazyMatcher

    * CPAN Ratings
        http://cpanratings.perl.org/d/XML-LibXML-LazyMatcher

    * Search CPAN
        http://search.cpan.org/dist/XML-LibXML-LazyMatcher/

ACKNOWLEDGEMENTS
LICENSE AND COPYRIGHT
    Copyright 2010 Toru Hisai.

    This program is free software; you can redistribute it and/or modify it
    under the terms of either: the GNU General Public License as published
    by the Free Software Foundation; or the Artistic License.

    See http://dev.perl.org/licenses/ for more information.

