$Id: /html-treebuilder-xpath/Changes 40 2006-05-15T07:42:34.182385Z mrodrigu  $
 Revision history for Perl extension HTML::TreeBuilder::XPath.
 
+version 0.12
+date:   2010-09-29
+# minor bug fix
+fix:    added getLocalName on elements
+        see https://rt.cpan.org/Public/Bug/Display.html?id=61746
+        found and fixed by Miyagawa
+added:  a few tests
+
 version 0.11
-date:
+date:          2009-05-19
 # minor bug fixes
-added: mention $tree->delete in docs to warn about memory leaks
-fix:   pod fix (https://rt.cpan.org/Ticket/Display.html?id=46203)
+added:  mention $tree->delete in docs to warn about memory leaks
+fix:    pod fix (https://rt.cpan.org/Ticket/Display.html?id=46203)
 
 version: 0.10
 date: 2008-02-11
 
 # This Makefile is for the HTML::TreeBuilder::XPath extension to perl.
 #
 # It was generated automatically by MakeMaker version
-# 6.42 (Revision: 41145) from the contents of
+# 6.56 (Revision: 65600) from the contents of
 # Makefile.PL. Don't edit this file, edit Makefile.PL instead.
 #
 #       ANY CHANGES MADE HERE WILL BE LOST!
 #
 #   MakeMaker ARGV: ()
 #
+
 #   MakeMaker Parameters:
 
 #     ABSTRACT_FROM => q[lib/HTML/TreeBuilder/XPath.pm]
 #     AUTHOR => q[Michel Rodriguez <mrodrigu@localdomain>]
+#     BUILD_REQUIRES => {  }
 #     LICENSE => q[perl]
 #     NAME => q[HTML::TreeBuilder::XPath]
 #     PREREQ_PM => { List::Util=>q[0], XML::XPathEngine=>q[0.12], HTML::TreeBuilder=>q[0] }
 
 # --- MakeMaker const_config section:
 
-# These definitions are from config.sh (via /usr/lib/perl/5.10/Config.pm)
-
-# They may have been overridden via Makefile.PL or on the command line
+# These definitions are from config.sh (via /usr/lib/perl/5.10/Config.pm).
+# They may have been overridden via Makefile.PL or on the command line.
 AR = ar
 CC = cc
 CCCDLFLAGS = -fPIC
@@ -34,16 +35,16 @@ DLSRC = dl_dlopen.xs 
 EXE_EXT = 
 FULL_AR = /usr/bin/ar
 LD = cc
-LDDLFLAGS = -shared -O2 -g -L/usr/local/lib
-LDFLAGS =  -L/usr/local/lib
-LIBC = /lib/libc-2.9.so
+LDDLFLAGS = -shared -O2 -g -L/usr/local/lib -fstack-protector
+LDFLAGS =  -fstack-protector -L/usr/local/lib
+LIBC = /lib/libc-2.11.1.so
 LIB_EXT = .a
 OBJ_EXT = .o
 OSNAME = linux
-OSVERS = 2.6.24-19-server
+OSVERS = 2.6.24-27-server
 RANLIB = :
-SITELIBEXP = /usr/local/share/perl/5.10.0
-SITEARCHEXP = /usr/local/lib/perl/5.10.0
+SITELIBEXP = /usr/local/share/perl/5.10.1
+SITEARCHEXP = /usr/local/lib/perl/5.10.1
 SO = so
 VENDORARCHEXP = /usr/lib/perl5
 VENDORLIBEXP = /usr/share/perl5
@@ -55,11 +56,11 @@ DIRFILESEP = / 
 DFSEP = $(DIRFILESEP)
 NAME = HTML::TreeBuilder::XPath
 NAME_SYM = HTML_TreeBuilder_XPath
-VERSION = 0.11
+VERSION = 0.12
 VERSION_MACRO = VERSION
-VERSION_SYM = 0_11
+VERSION_SYM = 0_12
 DEFINE_VERSION = -D$(VERSION_MACRO)=\"$(VERSION)\"
-XS_VERSION = 0.11
+XS_VERSION = 0.12
 XS_VERSION_MACRO = XS_VERSION
 XS_DEFINE_VERSION = -D$(XS_VERSION_MACRO)=\"$(XS_VERSION)\"
 INST_ARCHLIB = blib/arch
@@ -72,45 +73,45 @@ MAN1EXT = 1p 
 MAN3EXT = 3pm
 INSTALLDIRS = site
 DESTDIR = 
-PREFIX = /usr
-PERLPREFIX = $(PREFIX)
-SITEPREFIX = $(PREFIX)/local
-VENDORPREFIX = $(PREFIX)
-INSTALLPRIVLIB = $(PERLPREFIX)/share/perl/5.10
+PREFIX = $(SITEPREFIX)
+PERLPREFIX = /usr
+SITEPREFIX = /usr/local
+VENDORPREFIX = /usr
+INSTALLPRIVLIB = /usr/share/perl/5.10
 DESTINSTALLPRIVLIB = $(DESTDIR)$(INSTALLPRIVLIB)
-INSTALLSITELIB = $(SITEPREFIX)/share/perl/5.10.0
+INSTALLSITELIB = /usr/local/share/perl/5.10.1
 DESTINSTALLSITELIB = $(DESTDIR)$(INSTALLSITELIB)
-INSTALLVENDORLIB = $(VENDORPREFIX)/share/perl5
+INSTALLVENDORLIB = /usr/share/perl5
 DESTINSTALLVENDORLIB = $(DESTDIR)$(INSTALLVENDORLIB)
-INSTALLARCHLIB = $(PERLPREFIX)/lib/perl/5.10
+INSTALLARCHLIB = /usr/lib/perl/5.10
 DESTINSTALLARCHLIB = $(DESTDIR)$(INSTALLARCHLIB)
-INSTALLSITEARCH = $(SITEPREFIX)/lib/perl/5.10.0
+INSTALLSITEARCH = /usr/local/lib/perl/5.10.1
 DESTINSTALLSITEARCH = $(DESTDIR)$(INSTALLSITEARCH)
-INSTALLVENDORARCH = $(VENDORPREFIX)/lib/perl5
+INSTALLVENDORARCH = /usr/lib/perl5
 DESTINSTALLVENDORARCH = $(DESTDIR)$(INSTALLVENDORARCH)
-INSTALLBIN = $(PERLPREFIX)/bin
+INSTALLBIN = /usr/bin
 DESTINSTALLBIN = $(DESTDIR)$(INSTALLBIN)
-INSTALLSITEBIN = $(SITEPREFIX)/bin
+INSTALLSITEBIN = /usr/local/bin
 DESTINSTALLSITEBIN = $(DESTDIR)$(INSTALLSITEBIN)
-INSTALLVENDORBIN = $(VENDORPREFIX)/bin
+INSTALLVENDORBIN = /usr/bin
 DESTINSTALLVENDORBIN = $(DESTDIR)$(INSTALLVENDORBIN)
-INSTALLSCRIPT = $(PERLPREFIX)/bin
+INSTALLSCRIPT = /usr/bin
 DESTINSTALLSCRIPT = $(DESTDIR)$(INSTALLSCRIPT)
-INSTALLSITESCRIPT = $(SITEPREFIX)/bin
+INSTALLSITESCRIPT = /usr/local/bin
 DESTINSTALLSITESCRIPT = $(DESTDIR)$(INSTALLSITESCRIPT)
-INSTALLVENDORSCRIPT = $(VENDORPREFIX)/bin
+INSTALLVENDORSCRIPT = /usr/bin
 DESTINSTALLVENDORSCRIPT = $(DESTDIR)$(INSTALLVENDORSCRIPT)
-INSTALLMAN1DIR = $(PERLPREFIX)/share/man/man1
+INSTALLMAN1DIR = /usr/share/man/man1
 DESTINSTALLMAN1DIR = $(DESTDIR)$(INSTALLMAN1DIR)
-INSTALLSITEMAN1DIR = $(SITEPREFIX)/man/man1
+INSTALLSITEMAN1DIR = /usr/local/man/man1
 DESTINSTALLSITEMAN1DIR = $(DESTDIR)$(INSTALLSITEMAN1DIR)
-INSTALLVENDORMAN1DIR = $(VENDORPREFIX)/share/man/man1
+INSTALLVENDORMAN1DIR = /usr/share/man/man1
 DESTINSTALLVENDORMAN1DIR = $(DESTDIR)$(INSTALLVENDORMAN1DIR)
-INSTALLMAN3DIR = $(PERLPREFIX)/share/man/man3
+INSTALLMAN3DIR = /usr/share/man/man3
 DESTINSTALLMAN3DIR = $(DESTDIR)$(INSTALLMAN3DIR)
-INSTALLSITEMAN3DIR = $(SITEPREFIX)/man/man3
+INSTALLSITEMAN3DIR = /usr/local/man/man3
 DESTINSTALLSITEMAN3DIR = $(DESTDIR)$(INSTALLSITEMAN3DIR)
-INSTALLVENDORMAN3DIR = $(VENDORPREFIX)/share/man/man3
+INSTALLVENDORMAN3DIR = /usr/share/man/man3
 DESTINSTALLVENDORMAN3DIR = $(DESTDIR)$(INSTALLVENDORMAN3DIR)
 PERL_LIB = /usr/share/perl/5.10
 PERL_ARCHLIB = /usr/lib/perl/5.10
@@ -130,12 +131,13 @@ PERLRUNINST = $(PERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)" 
 FULLPERLRUNINST = $(FULLPERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)"
 ABSPERLRUNINST = $(ABSPERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)"
 PERL_CORE = 0
+PERM_DIR = 755
 PERM_RW = 644
 PERM_RWX = 755
 
-MAKEMAKER   = /usr/share/perl/5.10/ExtUtils/MakeMaker.pm
-MM_VERSION  = 6.42
-MM_REVISION = 41145
+MAKEMAKER   = /usr/local/share/perl/5.10.1/ExtUtils/MakeMaker.pm
+MM_VERSION  = 6.56
+MM_REVISION = 65600
 
 # FULLEXT = Pathname for extension directory (eg Foo/Bar/Oracle).
 # BASEEXT = Basename part of FULLEXT. May be just equal FULLEXT. (eg Oracle)
@@ -182,7 +184,6 @@ PERL_ARCHIVE_AFTER = 
 
 
 TO_INST_PM = XPath_with_as_XML_clean.pm \
-       lib/HTML/TreeBuilder/.XPath.pm.swp \
        lib/HTML/TreeBuilder/XPath.pm \
        lib/HTML/TreeBuilder/XPath.pm.orig
 
@@ -190,14 +191,12 @@ PM_TO_BLIB = XPath_with_as_XML_clean.pm \ 
        $(INST_LIB)/HTML/TreeBuilder/XPath_with_as_XML_clean.pm \
        lib/HTML/TreeBuilder/XPath.pm \
        blib/lib/HTML/TreeBuilder/XPath.pm \
-       lib/HTML/TreeBuilder/.XPath.pm.swp \
-       blib/lib/HTML/TreeBuilder/.XPath.pm.swp \
        lib/HTML/TreeBuilder/XPath.pm.orig \
        blib/lib/HTML/TreeBuilder/XPath.pm.orig
 
 
 # --- MakeMaker platform_constants section:
-MM_Unix_VERSION = 6.42
+MM_Unix_VERSION = 6.56
 PERL_MALLOC_DEF = -DPERL_EXTMALLOC_DEF -Dmalloc=Perl_malloc -Dfree=Perl_mfree -Drealloc=Perl_realloc -Dcalloc=Perl_calloc
 
 
@@ -215,7 +214,7 @@ SHELL = /bin/sh 
 CHMOD = chmod
 CP = cp
 MV = mv
-NOOP = $(SHELL) -c true
+NOOP = $(TRUE)
 NOECHO = @
 RM_F = rm -f
 RM_RF = rm -rf
@@ -223,20 +222,22 @@ TEST_F = test -f 
 TOUCH = touch
 UMASK_NULL = umask 0
 DEV_NULL = > /dev/null 2>&1
-MKPATH = $(ABSPERLRUN) "-MExtUtils::Command" -e mkpath
-EQUALIZE_TIMESTAMP = $(ABSPERLRUN) "-MExtUtils::Command" -e eqtime
+MKPATH = $(ABSPERLRUN) -MExtUtils::Command -e 'mkpath' --
+EQUALIZE_TIMESTAMP = $(ABSPERLRUN) -MExtUtils::Command -e 'eqtime' --
+FALSE = false
+TRUE = true
 ECHO = echo
 ECHO_N = echo -n
 UNINST = 0
 VERBINST = 0
-MOD_INSTALL = $(ABSPERLRUN) -MExtUtils::Install -e 'install({@ARGV}, '\''$(VERBINST)'\'', 0, '\''$(UNINST)'\'');' --
-DOC_INSTALL = $(ABSPERLRUN) "-MExtUtils::Command::MM" -e perllocal_install
-UNINSTALL = $(ABSPERLRUN) "-MExtUtils::Command::MM" -e uninstall
-WARN_IF_OLD_PACKLIST = $(ABSPERLRUN) "-MExtUtils::Command::MM" -e warn_if_old_packlist
+MOD_INSTALL = $(ABSPERLRUN) -MExtUtils::Install -e 'install([ from_to => {@ARGV}, verbose => '\''$(VERBINST)'\'', uninstall_shadows => '\''$(UNINST)'\'', dir_mode => '\''$(PERM_DIR)'\'' ]);' --
+DOC_INSTALL = $(ABSPERLRUN) -MExtUtils::Command::MM -e 'perllocal_install' --
+UNINSTALL = $(ABSPERLRUN) -MExtUtils::Command::MM -e 'uninstall' --
+WARN_IF_OLD_PACKLIST = $(ABSPERLRUN) -MExtUtils::Command::MM -e 'warn_if_old_packlist' --
 MACROSTART = 
 MACROEND = 
 USEMAKEFILE = -f
-FIXIN = $(PERLRUN) "-MExtUtils::MY" -e "MY->fixin(shift)"
+FIXIN = $(ABSPERLRUN) -MExtUtils::MY -e 'MY->fixin(shift)' --
 
 
 # --- MakeMaker makemakerdflt section:
@@ -260,7 +261,7 @@ RCS_LABEL = rcs -Nv$(VERSION_SYM): -q 
 DIST_CP = best
 DIST_DEFAULT = tardist
 DISTNAME = HTML-TreeBuilder-XPath
-DISTVNAME = HTML-TreeBuilder-XPath-0.11
+DISTVNAME = HTML-TreeBuilder-XPath-0.12
 
 
 # --- MakeMaker macro section:
@@ -332,42 +333,42 @@ blibdirs.ts : blibdirs 
 
 $(INST_LIBDIR)$(DFSEP).exists :: Makefile.PL
        $(NOECHO) $(MKPATH) $(INST_LIBDIR)
-       $(NOECHO) $(CHMOD) 755 $(INST_LIBDIR)
+       $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_LIBDIR)
        $(NOECHO) $(TOUCH) $(INST_LIBDIR)$(DFSEP).exists
 
 $(INST_ARCHLIB)$(DFSEP).exists :: Makefile.PL
        $(NOECHO) $(MKPATH) $(INST_ARCHLIB)
-       $(NOECHO) $(CHMOD) 755 $(INST_ARCHLIB)
+       $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_ARCHLIB)
        $(NOECHO) $(TOUCH) $(INST_ARCHLIB)$(DFSEP).exists
 
 $(INST_AUTODIR)$(DFSEP).exists :: Makefile.PL
        $(NOECHO) $(MKPATH) $(INST_AUTODIR)
-       $(NOECHO) $(CHMOD) 755 $(INST_AUTODIR)
+       $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_AUTODIR)
        $(NOECHO) $(TOUCH) $(INST_AUTODIR)$(DFSEP).exists
 
 $(INST_ARCHAUTODIR)$(DFSEP).exists :: Makefile.PL
        $(NOECHO) $(MKPATH) $(INST_ARCHAUTODIR)
-       $(NOECHO) $(CHMOD) 755 $(INST_ARCHAUTODIR)
+       $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_ARCHAUTODIR)
        $(NOECHO) $(TOUCH) $(INST_ARCHAUTODIR)$(DFSEP).exists
 
 $(INST_BIN)$(DFSEP).exists :: Makefile.PL
        $(NOECHO) $(MKPATH) $(INST_BIN)
-       $(NOECHO) $(CHMOD) 755 $(INST_BIN)
+       $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_BIN)
        $(NOECHO) $(TOUCH) $(INST_BIN)$(DFSEP).exists
 
 $(INST_SCRIPT)$(DFSEP).exists :: Makefile.PL
        $(NOECHO) $(MKPATH) $(INST_SCRIPT)
-       $(NOECHO) $(CHMOD) 755 $(INST_SCRIPT)
+       $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_SCRIPT)
        $(NOECHO) $(TOUCH) $(INST_SCRIPT)$(DFSEP).exists
 
 $(INST_MAN1DIR)$(DFSEP).exists :: Makefile.PL
        $(NOECHO) $(MKPATH) $(INST_MAN1DIR)
-       $(NOECHO) $(CHMOD) 755 $(INST_MAN1DIR)
+       $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_MAN1DIR)
        $(NOECHO) $(TOUCH) $(INST_MAN1DIR)$(DFSEP).exists
 
 $(INST_MAN3DIR)$(DFSEP).exists :: Makefile.PL
        $(NOECHO) $(MKPATH) $(INST_MAN3DIR)
-       $(NOECHO) $(CHMOD) 755 $(INST_MAN3DIR)
+       $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_MAN3DIR)
        $(NOECHO) $(TOUCH) $(INST_MAN3DIR)$(DFSEP).exists
 
 
@@ -415,7 +416,7 @@ POD2MAN = $(POD2MAN_EXE) 
 manifypods : pure_all  \
        XPath_with_as_XML_clean.pm \
        lib/HTML/TreeBuilder/XPath.pm
-       $(NOECHO) $(POD2MAN) --section=$(MAN3EXT) --perm_rw=$(PERM_RW) \
+       $(NOECHO) $(POD2MAN) --section=3 --perm_rw=$(PERM_RW) \
          XPath_with_as_XML_clean.pm $(INST_MAN3DIR)/HTML::TreeBuilder::XPath_with_as_XML_clean.$(MAN3EXT) \
          lib/HTML/TreeBuilder/XPath.pm $(INST_MAN3DIR)/HTML::TreeBuilder::XPath.$(MAN3EXT) 
 
@@ -482,21 +483,29 @@ realclean purge ::  clean realclean_subdirs 
 metafile : create_distdir
        $(NOECHO) $(ECHO) Generating META.yml
        $(NOECHO) $(ECHO) '--- #YAML:1.0' > META_new.yml
-       $(NOECHO) $(ECHO) 'name:                HTML-TreeBuilder-XPath' >> META_new.yml
-       $(NOECHO) $(ECHO) 'version:             0.11' >> META_new.yml
-       $(NOECHO) $(ECHO) 'abstract:            add XPath support to HTML::TreeBuilder' >> META_new.yml
-       $(NOECHO) $(ECHO) 'license:             perl' >> META_new.yml
-       $(NOECHO) $(ECHO) 'author:              ' >> META_new.yml
+       $(NOECHO) $(ECHO) 'name:               HTML-TreeBuilder-XPath' >> META_new.yml
+       $(NOECHO) $(ECHO) 'version:            0.12' >> META_new.yml
+       $(NOECHO) $(ECHO) 'abstract:           add XPath support to HTML::TreeBuilder' >> META_new.yml
+       $(NOECHO) $(ECHO) 'author:' >> META_new.yml
        $(NOECHO) $(ECHO) '    - Michel Rodriguez <mrodrigu@localdomain>' >> META_new.yml
-       $(NOECHO) $(ECHO) 'generated_by:        ExtUtils::MakeMaker version 6.42' >> META_new.yml
-       $(NOECHO) $(ECHO) 'distribution_type:   module' >> META_new.yml
-       $(NOECHO) $(ECHO) 'requires:     ' >> META_new.yml
-       $(NOECHO) $(ECHO) '    HTML::TreeBuilder:             0' >> META_new.yml
-       $(NOECHO) $(ECHO) '    List::Util:                    0' >> META_new.yml
-       $(NOECHO) $(ECHO) '    XML::XPathEngine:              0.12' >> META_new.yml
+       $(NOECHO) $(ECHO) 'license:            perl' >> META_new.yml
+       $(NOECHO) $(ECHO) 'distribution_type:  module' >> META_new.yml
+       $(NOECHO) $(ECHO) 'configure_requires:' >> META_new.yml
+       $(NOECHO) $(ECHO) '    ExtUtils::MakeMaker:  0' >> META_new.yml
+       $(NOECHO) $(ECHO) 'build_requires:' >> META_new.yml
+       $(NOECHO) $(ECHO) '    ExtUtils::MakeMaker:  0' >> META_new.yml
+       $(NOECHO) $(ECHO) 'requires:' >> META_new.yml
+       $(NOECHO) $(ECHO) '    HTML::TreeBuilder:  0' >> META_new.yml
+       $(NOECHO) $(ECHO) '    List::Util:         0' >> META_new.yml
+       $(NOECHO) $(ECHO) '    XML::XPathEngine:   0.12' >> META_new.yml
+       $(NOECHO) $(ECHO) 'no_index:' >> META_new.yml
+       $(NOECHO) $(ECHO) '    directory:' >> META_new.yml
+       $(NOECHO) $(ECHO) '        - t' >> META_new.yml
+       $(NOECHO) $(ECHO) '        - inc' >> META_new.yml
+       $(NOECHO) $(ECHO) 'generated_by:       ExtUtils::MakeMaker version 6.56' >> META_new.yml
        $(NOECHO) $(ECHO) 'meta-spec:' >> META_new.yml
-       $(NOECHO) $(ECHO) '    url:     http://module-build.sourceforge.net/META-spec-v1.3.html' >> META_new.yml
-       $(NOECHO) $(ECHO) '    version: 1.3' >> META_new.yml
+       $(NOECHO) $(ECHO) '    url:      http://module-build.sourceforge.net/META-spec-v1.4.html' >> META_new.yml
+       $(NOECHO) $(ECHO) '    version:  1.4' >> META_new.yml
        -$(NOECHO) $(MV) META_new.yml $(DISTVNAME)/META.yml
 
 
@@ -630,7 +639,9 @@ doc__install : doc_site_install 
        $(NOECHO) $(ECHO) INSTALLDIRS not defined, defaulting to INSTALLDIRS=site
 
 pure_perl_install :: all
-       $(NOECHO) umask 022; $(MOD_INSTALL) \
+       $(NOECHO) $(MOD_INSTALL) \
+               read $(PERL_ARCHLIB)/auto/$(FULLEXT)/.packlist \
+               write $(DESTINSTALLARCHLIB)/auto/$(FULLEXT)/.packlist \
                $(INST_LIB) $(DESTINSTALLPRIVLIB) \
                $(INST_ARCHLIB) $(DESTINSTALLARCHLIB) \
                $(INST_BIN) $(DESTINSTALLBIN) \
@@ -642,7 +653,7 @@ pure_perl_install :: all 
 
 
 pure_site_install :: all
-       $(NOECHO) umask 02; $(MOD_INSTALL) \
+       $(NOECHO) $(MOD_INSTALL) \
                read $(SITEARCHEXP)/auto/$(FULLEXT)/.packlist \
                write $(DESTINSTALLSITEARCH)/auto/$(FULLEXT)/.packlist \
                $(INST_LIB) $(DESTINSTALLSITELIB) \
@@ -655,7 +666,9 @@ pure_site_install :: all 
                $(PERL_ARCHLIB)/auto/$(FULLEXT)
 
 pure_vendor_install :: all
-       $(NOECHO) umask 022; $(MOD_INSTALL) \
+       $(NOECHO) $(MOD_INSTALL) \
+               read $(VENDORARCHEXP)/auto/$(FULLEXT)/.packlist \
+               write $(DESTINSTALLVENDORARCH)/auto/$(FULLEXT)/.packlist \
                $(INST_LIB) $(DESTINSTALLVENDORLIB) \
                $(INST_ARCHLIB) $(DESTINSTALLVENDORARCH) \
                $(INST_BIN) $(DESTINSTALLVENDORBIN) \
@@ -664,31 +677,50 @@ pure_vendor_install :: all 
                $(INST_MAN3DIR) $(DESTINSTALLVENDORMAN3DIR)
 
 doc_perl_install :: all
+       $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod
+       -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB)
+       -$(NOECHO) $(DOC_INSTALL) \
+               "Module" "$(NAME)" \
+               "installed into" "$(INSTALLPRIVLIB)" \
+               LINKTYPE "$(LINKTYPE)" \
+               VERSION "$(VERSION)" \
+               EXE_FILES "$(EXE_FILES)" \
+               >> $(DESTINSTALLARCHLIB)/perllocal.pod
 
 doc_site_install :: all
-       $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLSITEARCH)/perllocal.pod
-       -$(NOECHO) umask 02; $(MKPATH) $(DESTINSTALLSITEARCH)
-       -$(NOECHO) umask 02; $(DOC_INSTALL) \
+       $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod
+       -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB)
+       -$(NOECHO) $(DOC_INSTALL) \
                "Module" "$(NAME)" \
                "installed into" "$(INSTALLSITELIB)" \
                LINKTYPE "$(LINKTYPE)" \
                VERSION "$(VERSION)" \
                EXE_FILES "$(EXE_FILES)" \
-               >> $(DESTINSTALLSITEARCH)/perllocal.pod
+               >> $(DESTINSTALLARCHLIB)/perllocal.pod
 
 doc_vendor_install :: all
+       $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod
+       -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB)
+       -$(NOECHO) $(DOC_INSTALL) \
+               "Module" "$(NAME)" \
+               "installed into" "$(INSTALLVENDORLIB)" \
+               LINKTYPE "$(LINKTYPE)" \
+               VERSION "$(VERSION)" \
+               EXE_FILES "$(EXE_FILES)" \
+               >> $(DESTINSTALLARCHLIB)/perllocal.pod
 
 
 uninstall :: uninstall_from_$(INSTALLDIRS)dirs
        $(NOECHO) $(NOOP)
 
 uninstall_from_perldirs ::
+       $(NOECHO) $(UNINSTALL) $(PERL_ARCHLIB)/auto/$(FULLEXT)/.packlist
 
 uninstall_from_sitedirs ::
        $(NOECHO) $(UNINSTALL) $(SITEARCHEXP)/auto/$(FULLEXT)/.packlist
 
 uninstall_from_vendordirs ::
-
+       $(NOECHO) $(UNINSTALL) $(VENDORARCHEXP)/auto/$(FULLEXT)/.packlist
 
 
 # --- MakeMaker force section:
@@ -712,7 +744,7 @@ $(FIRST_MAKEFILE) : Makefile.PL $(CONFIGDEP) 
        $(PERLRUN) Makefile.PL 
        $(NOECHO) $(ECHO) "==> Your Makefile has been rebuilt. <=="
        $(NOECHO) $(ECHO) "==> Please rerun the $(MAKE) command.  <=="
-       false
+       $(FALSE)
 
 
 
@@ -764,16 +796,14 @@ testdb_static :: testdb_dynamic 
 # --- MakeMaker ppd section:
 # Creates a PPD (Perl Package Description) for a binary distribution.
 ppd :
-       $(NOECHO) $(ECHO) '<SOFTPKG NAME="$(DISTNAME)" VERSION="0,11,0,0">' > $(DISTNAME).ppd
-       $(NOECHO) $(ECHO) '    <TITLE>$(DISTNAME)</TITLE>' >> $(DISTNAME).ppd
+       $(NOECHO) $(ECHO) '<SOFTPKG NAME="$(DISTNAME)" VERSION="0.12">' > $(DISTNAME).ppd
        $(NOECHO) $(ECHO) '    <ABSTRACT>add XPath support to HTML::TreeBuilder</ABSTRACT>' >> $(DISTNAME).ppd
        $(NOECHO) $(ECHO) '    <AUTHOR>Michel Rodriguez <mrodrigu@localdomain></AUTHOR>' >> $(DISTNAME).ppd
        $(NOECHO) $(ECHO) '    <IMPLEMENTATION>' >> $(DISTNAME).ppd
-       $(NOECHO) $(ECHO) '        <DEPENDENCY NAME="HTML-TreeBuilder" VERSION="0,0,0,0" />' >> $(DISTNAME).ppd
-       $(NOECHO) $(ECHO) '        <DEPENDENCY NAME="List-Util" VERSION="0,0,0,0" />' >> $(DISTNAME).ppd
-       $(NOECHO) $(ECHO) '        <DEPENDENCY NAME="XML-XPathEngine" VERSION="0,12,0,0" />' >> $(DISTNAME).ppd
-       $(NOECHO) $(ECHO) '        <OS NAME="$(OSNAME)" />' >> $(DISTNAME).ppd
-       $(NOECHO) $(ECHO) '        <ARCHITECTURE NAME="i486-linux-gnu-thread-multi-5.1" />' >> $(DISTNAME).ppd
+       $(NOECHO) $(ECHO) '        <REQUIRE NAME="HTML::TreeBuilder" />' >> $(DISTNAME).ppd
+       $(NOECHO) $(ECHO) '        <REQUIRE NAME="List::Util" />' >> $(DISTNAME).ppd
+       $(NOECHO) $(ECHO) '        <REQUIRE NAME="XML::XPathEngine" VERSION="0.12" />' >> $(DISTNAME).ppd
+       $(NOECHO) $(ECHO) '        <ARCHITECTURE NAME="i486-linux-gnu-thread-multi-5.10" />' >> $(DISTNAME).ppd
        $(NOECHO) $(ECHO) '        <CODEBASE HREF="" />' >> $(DISTNAME).ppd
        $(NOECHO) $(ECHO) '    </IMPLEMENTATION>' >> $(DISTNAME).ppd
        $(NOECHO) $(ECHO) '</SOFTPKG>' >> $(DISTNAME).ppd
 
 # --- MakeMaker pm_to_blib section:
 
-pm_to_blib : $(TO_INST_PM)
-       $(NOECHO) $(ABSPERLRUN) -MExtUtils::Install -e 'pm_to_blib({@ARGV}, '\''$(INST_LIB)/auto'\'', '\''$(PM_FILTER)'\'')' -- \
+pm_to_blib : $(FIRST_MAKEFILE) $(TO_INST_PM)
+       $(NOECHO) $(ABSPERLRUN) -MExtUtils::Install -e 'pm_to_blib({@ARGV}, '\''$(INST_LIB)/auto'\'', q[$(PM_FILTER)], '\''$(PERM_DIR)'\'')' -- \
          XPath_with_as_XML_clean.pm $(INST_LIB)/HTML/TreeBuilder/XPath_with_as_XML_clean.pm \
          lib/HTML/TreeBuilder/XPath.pm blib/lib/HTML/TreeBuilder/XPath.pm \
-         lib/HTML/TreeBuilder/.XPath.pm.swp blib/lib/HTML/TreeBuilder/.XPath.pm.swp \
          lib/HTML/TreeBuilder/XPath.pm.orig blib/lib/HTML/TreeBuilder/XPath.pm.orig 
        $(NOECHO) $(TOUCH) pm_to_blib
 
 
 # This Makefile is for the HTML::TreeBuilder::XPath extension to perl.
 #
 # It was generated automatically by MakeMaker version
-# 6.42 (Revision: 41145) from the contents of
+# 6.56 (Revision: 65600) from the contents of
 # Makefile.PL. Don't edit this file, edit Makefile.PL instead.
 #
 #       ANY CHANGES MADE HERE WILL BE LOST!
 #
 #   MakeMaker ARGV: ()
 #
+
 #   MakeMaker Parameters:
 
 #     ABSTRACT_FROM => q[lib/HTML/TreeBuilder/XPath.pm]
 #     AUTHOR => q[Michel Rodriguez <mrodrigu@localdomain>]
+#     BUILD_REQUIRES => {  }
 #     LICENSE => q[perl]
 #     NAME => q[HTML::TreeBuilder::XPath]
 #     PREREQ_PM => { List::Util=>q[0], XML::XPathEngine=>q[0.12], HTML::TreeBuilder=>q[0] }
 
 # --- MakeMaker const_config section:
 
-# These definitions are from config.sh (via /usr/lib/perl/5.10/Config.pm)
-
-# They may have been overridden via Makefile.PL or on the command line
+# These definitions are from config.sh (via /usr/lib/perl/5.10/Config.pm).
+# They may have been overridden via Makefile.PL or on the command line.
 AR = ar
 CC = cc
 CCCDLFLAGS = -fPIC
@@ -34,16 +35,16 @@ DLSRC = dl_dlopen.xs 
 EXE_EXT = 
 FULL_AR = /usr/bin/ar
 LD = cc
-LDDLFLAGS = -shared -O2 -g -L/usr/local/lib
-LDFLAGS =  -L/usr/local/lib
-LIBC = /lib/libc-2.8.90.so
+LDDLFLAGS = -shared -O2 -g -L/usr/local/lib -fstack-protector
+LDFLAGS =  -fstack-protector -L/usr/local/lib
+LIBC = /lib/libc-2.11.1.so
 LIB_EXT = .a
 OBJ_EXT = .o
 OSNAME = linux
-OSVERS = 2.6.24-16-server
+OSVERS = 2.6.24-27-server
 RANLIB = :
-SITELIBEXP = /usr/local/share/perl/5.10.0
-SITEARCHEXP = /usr/local/lib/perl/5.10.0
+SITELIBEXP = /usr/local/share/perl/5.10.1
+SITEARCHEXP = /usr/local/lib/perl/5.10.1
 SO = so
 VENDORARCHEXP = /usr/lib/perl5
 VENDORLIBEXP = /usr/share/perl5
@@ -55,11 +56,11 @@ DIRFILESEP = / 
 DFSEP = $(DIRFILESEP)
 NAME = HTML::TreeBuilder::XPath
 NAME_SYM = HTML_TreeBuilder_XPath
-VERSION = 0.10
+VERSION = 0.12
 VERSION_MACRO = VERSION
-VERSION_SYM = 0_10
+VERSION_SYM = 0_12
 DEFINE_VERSION = -D$(VERSION_MACRO)=\"$(VERSION)\"
-XS_VERSION = 0.10
+XS_VERSION = 0.12
 XS_VERSION_MACRO = XS_VERSION
 XS_DEFINE_VERSION = -D$(XS_VERSION_MACRO)=\"$(XS_VERSION)\"
 INST_ARCHLIB = blib/arch
@@ -72,45 +73,45 @@ MAN1EXT = 1p 
 MAN3EXT = 3pm
 INSTALLDIRS = site
 DESTDIR = 
-PREFIX = /usr
-PERLPREFIX = $(PREFIX)
-SITEPREFIX = $(PREFIX)/local
-VENDORPREFIX = $(PREFIX)
-INSTALLPRIVLIB = $(PERLPREFIX)/share/perl/5.10
+PREFIX = $(SITEPREFIX)
+PERLPREFIX = /usr
+SITEPREFIX = /usr/local
+VENDORPREFIX = /usr
+INSTALLPRIVLIB = /usr/share/perl/5.10
 DESTINSTALLPRIVLIB = $(DESTDIR)$(INSTALLPRIVLIB)
-INSTALLSITELIB = $(SITEPREFIX)/share/perl/5.10.0
+INSTALLSITELIB = /usr/local/share/perl/5.10.1
 DESTINSTALLSITELIB = $(DESTDIR)$(INSTALLSITELIB)
-INSTALLVENDORLIB = $(VENDORPREFIX)/share/perl5
+INSTALLVENDORLIB = /usr/share/perl5
 DESTINSTALLVENDORLIB = $(DESTDIR)$(INSTALLVENDORLIB)
-INSTALLARCHLIB = $(PERLPREFIX)/lib/perl/5.10
+INSTALLARCHLIB = /usr/lib/perl/5.10
 DESTINSTALLARCHLIB = $(DESTDIR)$(INSTALLARCHLIB)
-INSTALLSITEARCH = $(SITEPREFIX)/lib/perl/5.10.0
+INSTALLSITEARCH = /usr/local/lib/perl/5.10.1
 DESTINSTALLSITEARCH = $(DESTDIR)$(INSTALLSITEARCH)
-INSTALLVENDORARCH = $(VENDORPREFIX)/lib/perl5
+INSTALLVENDORARCH = /usr/lib/perl5
 DESTINSTALLVENDORARCH = $(DESTDIR)$(INSTALLVENDORARCH)
-INSTALLBIN = $(PERLPREFIX)/bin
+INSTALLBIN = /usr/bin
 DESTINSTALLBIN = $(DESTDIR)$(INSTALLBIN)
-INSTALLSITEBIN = $(SITEPREFIX)/bin
+INSTALLSITEBIN = /usr/local/bin
 DESTINSTALLSITEBIN = $(DESTDIR)$(INSTALLSITEBIN)
-INSTALLVENDORBIN = $(VENDORPREFIX)/bin
+INSTALLVENDORBIN = /usr/bin
 DESTINSTALLVENDORBIN = $(DESTDIR)$(INSTALLVENDORBIN)
-INSTALLSCRIPT = $(PERLPREFIX)/bin
+INSTALLSCRIPT = /usr/bin
 DESTINSTALLSCRIPT = $(DESTDIR)$(INSTALLSCRIPT)
-INSTALLSITESCRIPT = $(SITEPREFIX)/bin
+INSTALLSITESCRIPT = /usr/local/bin
 DESTINSTALLSITESCRIPT = $(DESTDIR)$(INSTALLSITESCRIPT)
-INSTALLVENDORSCRIPT = $(VENDORPREFIX)/bin
+INSTALLVENDORSCRIPT = /usr/bin
 DESTINSTALLVENDORSCRIPT = $(DESTDIR)$(INSTALLVENDORSCRIPT)
-INSTALLMAN1DIR = $(PERLPREFIX)/share/man/man1
+INSTALLMAN1DIR = /usr/share/man/man1
 DESTINSTALLMAN1DIR = $(DESTDIR)$(INSTALLMAN1DIR)
-INSTALLSITEMAN1DIR = $(SITEPREFIX)/man/man1
+INSTALLSITEMAN1DIR = /usr/local/man/man1
 DESTINSTALLSITEMAN1DIR = $(DESTDIR)$(INSTALLSITEMAN1DIR)
-INSTALLVENDORMAN1DIR = $(VENDORPREFIX)/share/man/man1
+INSTALLVENDORMAN1DIR = /usr/share/man/man1
 DESTINSTALLVENDORMAN1DIR = $(DESTDIR)$(INSTALLVENDORMAN1DIR)
-INSTALLMAN3DIR = $(PERLPREFIX)/share/man/man3
+INSTALLMAN3DIR = /usr/share/man/man3
 DESTINSTALLMAN3DIR = $(DESTDIR)$(INSTALLMAN3DIR)
-INSTALLSITEMAN3DIR = $(SITEPREFIX)/man/man3
+INSTALLSITEMAN3DIR = /usr/local/man/man3
 DESTINSTALLSITEMAN3DIR = $(DESTDIR)$(INSTALLSITEMAN3DIR)
-INSTALLVENDORMAN3DIR = $(VENDORPREFIX)/share/man/man3
+INSTALLVENDORMAN3DIR = /usr/share/man/man3
 DESTINSTALLVENDORMAN3DIR = $(DESTDIR)$(INSTALLVENDORMAN3DIR)
 PERL_LIB = /usr/share/perl/5.10
 PERL_ARCHLIB = /usr/lib/perl/5.10
@@ -130,12 +131,13 @@ PERLRUNINST = $(PERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)" 
 FULLPERLRUNINST = $(FULLPERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)"
 ABSPERLRUNINST = $(ABSPERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)"
 PERL_CORE = 0
+PERM_DIR = 755
 PERM_RW = 644
 PERM_RWX = 755
 
-MAKEMAKER   = /usr/share/perl/5.10/ExtUtils/MakeMaker.pm
-MM_VERSION  = 6.42
-MM_REVISION = 41145
+MAKEMAKER   = /usr/local/share/perl/5.10.1/ExtUtils/MakeMaker.pm
+MM_VERSION  = 6.56
+MM_REVISION = 65600
 
 # FULLEXT = Pathname for extension directory (eg Foo/Bar/Oracle).
 # BASEEXT = Basename part of FULLEXT. May be just equal FULLEXT. (eg Oracle)
@@ -182,16 +184,19 @@ PERL_ARCHIVE_AFTER = 
 
 
 TO_INST_PM = XPath_with_as_XML_clean.pm \
-       lib/HTML/TreeBuilder/XPath.pm
+       lib/HTML/TreeBuilder/XPath.pm \
+       lib/HTML/TreeBuilder/XPath.pm.orig
 
 PM_TO_BLIB = XPath_with_as_XML_clean.pm \
        $(INST_LIB)/HTML/TreeBuilder/XPath_with_as_XML_clean.pm \
        lib/HTML/TreeBuilder/XPath.pm \
-       blib/lib/HTML/TreeBuilder/XPath.pm
+       blib/lib/HTML/TreeBuilder/XPath.pm \
+       lib/HTML/TreeBuilder/XPath.pm.orig \
+       blib/lib/HTML/TreeBuilder/XPath.pm.orig
 
 
 # --- MakeMaker platform_constants section:
-MM_Unix_VERSION = 6.42
+MM_Unix_VERSION = 6.56
 PERL_MALLOC_DEF = -DPERL_EXTMALLOC_DEF -Dmalloc=Perl_malloc -Dfree=Perl_mfree -Drealloc=Perl_realloc -Dcalloc=Perl_calloc
 
 
@@ -209,7 +214,7 @@ SHELL = /bin/sh 
 CHMOD = chmod
 CP = cp
 MV = mv
-NOOP = $(SHELL) -c true
+NOOP = $(TRUE)
 NOECHO = @
 RM_F = rm -f
 RM_RF = rm -rf
@@ -217,20 +222,22 @@ TEST_F = test -f 
 TOUCH = touch
 UMASK_NULL = umask 0
 DEV_NULL = > /dev/null 2>&1
-MKPATH = $(ABSPERLRUN) "-MExtUtils::Command" -e mkpath
-EQUALIZE_TIMESTAMP = $(ABSPERLRUN) "-MExtUtils::Command" -e eqtime
+MKPATH = $(ABSPERLRUN) -MExtUtils::Command -e 'mkpath' --
+EQUALIZE_TIMESTAMP = $(ABSPERLRUN) -MExtUtils::Command -e 'eqtime' --
+FALSE = false
+TRUE = true
 ECHO = echo
 ECHO_N = echo -n
 UNINST = 0
 VERBINST = 0
-MOD_INSTALL = $(ABSPERLRUN) -MExtUtils::Install -e 'install({@ARGV}, '\''$(VERBINST)'\'', 0, '\''$(UNINST)'\'');' --
-DOC_INSTALL = $(ABSPERLRUN) "-MExtUtils::Command::MM" -e perllocal_install
-UNINSTALL = $(ABSPERLRUN) "-MExtUtils::Command::MM" -e uninstall
-WARN_IF_OLD_PACKLIST = $(ABSPERLRUN) "-MExtUtils::Command::MM" -e warn_if_old_packlist
+MOD_INSTALL = $(ABSPERLRUN) -MExtUtils::Install -e 'install([ from_to => {@ARGV}, verbose => '\''$(VERBINST)'\'', uninstall_shadows => '\''$(UNINST)'\'', dir_mode => '\''$(PERM_DIR)'\'' ]);' --
+DOC_INSTALL = $(ABSPERLRUN) -MExtUtils::Command::MM -e 'perllocal_install' --
+UNINSTALL = $(ABSPERLRUN) -MExtUtils::Command::MM -e 'uninstall' --
+WARN_IF_OLD_PACKLIST = $(ABSPERLRUN) -MExtUtils::Command::MM -e 'warn_if_old_packlist' --
 MACROSTART = 
 MACROEND = 
 USEMAKEFILE = -f
-FIXIN = $(PERLRUN) "-MExtUtils::MY" -e "MY->fixin(shift)"
+FIXIN = $(ABSPERLRUN) -MExtUtils::MY -e 'MY->fixin(shift)' --
 
 
 # --- MakeMaker makemakerdflt section:
@@ -254,7 +261,7 @@ RCS_LABEL = rcs -Nv$(VERSION_SYM): -q 
 DIST_CP = best
 DIST_DEFAULT = tardist
 DISTNAME = HTML-TreeBuilder-XPath
-DISTVNAME = HTML-TreeBuilder-XPath-0.10
+DISTVNAME = HTML-TreeBuilder-XPath-0.12
 
 
 # --- MakeMaker macro section:
@@ -326,42 +333,42 @@ blibdirs.ts : blibdirs 
 
 $(INST_LIBDIR)$(DFSEP).exists :: Makefile.PL
        $(NOECHO) $(MKPATH) $(INST_LIBDIR)
-       $(NOECHO) $(CHMOD) 755 $(INST_LIBDIR)
+       $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_LIBDIR)
        $(NOECHO) $(TOUCH) $(INST_LIBDIR)$(DFSEP).exists
 
 $(INST_ARCHLIB)$(DFSEP).exists :: Makefile.PL
        $(NOECHO) $(MKPATH) $(INST_ARCHLIB)
-       $(NOECHO) $(CHMOD) 755 $(INST_ARCHLIB)
+       $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_ARCHLIB)
        $(NOECHO) $(TOUCH) $(INST_ARCHLIB)$(DFSEP).exists
 
 $(INST_AUTODIR)$(DFSEP).exists :: Makefile.PL
        $(NOECHO) $(MKPATH) $(INST_AUTODIR)
-       $(NOECHO) $(CHMOD) 755 $(INST_AUTODIR)
+       $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_AUTODIR)
        $(NOECHO) $(TOUCH) $(INST_AUTODIR)$(DFSEP).exists
 
 $(INST_ARCHAUTODIR)$(DFSEP).exists :: Makefile.PL
        $(NOECHO) $(MKPATH) $(INST_ARCHAUTODIR)
-       $(NOECHO) $(CHMOD) 755 $(INST_ARCHAUTODIR)
+       $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_ARCHAUTODIR)
        $(NOECHO) $(TOUCH) $(INST_ARCHAUTODIR)$(DFSEP).exists
 
 $(INST_BIN)$(DFSEP).exists :: Makefile.PL
        $(NOECHO) $(MKPATH) $(INST_BIN)
-       $(NOECHO) $(CHMOD) 755 $(INST_BIN)
+       $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_BIN)
        $(NOECHO) $(TOUCH) $(INST_BIN)$(DFSEP).exists
 
 $(INST_SCRIPT)$(DFSEP).exists :: Makefile.PL
        $(NOECHO) $(MKPATH) $(INST_SCRIPT)
-       $(NOECHO) $(CHMOD) 755 $(INST_SCRIPT)
+       $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_SCRIPT)
        $(NOECHO) $(TOUCH) $(INST_SCRIPT)$(DFSEP).exists
 
 $(INST_MAN1DIR)$(DFSEP).exists :: Makefile.PL
        $(NOECHO) $(MKPATH) $(INST_MAN1DIR)
-       $(NOECHO) $(CHMOD) 755 $(INST_MAN1DIR)
+       $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_MAN1DIR)
        $(NOECHO) $(TOUCH) $(INST_MAN1DIR)$(DFSEP).exists
 
 $(INST_MAN3DIR)$(DFSEP).exists :: Makefile.PL
        $(NOECHO) $(MKPATH) $(INST_MAN3DIR)
-       $(NOECHO) $(CHMOD) 755 $(INST_MAN3DIR)
+       $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_MAN3DIR)
        $(NOECHO) $(TOUCH) $(INST_MAN3DIR)$(DFSEP).exists
 
 
@@ -409,7 +416,7 @@ POD2MAN = $(POD2MAN_EXE) 
 manifypods : pure_all  \
        XPath_with_as_XML_clean.pm \
        lib/HTML/TreeBuilder/XPath.pm
-       $(NOECHO) $(POD2MAN) --section=$(MAN3EXT) --perm_rw=$(PERM_RW) \
+       $(NOECHO) $(POD2MAN) --section=3 --perm_rw=$(PERM_RW) \
          XPath_with_as_XML_clean.pm $(INST_MAN3DIR)/HTML::TreeBuilder::XPath_with_as_XML_clean.$(MAN3EXT) \
          lib/HTML/TreeBuilder/XPath.pm $(INST_MAN3DIR)/HTML::TreeBuilder::XPath.$(MAN3EXT) 
 
@@ -476,21 +483,29 @@ realclean purge ::  clean realclean_subdirs 
 metafile : create_distdir
        $(NOECHO) $(ECHO) Generating META.yml
        $(NOECHO) $(ECHO) '--- #YAML:1.0' > META_new.yml
-       $(NOECHO) $(ECHO) 'name:                HTML-TreeBuilder-XPath' >> META_new.yml
-       $(NOECHO) $(ECHO) 'version:             0.10' >> META_new.yml
-       $(NOECHO) $(ECHO) 'abstract:            add XPath support to HTML::TreeBuilder' >> META_new.yml
-       $(NOECHO) $(ECHO) 'license:             perl' >> META_new.yml
-       $(NOECHO) $(ECHO) 'author:              ' >> META_new.yml
+       $(NOECHO) $(ECHO) 'name:               HTML-TreeBuilder-XPath' >> META_new.yml
+       $(NOECHO) $(ECHO) 'version:            0.12' >> META_new.yml
+       $(NOECHO) $(ECHO) 'abstract:           add XPath support to HTML::TreeBuilder' >> META_new.yml
+       $(NOECHO) $(ECHO) 'author:' >> META_new.yml
        $(NOECHO) $(ECHO) '    - Michel Rodriguez <mrodrigu@localdomain>' >> META_new.yml
-       $(NOECHO) $(ECHO) 'generated_by:        ExtUtils::MakeMaker version 6.42' >> META_new.yml
-       $(NOECHO) $(ECHO) 'distribution_type:   module' >> META_new.yml
-       $(NOECHO) $(ECHO) 'requires:     ' >> META_new.yml
-       $(NOECHO) $(ECHO) '    HTML::TreeBuilder:             0' >> META_new.yml
-       $(NOECHO) $(ECHO) '    List::Util:                    0' >> META_new.yml
-       $(NOECHO) $(ECHO) '    XML::XPathEngine:              0.12' >> META_new.yml
+       $(NOECHO) $(ECHO) 'license:            perl' >> META_new.yml
+       $(NOECHO) $(ECHO) 'distribution_type:  module' >> META_new.yml
+       $(NOECHO) $(ECHO) 'configure_requires:' >> META_new.yml
+       $(NOECHO) $(ECHO) '    ExtUtils::MakeMaker:  0' >> META_new.yml
+       $(NOECHO) $(ECHO) 'build_requires:' >> META_new.yml
+       $(NOECHO) $(ECHO) '    ExtUtils::MakeMaker:  0' >> META_new.yml
+       $(NOECHO) $(ECHO) 'requires:' >> META_new.yml
+       $(NOECHO) $(ECHO) '    HTML::TreeBuilder:  0' >> META_new.yml
+       $(NOECHO) $(ECHO) '    List::Util:         0' >> META_new.yml
+       $(NOECHO) $(ECHO) '    XML::XPathEngine:   0.12' >> META_new.yml
+       $(NOECHO) $(ECHO) 'no_index:' >> META_new.yml
+       $(NOECHO) $(ECHO) '    directory:' >> META_new.yml
+       $(NOECHO) $(ECHO) '        - t' >> META_new.yml
+       $(NOECHO) $(ECHO) '        - inc' >> META_new.yml
+       $(NOECHO) $(ECHO) 'generated_by:       ExtUtils::MakeMaker version 6.56' >> META_new.yml
        $(NOECHO) $(ECHO) 'meta-spec:' >> META_new.yml
-       $(NOECHO) $(ECHO) '    url:     http://module-build.sourceforge.net/META-spec-v1.3.html' >> META_new.yml
-       $(NOECHO) $(ECHO) '    version: 1.3' >> META_new.yml
+       $(NOECHO) $(ECHO) '    url:      http://module-build.sourceforge.net/META-spec-v1.4.html' >> META_new.yml
+       $(NOECHO) $(ECHO) '    version:  1.4' >> META_new.yml
        -$(NOECHO) $(MV) META_new.yml $(DISTVNAME)/META.yml
 
 
@@ -624,7 +639,9 @@ doc__install : doc_site_install 
        $(NOECHO) $(ECHO) INSTALLDIRS not defined, defaulting to INSTALLDIRS=site
 
 pure_perl_install :: all
-       $(NOECHO) umask 022; $(MOD_INSTALL) \
+       $(NOECHO) $(MOD_INSTALL) \
+               read $(PERL_ARCHLIB)/auto/$(FULLEXT)/.packlist \
+               write $(DESTINSTALLARCHLIB)/auto/$(FULLEXT)/.packlist \
                $(INST_LIB) $(DESTINSTALLPRIVLIB) \
                $(INST_ARCHLIB) $(DESTINSTALLARCHLIB) \
                $(INST_BIN) $(DESTINSTALLBIN) \
@@ -636,7 +653,7 @@ pure_perl_install :: all 
 
 
 pure_site_install :: all
-       $(NOECHO) umask 02; $(MOD_INSTALL) \
+       $(NOECHO) $(MOD_INSTALL) \
                read $(SITEARCHEXP)/auto/$(FULLEXT)/.packlist \
                write $(DESTINSTALLSITEARCH)/auto/$(FULLEXT)/.packlist \
                $(INST_LIB) $(DESTINSTALLSITELIB) \
@@ -649,7 +666,9 @@ pure_site_install :: all 
                $(PERL_ARCHLIB)/auto/$(FULLEXT)
 
 pure_vendor_install :: all
-       $(NOECHO) umask 022; $(MOD_INSTALL) \
+       $(NOECHO) $(MOD_INSTALL) \
+               read $(VENDORARCHEXP)/auto/$(FULLEXT)/.packlist \
+               write $(DESTINSTALLVENDORARCH)/auto/$(FULLEXT)/.packlist \
                $(INST_LIB) $(DESTINSTALLVENDORLIB) \
                $(INST_ARCHLIB) $(DESTINSTALLVENDORARCH) \
                $(INST_BIN) $(DESTINSTALLVENDORBIN) \
@@ -658,31 +677,50 @@ pure_vendor_install :: all 
                $(INST_MAN3DIR) $(DESTINSTALLVENDORMAN3DIR)
 
 doc_perl_install :: all
+       $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod
+       -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB)
+       -$(NOECHO) $(DOC_INSTALL) \
+               "Module" "$(NAME)" \
+               "installed into" "$(INSTALLPRIVLIB)" \
+               LINKTYPE "$(LINKTYPE)" \
+               VERSION "$(VERSION)" \
+               EXE_FILES "$(EXE_FILES)" \
+               >> $(DESTINSTALLARCHLIB)/perllocal.pod
 
 doc_site_install :: all
-       $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLSITEARCH)/perllocal.pod
-       -$(NOECHO) umask 02; $(MKPATH) $(DESTINSTALLSITEARCH)
-       -$(NOECHO) umask 02; $(DOC_INSTALL) \
+       $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod
+       -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB)
+       -$(NOECHO) $(DOC_INSTALL) \
                "Module" "$(NAME)" \
                "installed into" "$(INSTALLSITELIB)" \
                LINKTYPE "$(LINKTYPE)" \
                VERSION "$(VERSION)" \
                EXE_FILES "$(EXE_FILES)" \
-               >> $(DESTINSTALLSITEARCH)/perllocal.pod
+               >> $(DESTINSTALLARCHLIB)/perllocal.pod
 
 doc_vendor_install :: all
+       $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod
+       -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB)
+       -$(NOECHO) $(DOC_INSTALL) \
+               "Module" "$(NAME)" \
+               "installed into" "$(INSTALLVENDORLIB)" \
+               LINKTYPE "$(LINKTYPE)" \
+               VERSION "$(VERSION)" \
+               EXE_FILES "$(EXE_FILES)" \
+               >> $(DESTINSTALLARCHLIB)/perllocal.pod
 
 
 uninstall :: uninstall_from_$(INSTALLDIRS)dirs
        $(NOECHO) $(NOOP)
 
 uninstall_from_perldirs ::
+       $(NOECHO) $(UNINSTALL) $(PERL_ARCHLIB)/auto/$(FULLEXT)/.packlist
 
 uninstall_from_sitedirs ::
        $(NOECHO) $(UNINSTALL) $(SITEARCHEXP)/auto/$(FULLEXT)/.packlist
 
 uninstall_from_vendordirs ::
-
+       $(NOECHO) $(UNINSTALL) $(VENDORARCHEXP)/auto/$(FULLEXT)/.packlist
 
 
 # --- MakeMaker force section:
@@ -706,7 +744,7 @@ $(FIRST_MAKEFILE) : Makefile.PL $(CONFIGDEP) 
        $(PERLRUN) Makefile.PL 
        $(NOECHO) $(ECHO) "==> Your Makefile has been rebuilt. <=="
        $(NOECHO) $(ECHO) "==> Please rerun the $(MAKE) command.  <=="
-       false
+       $(FALSE)
 
 
 
@@ -758,16 +796,14 @@ testdb_static :: testdb_dynamic 
 # --- MakeMaker ppd section:
 # Creates a PPD (Perl Package Description) for a binary distribution.
 ppd :
-       $(NOECHO) $(ECHO) '<SOFTPKG NAME="$(DISTNAME)" VERSION="0,10,0,0">' > $(DISTNAME).ppd
-       $(NOECHO) $(ECHO) '    <TITLE>$(DISTNAME)</TITLE>' >> $(DISTNAME).ppd
+       $(NOECHO) $(ECHO) '<SOFTPKG NAME="$(DISTNAME)" VERSION="0.12">' > $(DISTNAME).ppd
        $(NOECHO) $(ECHO) '    <ABSTRACT>add XPath support to HTML::TreeBuilder</ABSTRACT>' >> $(DISTNAME).ppd
        $(NOECHO) $(ECHO) '    <AUTHOR>Michel Rodriguez <mrodrigu@localdomain></AUTHOR>' >> $(DISTNAME).ppd
        $(NOECHO) $(ECHO) '    <IMPLEMENTATION>' >> $(DISTNAME).ppd
-       $(NOECHO) $(ECHO) '        <DEPENDENCY NAME="HTML-TreeBuilder" VERSION="0,0,0,0" />' >> $(DISTNAME).ppd
-       $(NOECHO) $(ECHO) '        <DEPENDENCY NAME="List-Util" VERSION="0,0,0,0" />' >> $(DISTNAME).ppd
-       $(NOECHO) $(ECHO) '        <DEPENDENCY NAME="XML-XPathEngine" VERSION="0,12,0,0" />' >> $(DISTNAME).ppd
-       $(NOECHO) $(ECHO) '        <OS NAME="$(OSNAME)" />' >> $(DISTNAME).ppd
-       $(NOECHO) $(ECHO) '        <ARCHITECTURE NAME="i486-linux-gnu-thread-multi-5.1" />' >> $(DISTNAME).ppd
+       $(NOECHO) $(ECHO) '        <REQUIRE NAME="HTML::TreeBuilder" />' >> $(DISTNAME).ppd
+       $(NOECHO) $(ECHO) '        <REQUIRE NAME="List::Util" />' >> $(DISTNAME).ppd
+       $(NOECHO) $(ECHO) '        <REQUIRE NAME="XML::XPathEngine" VERSION="0.12" />' >> $(DISTNAME).ppd
+       $(NOECHO) $(ECHO) '        <ARCHITECTURE NAME="i486-linux-gnu-thread-multi-5.10" />' >> $(DISTNAME).ppd
        $(NOECHO) $(ECHO) '        <CODEBASE HREF="" />' >> $(DISTNAME).ppd
        $(NOECHO) $(ECHO) '    </IMPLEMENTATION>' >> $(DISTNAME).ppd
        $(NOECHO) $(ECHO) '</SOFTPKG>' >> $(DISTNAME).ppd
 
 # --- MakeMaker pm_to_blib section:
 
-pm_to_blib : $(TO_INST_PM)
-       $(NOECHO) $(ABSPERLRUN) -MExtUtils::Install -e 'pm_to_blib({@ARGV}, '\''$(INST_LIB)/auto'\'', '\''$(PM_FILTER)'\'')' -- \
+pm_to_blib : $(FIRST_MAKEFILE) $(TO_INST_PM)
+       $(NOECHO) $(ABSPERLRUN) -MExtUtils::Install -e 'pm_to_blib({@ARGV}, '\''$(INST_LIB)/auto'\'', q[$(PM_FILTER)], '\''$(PERM_DIR)'\'')' -- \
          XPath_with_as_XML_clean.pm $(INST_LIB)/HTML/TreeBuilder/XPath_with_as_XML_clean.pm \
-         lib/HTML/TreeBuilder/XPath.pm blib/lib/HTML/TreeBuilder/XPath.pm 
+         lib/HTML/TreeBuilder/XPath.pm blib/lib/HTML/TreeBuilder/XPath.pm \
+         lib/HTML/TreeBuilder/XPath.pm.orig blib/lib/HTML/TreeBuilder/XPath.pm.orig 
        $(NOECHO) $(TOUCH) pm_to_blib
 
 
 
@@ -7,7 +7,7 @@ use warnings; 
 
 use vars qw($VERSION);
 
-$VERSION = '0.11';
+$VERSION = '0.12';
 
 my %CHAR2DEFAULT_ENT= ( '&' => '&', '<' => '<', '>' => '>', '"' => '"');
 my %NUM2DEFAULT_ENT= ( '38' => 'amp', '60' => 'lt', '62' => 'gt', '"' => '"');
@@ -131,6 +131,7 @@ sub getParentNode 
     return $elt->{_parent} || bless { _root => $elt }, 'HTML::TreeBuilder::XPath::Root';
   }
 sub getName             { return shift->tag;   }
+sub getLocalName        { (my $name= $_[0]->tag) =~ s{^.*:}{}; $name; }
 sub getNextSibling      { my( $elt)= @_; 
                           my $parent= $elt->{_parent} || return undef;
                           return  $parent->_child_as_object( scalar $elt->right, ($elt->{_rank} || 0) + 1);
 
-.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.07)
+.\" Automatically generated by Pod::Man 2.22 (Pod::Simple 3.07)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
 .rm #[ #] #H #V #F C
 .\" ========================================================================
 .\"
-.IX Title "HTML::TreeBuilder::XPath 3pm"
-.TH HTML::TreeBuilder::XPath 3pm "2009-05-07" "perl v5.10.0" "User Contributed Perl Documentation"
+.IX Title "HTML::TreeBuilder::XPath 3"
+.TH HTML::TreeBuilder::XPath 3 "2010-09-29" "perl v5.10.1" "User Contributed Perl Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
 
-.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.07)
+.\" Automatically generated by Pod::Man 2.22 (Pod::Simple 3.07)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
 .rm #[ #] #H #V #F C
 .\" ========================================================================
 .\"
-.IX Title "XPath_with_as_XML_clean 3pm"
-.TH XPath_with_as_XML_clean 3pm "2008-02-05" "perl v5.10.0" "User Contributed Perl Documentation"
+.IX Title "XPath_with_as_XML_clean 3"
+.TH XPath_with_as_XML_clean 3 "2010-09-15" "perl v5.10.1" "User Contributed Perl Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
 
--- /dev/null
+<!DOCTYPE html
+     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<!--
+This file was generated by Devel::Cover Version 0.71
+Devel::Cover is copyright 2001-2010, Paul Johnson (
[email protected])
+Devel::Cover is free. It is licensed under the same terms as Perl itself.
+The latest version of Devel::Cover should be available from my homepage:
+http://www.pjcj.net
+-->
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta>
+    <meta http-equiv="Content-Language" content="en-us"></meta>
+    <link rel="stylesheet" type="text/css" href="cover.css"></link>
+    <link rel="stylesheet" type="text/css" href="cover.css"></link>
+    <title>Branch Coverage: blib/lib/HTML/TreeBuilder/XPath.pm</title>
+</head>
+<body>
+<h1>Branch Coverage</h1>
+<table>
+<tr><td class="h" align="right">File:</td><td align="left">blib/lib/HTML/TreeBuilder/XPath.pm</td></tr>
+<tr><td class="h" align="right">Coverage:</td><td align="left" class="c0">47.5%</td></tr>
+</table>
+<div><br/></div>
+<table>
+<tr><th>line</th><th>%</th><th colspan="2">coverage</th><th>branch</th></tr>
+<tr><td class="h"><a id="L29">29</a></td><td class="c3">100</td><td class="c3">T</td><td class="c3">F</td><td class="s">wantarray ? :</td></tr>
+<tr><td class="h"><a id="L47">47</a></td><td class="c0">50</td><td class="c0">T</td><td class="c3">F</td><td class="s">if ($b->isa('HTML::TreeBuilder::XPath::Root'))</td></tr>
+<tr><td class="h"><a id="L50">50</a></td><td class="c0">50</td><td class="c0">T</td><td class="c3">F</td><td class="s">if $a == $b</td></tr>
+<tr><td class="h"><a id="L51">51</a></td><td class="c0">50</td><td class="c0">T</td><td class="c3">F</td><td class="s">if $a->is_inside($b)</td></tr>
+<tr><td class="h"><a id="L52">52</a></td><td class="c0">50</td><td class="c0">T</td><td class="c3">F</td><td class="s">if $b->is_inside($a)</td></tr>
+<tr><td class="h"><a id="L59">59</a></td><td class="c0">50</td><td class="c0">T</td><td class="c3">F</td><td class="s">unless ($a_pile[-1] == $b_pile[-1])</td></tr>
+<tr><td class="h"><a id="L74">74</a></td><td class="c0">50</td><td class="c3">T</td><td class="c0">F</td><td class="s">if (defined $$a_anc{'_rank'} and defined $$b_anc{'_rank'}) { }</td></tr>
+<tr><td class="h"><a id="L82">82</a></td><td class="c0">0</td><td class="c0">T</td><td class="c0">F</td><td class="s">if $a_prev == $b_anc</td></tr>
+<tr><td class="h"><a id="L84">84</a></td><td class="c0">0</td><td class="c0">T</td><td class="c0">F</td><td class="s">if $a_next == $b_anc</td></tr>
+<tr><td class="h"><a id="L86">86</a></td><td class="c0">0</td><td class="c0">T</td><td class="c0">F</td><td class="s">if $b_prev == $a_next</td></tr>
+<tr><td class="h"><a id="L88">88</a></td><td class="c0">0</td><td class="c0">T</td><td class="c0">F</td><td class="s">if $b_next == $a_prev</td></tr>
+<tr><td class="h"><a id="L141">141</a></td><td class="c3">100</td><td class="c3">T</td><td class="c3">F</td><td class="s">unless $$elt{'_rank'}</td></tr>
+<tr><td class="h"><a id="L144">144</a></td><td class="c3">100</td><td class="c3">T</td><td class="c3">F</td><td class="s">ref $_[0] && !($_[0]{'_tag'} =~ /^~/) ? :</td></tr>
+<tr><td class="h"><a id="L145">145</a></td><td class="c0">50</td><td class="c0">T</td><td class="c3">F</td><td class="s">ref $_[0] && $_[0]{'_tag'} eq '~comment' ? :</td></tr>
+<tr><td class="h"><a id="L146">146</a></td><td class="c0">0</td><td class="c0">T</td><td class="c0">F</td><td class="s">ref $_[0] && $_[0]{'_tag'} eq '~pi' ? :</td></tr>
+<tr><td class="h"><a id="L147">147</a></td><td class="c0">50</td><td class="c3">T</td><td class="c0">F</td><td class="s">ref $_[0] ? :</td></tr>
+<tr><td class="h"><a id="L151">151</a></td><td class="c0">50</td><td class="c0">T</td><td class="c3">F</td><td class="s">if ($elt->isCommentNode)</td></tr>
+<tr><td class="h"><a id="L159">159</a></td><td class="c3">100</td><td class="c3">T</td><td class="c3">F</td><td class="s">wantarray ? :</td></tr>
+<tr><td class="h"><a id="L165">165</a></td><td class="c0">50</td><td class="c3">T</td><td class="c0">F</td><td class="s">if (@content) { }</td></tr>
+<tr><td class="h"><a id="L173">173</a></td><td class="c3">100</td><td class="c3">T</td><td class="c3">F</td><td class="s">if (@content) { }</td></tr>
+<tr><td class="h"><a id="L189">189</a></td><td class="c0">50</td><td class="c0">T</td><td class="c3">F</td><td class="s">wantarray ? :</td></tr>
+<tr><td class="h"><a id="L195">195</a></td><td class="c0">50</td><td class="c0">T</td><td class="c3">F</td><td class="s">if ($elt->isCommentNode)</td></tr>
+<tr><td class="h"><a id="L204">204</a></td><td class="c3">100</td><td class="c3">T</td><td class="c3">F</td><td class="s">unless defined $elt_or_text</td></tr>
+<tr><td class="h"><a id="L205">205</a></td><td class="c3">100</td><td class="c3">T</td><td class="c3">F</td><td class="s">if (not ref $elt_or_text)</td></tr>
+<tr><td class="h"><a id="L211">211</a></td><td class="c0">50</td><td class="c0">T</td><td class="c3">F</td><td class="s">if (ref $rank)</td></tr>
+<tr><td class="h"><a id="L224">224</a></td><td class="c0">50</td><td class="c0">T</td><td class="c3">F</td><td class="s">if ($name eq '~literal')</td></tr>
+<tr><td class="h"><a id="L226">226</a></td><td class="c0">50</td><td class="c0">T</td><td class="c3">F</td><td class="s">if ($name eq '~declaration')</td></tr>
+<tr><td class="h"><a id="L227">227</a></td><td class="c0">50</td><td class="c0">T</td><td class="c3">F</td><td class="s">if ($name eq '~pi')</td></tr>
+<tr><td class="h"><a id="L228">228</a></td><td class="c0">50</td><td class="c0">T</td><td class="c3">F</td><td class="s">if ($name eq '~comment')</td></tr>
+<tr><td class="h"><a id="L234">234</a></td><td class="c0">50</td><td class="c0">T</td><td class="c3">F</td><td class="s">if ($HTML::Tagset::isCDATA_Parent{$lc_name}) { }</td></tr>
+<tr><td class="h"><a id="L236">236</a></td><td class="c0">0</td><td class="c0">T</td><td class="c0">F</td><td class="s">if (ref $content eq 'ARRAY' or $content->isa('ARRAY')) { }</td></tr>
+<tr><td class="h"><a id="L244">244</a></td><td class="c3">100</td><td class="c3">T</td><td class="c3">F</td><td class="s">if (ref $child) { }</td></tr>
+<tr><td class="h"><a id="L248">248</a></td><td class="c0">50</td><td class="c3">T</td><td class="c0">F</td><td class="s">unless $HTML::Tagset::emptyElement{$lc_name}</td></tr>
+<tr><td class="h"><a id="L272">272</a></td><td class="c0">50</td><td class="c0">T</td><td class="c3">F</td><td class="s">if ($name eq '~literal')</td></tr>
+<tr><td class="h"><a id="L273">273</a></td><td class="c0">50</td><td class="c0">T</td><td class="c3">F</td><td class="s">if ($name eq '~declaration')</td></tr>
+<tr><td class="h"><a id="L276">276</a></td><td class="c0">50</td><td class="c0">T</td><td class="c3">F</td><td class="s">if ($name eq '~pi')</td></tr>
+<tr><td class="h"><a id="L277">277</a></td><td class="c0">50</td><td class="c0">T</td><td class="c3">F</td><td class="s">if ($name eq '~comment')</td></tr>
+<tr><td class="h"><a id="L281">281</a></td><td class="c0">50</td><td class="c3">T</td><td class="c0">F</td><td class="s">if (not $phrase_name{$lc_name})</td></tr>
+<tr><td class="h"><a id="L282">282</a></td><td class="c3">100</td><td class="c3">T</td><td class="c3">F</td><td class="s">if ($$opt{'indent_level'})</td></tr>
+<tr><td class="h"><a id="L288">288</a></td><td class="c0">50</td><td class="c0">T</td><td class="c3">F</td><td class="s">if ($HTML::Tagset::isCDATA_Parent{$lc_name}) { }</td></tr>
+<tr><td class="h"><a id="L290">290</a></td><td class="c0">0</td><td class="c0">T</td><td class="c0">F</td><td class="s">if (ref $content and ref $content eq 'ARRAY' || $content->isa('ARRAY'))</td></tr>
+<tr><td class="h"><a id="L298">298</a></td><td class="c3">100</td><td class="c3">T</td><td class="c3">F</td><td class="s">if (ref $child) { }</td></tr>
+<tr><td class="h"><a id="L304">304</a></td><td class="c3">100</td><td class="c3">T</td><td class="c3">F</td><td class="s">if ($extra_newline{$lc_name} and $content ne '')</td></tr>
+<tr><td class="h"><a id="L305">305</a></td><td class="c0">50</td><td class="c3">T</td><td class="c0">F</td><td class="s">unless $HTML::Tagset::emptyElement{$lc_name}</td></tr>
+<tr><td class="h"><a id="L306">306</a></td><td class="c3">100</td><td class="c3">T</td><td class="c3">F</td><td class="s">if not $$opt{'indent_level'}</td></tr>
+<tr><td class="h"><a id="L317">317</a></td><td class="c0">50</td><td class="c3">T</td><td class="c0">F</td><td class="s">if not length $att_name or $att_name =~ /^_/ or $att_name eq '/'</td></tr>
+<tr><td class="h"><a id="L321">321</a></td><td class="c0">50</td><td class="c0">T</td><td class="c3">F</td><td class="s">$HTML::Tagset::emptyElement{lc $name} ? :</td></tr>
+<tr><td class="h"><a id="L328">328</a></td><td class="c0">0</td><td class="c0">T</td><td class="c0">F</td><td class="s">if ($name =~ /^\d/)</td></tr>
+<tr><td class="h"><a id="L348">348</a></td><td class="c0">0</td><td class="c0">T</td><td class="c0">F</td><td class="s">if ($$opt{'indented'})</td></tr>
+<tr><td class="h"><a id="L351">351</a></td><td class="c0">0</td><td class="c0">T</td><td class="c0">F</td><td class="s">if (not defined $indent_level)</td></tr>
+<tr><td class="h"><a id="L352">352</a></td><td class="c0">0</td><td class="c0">T</td><td class="c0">F</td><td class="s">if ($HTML::Tagset::isKnown{lc $name} and not $HTML::Tagset::isPhraseMarkup{lc $name} and $indent_level > 0)</td></tr>
+<tr><td class="h"><a id="L354">354</a></td><td class="c0">0</td><td class="c0">T</td><td class="c0">F</td><td class="s">if ($extra_newline{lc $name})</td></tr>
+<tr><td class="h"><a id="L358">358</a></td><td class="c0">0</td><td class="c0">T</td><td class="c0">F</td><td class="s">if ($indent_level == 0)</td></tr>
+<tr><td class="h"><a id="L387">387</a></td><td class="c0">0</td><td class="c0">T</td><td class="c0">F</td><td class="s">if ($$opt{'force_escape_cdata'} or $text =~ /[<&]/)</td></tr>
+<tr><td class="h"><a id="L404">404</a></td><td class="c0">50</td><td class="c0">T</td><td class="c3">F</td><td class="s">wantarray ? :</td></tr>
+<tr><td class="h"><a id="L410">410</a></td><td class="c0">50</td><td class="c0">T</td><td class="c3">F</td><td class="s">if ($$node{'_parent'} and $$node{'_parent'}{'_tag'} eq 'script') { }</td></tr>
+<tr><td class="h"><a id="L426">426</a></td><td class="c0">50</td><td class="c0">T</td><td class="c3">F</td><td class="s">$rank ? :</td></tr>
+<tr><td class="h"><a id="L436">436</a></td><td class="c0">50</td><td class="c0">T</td><td class="c3">F</td><td class="s">defined $next_sibling ? :</td></tr>
+<tr><td class="h"><a id="L475">475</a></td><td class="c0">0</td><td class="c0">T</td><td class="c0">F</td><td class="s">unless $rank</td></tr>
+<tr><td class="h"><a id="L519">519</a></td><td class="c3">100</td><td class="c3">T</td><td class="c3">F</td><td class="s">wantarray ? :</td></tr>
+<tr><td class="h"><a id="L530">530</a></td><td class="c0">0</td><td class="c0">T</td><td class="c0">F</td><td class="s">$_[1]->isa(' HTML::TreeBuilder::XPath::Root') ? :</td></tr>
+</table>
+</body>
+</html>
 
--- /dev/null
+<!DOCTYPE html
+     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<!--
+This file was generated by Devel::Cover Version 0.71
+Devel::Cover is copyright 2001-2010, Paul Johnson (
[email protected])
+Devel::Cover is free. It is licensed under the same terms as Perl itself.
+The latest version of Devel::Cover should be available from my homepage:
+http://www.pjcj.net
+-->
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta>
+    <meta http-equiv="Content-Language" content="en-us"></meta>
+    <link rel="stylesheet" type="text/css" href="cover.css"></link>
+    <link rel="stylesheet" type="text/css" href="cover.css"></link>
+    <title>Condition Coverage: blib/lib/HTML/TreeBuilder/XPath.pm</title>
+</head>
+<body>
+<h1>Condition Coverage</h1>
+<table>
+<tr><td class="h" align="right">File:</td><td align="left">blib/lib/HTML/TreeBuilder/XPath.pm</td></tr>
+<tr><td class="h" align="right">Coverage:</td><td align="left" class="c0">29.3%</td></tr>
+</table>
+<div><br/></div>
+<table>
+<tr><th>line</th><th>%</th><th>coverage</th><th>condition</th></tr>
+<tr><td class="h"><a id="L74">74</a></td><td class="c0">33</td><td><div><table><tr><th>A</th><th>B</th><th>dec</th></tr><tr align="center"><td class="c0">0</td><td class="c0">X</td><td class="c0">0</td></tr><tr align="center"><td class="c0">1</td><td class="c0">0</td><td class="c0">0</td></tr><tr align="center"><td class="c3">1</td><td class="c3">1</td><td class="c3">1</td></tr></table></div></td><td class="s">defined $$a_anc{'_rank'} and defined $$b_anc{'_rank'}</td></tr>
+<tr><td class="h"><a id="L81">81</a></td><td class="c0">0</td><td><div><table><tr><th>A</th><th>dec</th></tr><tr align="center"><td class="c0">0</td><td class="c0">0</td></tr><tr align="center"><td class="c0">1</td><td class="c0">1</td></tr></table></div></td><td class="s">$a_prev->getPreviousSibling || return(-1)</td></tr>
+<tr><td class="h"><a id="L83">83</a></td><td class="c0">0</td><td><div><table><tr><th>A</th><th>dec</th></tr><tr align="center"><td class="c0">0</td><td class="c0">0</td></tr><tr align="center"><td class="c0">1</td><td class="c0">1</td></tr></table></div></td><td class="s">$a_next->getNextSibling || return(1)</td></tr>
+<tr><td class="h"><a id="L85">85</a></td><td class="c0">0</td><td><div><table><tr><th>A</th><th>dec</th></tr><tr align="center"><td class="c0">0</td><td class="c0">0</td></tr><tr align="center"><td class="c0">1</td><td class="c0">1</td></tr></table></div></td><td class="s">$b_prev->getPreviousSibling || return(1)</td></tr>
+<tr><td class="h"><a id="L87">87</a></td><td class="c0">0</td><td><div><table><tr><th>A</th><th>dec</th></tr><tr align="center"><td class="c0">0</td><td class="c0">0</td></tr><tr align="center"><td class="c0">1</td><td class="c0">1</td></tr></table></div></td><td class="s">$b_next->getNextSibling || return(-1)</td></tr>
+<tr><td class="h"><a id="L106">106</a></td><td class="c0">50</td><td><div><table><tr><th>A</th><th>dec</th></tr><tr align="center"><td class="c0">0</td><td class="c0">0</td></tr><tr align="center"><td class="c3">1</td><td class="c3">1</td></tr></table></div></td><td class="s">$xp ||= 'XML::XPathEngine'->new</td></tr>
+<tr><td class="h"><a id="L131">131</a></td><td class="c3">100</td><td><div><table><tr><th>A</th><th>dec</th></tr><tr align="center"><td class="c3">0</td><td class="c3">0</td></tr><tr align="center"><td class="c3">1</td><td class="c3">1</td></tr></table></div></td><td class="s">$$elt{'_parent'} || bless({'_root', $elt}, 'HTML::TreeBuilder::XPath::Root')</td></tr>
+<tr><td class="h"><a id="L136">136</a></td><td class="c3">100</td><td><div><table><tr><th>A</th><th>dec</th></tr><tr align="center"><td class="c3">0</td><td class="c3">0</td></tr><tr align="center"><td class="c3">1</td><td class="c3">1</td></tr></table></div></td><td class="s">$$elt{'_parent'} || return(undef)</td></tr>
+<tr><td class="h"><a id="L137">137</a></td><td class="c0">0</td><td><div><table><tr><th>A</th><th>dec</th></tr><tr align="center"><td class="c0">0</td><td class="c0">0</td></tr><tr align="center"><td class="c0">1</td><td class="c0">1</td></tr></table></div></td><td class="s">$$elt{'_rank'} || 0</td></tr>
+<tr><td class="h"><a id="L140">140</a></td><td class="c3">100</td><td><div><table><tr><th>A</th><th>dec</th></tr><tr align="center"><td class="c3">0</td><td class="c3">0</td></tr><tr align="center"><td class="c3">1</td><td class="c3">1</td></tr></table></div></td><td class="s">$$elt{'_parent'} || return(undef)</td></tr>
+<tr><td class="h"><a id="L144">144</a></td><td class="c0">67</td><td><div><table><tr><th>A</th><th>B</th><th>dec</th></tr><tr align="center"><td class="c0">0</td><td class="c0">X</td><td class="c0">0</td></tr><tr align="center"><td class="c3">1</td><td class="c3">0</td><td class="c3">0</td></tr><tr align="center"><td class="c3">1</td><td class="c3">1</td><td class="c3">1</td></tr></table></div></td><td class="s">ref $_[0] && !($_[0]{'_tag'} =~ /^~/)</td></tr>
+<tr><td class="h"><a id="L145">145</a></td><td class="c0">33</td><td><div><table><tr><th>A</th><th>B</th><th>dec</th></tr><tr align="center"><td class="c0">0</td><td class="c0">X</td><td class="c0">0</td></tr><tr align="center"><td class="c3">1</td><td class="c3">0</td><td class="c3">0</td></tr><tr align="center"><td class="c0">1</td><td class="c0">1</td><td class="c0">1</td></tr></table></div></td><td class="s">ref $_[0] && $_[0]{'_tag'} eq '~comment'</td></tr>
+<tr><td class="h"><a id="L146">146</a></td><td class="c0">0</td><td><div><table><tr><th>A</th><th>B</th><th>dec</th></tr><tr align="center"><td class="c0">0</td><td class="c0">X</td><td class="c0">0</td></tr><tr align="center"><td class="c0">1</td><td class="c0">0</td><td class="c0">0</td></tr><tr align="center"><td class="c0">1</td><td class="c0">1</td><td class="c0">1</td></tr></table></div></td><td class="s">ref $_[0] && $_[0]{'_tag'} eq '~pi'</td></tr>
+<tr><td class="h"><a id="L235">235</a></td><td class="c0">0</td><td><div><table><tr><th>A</th><th>dec</th></tr><tr align="center"><td class="c0">0</td><td class="c0">0</td></tr><tr align="center"><td class="c0">1</td><td class="c0">1</td></tr></table></div></td><td class="s">$$node{'_content'} || ''</td></tr>
+<tr><td class="h"><a id="L236">236</a></td><td class="c0">0</td><td><div><table><tr><th>A</th><th>B</th><th>dec</th></tr><tr align="center"><td class="c0">0</td><td class="c0">0</td><td class="c0">0</td></tr><tr align="center"><td class="c0">0</td><td class="c0">1</td><td class="c0">1</td></tr><tr align="center"><td class="c0">1</td><td class="c0">X</td><td class="c0">1</td></tr></table></div></td><td class="s">ref $content eq 'ARRAY' or $content->isa('ARRAY')</td></tr>
+<tr><td class="h"><a id="L281">281</a></td><td class="c3">100</td><td><div><table><tr><th>A</th><th>dec</th></tr><tr align="center"><td class="c3">0</td><td class="c3">0</td></tr><tr align="center"><td class="c3">1</td><td class="c3">1</td></tr></table></div></td><td class="s">$$opt{'indent_level'} || 0</td></tr>
+<tr><td class="h"></td><td class="c0">33</td><td><div><table><tr><th>A</th><th>B</th><th>dec</th></tr><tr align="center"><td class="c0">0</td><td class="c0">0</td><td class="c0">0</td></tr><tr align="center"><td class="c3">0</td><td class="c3">1</td><td class="c3">1</td></tr><tr align="center"><td class="c0">1</td><td class="c0">X</td><td class="c0">1</td></tr></table></div></td><td class="s">$$opt{'indent'} || $default_indent</td></tr>
+<tr><td class="h"><a id="L289">289</a></td><td class="c0">0</td><td><div><table><tr><th>A</th><th>dec</th></tr><tr align="center"><td class="c0">0</td><td class="c0">0</td></tr><tr align="center"><td class="c0">1</td><td class="c0">1</td></tr></table></div></td><td class="s">$$node{'_content'} || ''</td></tr>
+<tr><td class="h"><a id="L290">290</a></td><td class="c0">0</td><td><div><table><tr><th>A</th><th>B</th><th>C</th><th>dec</th></tr><tr align="center"><td class="c0">0</td><td class="c0">X</td><td class="c0">X</td><td class="c0">0</td></tr><tr align="center"><td class="c0">1</td><td class="c0">0</td><td class="c0">0</td><td class="c0">0</td></tr><tr align="center"><td class="c0">1</td><td class="c0">0</td><td class="c0">1</td><td class="c0">1</td></tr><tr align="center"><td class="c0">1</td><td class="c0">1</td><td class="c0">X</td><td class="c0">1</td></tr></table></div></td><td class="s">ref $content and ref $content eq 'ARRAY' || $content->isa('ARRAY')</td></tr>
+<tr><td class="h"><a id="L304">304</a></td><td class="c3">100</td><td><div><table><tr><th>A</th><th>B</th><th>dec</th></tr><tr align="center"><td class="c3">0</td><td class="c3">X</td><td class="c3">0</td></tr><tr align="center"><td class="c3">1</td><td class="c3">0</td><td class="c3">0</td></tr><tr align="center"><td class="c3">1</td><td class="c3">1</td><td class="c3">1</td></tr></table></div></td><td class="s">$extra_newline{$lc_name} and $content ne ''</td></tr>
+<tr><td class="h"><a id="L317">317</a></td><td class="c0">25</td><td><div><table><tr><th>A</th><th>B</th><th>C</th><th>dec</th></tr><tr align="center"><td class="c0">0</td><td class="c0">0</td><td class="c0">0</td><td class="c0">0</td></tr><tr align="center"><td class="c0">0</td><td class="c0">0</td><td class="c0">1</td><td class="c0">1</td></tr><tr align="center"><td class="c3">0</td><td class="c3">1</td><td class="c3">X</td><td class="c3">1</td></tr><tr align="center"><td class="c0">1</td><td class="c0">X</td><td class="c0">X</td><td class="c0">1</td></tr></table></div></td><td class="s">not length $att_name or $att_name =~ /^_/ or $att_name eq '/'</td></tr>
+<tr><td class="h"><a id="L352">352</a></td><td class="c0">0</td><td><div><table><tr><th>A</th><th>B</th><th>C</th><th>dec</th></tr><tr align="center"><td class="c0">0</td><td class="c0">X</td><td class="c0">X</td><td class="c0">0</td></tr><tr align="center"><td class="c0">1</td><td class="c0">0</td><td class="c0">X</td><td class="c0">0</td></tr><tr align="center"><td class="c0">1</td><td class="c0">1</td><td class="c0">0</td><td class="c0">0</td></tr><tr align="center"><td class="c0">1</td><td class="c0">1</td><td class="c0">1</td><td class="c0">1</td></tr></table></div></td><td class="s">$HTML::Tagset::isKnown{lc $name} and not $HTML::Tagset::isPhraseMarkup{lc $name} and $indent_level > 0</td></tr>
+<tr><td class="h"><a id="L387">387</a></td><td class="c0">0</td><td><div><table><tr><th>A</th><th>B</th><th>dec</th></tr><tr align="center"><td class="c0">0</td><td class="c0">0</td><td class="c0">0</td></tr><tr align="center"><td class="c0">0</td><td class="c0">1</td><td class="c0">1</td></tr><tr align="center"><td class="c0">1</td><td class="c0">X</td><td class="c0">1</td></tr></table></div></td><td class="s">$$opt{'force_escape_cdata'} or $text =~ /[<&]/</td></tr>
+<tr><td class="h"><a id="L410">410</a></td><td class="c0">33</td><td><div><table><tr><th>A</th><th>B</th><th>dec</th></tr><tr align="center"><td class="c0">0</td><td class="c0">X</td><td class="c0">0</td></tr><tr align="center"><td class="c3">1</td><td class="c3">0</td><td class="c3">0</td></tr><tr align="center"><td class="c0">1</td><td class="c0">1</td><td class="c0">1</td></tr></table></div></td><td class="s">$$node{'_parent'} and $$node{'_parent'}{'_tag'} eq 'script'</td></tr>
+<tr><td class="h"><a id="L489">489</a></td><td class="c0">0</td><td><div><table><tr><th>A</th><th>dec</th></tr><tr align="center"><td class="c0">0</td><td class="c0">0</td></tr><tr align="center"><td class="c0">1</td><td class="c0">1</td></tr></table></div></td><td class="s">(sort keys %atts)[$rank + 1] || return(undef)</td></tr>
+<tr><td class="h"><a id="L508">508</a></td><td class="c0">33</td><td><div><table><tr><th>A</th><th>B</th><th>dec</th></tr><tr align="center"><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td></tr><tr align="center"><td class="c0">0</td><td class="c0">1</td><td class="c0">1</td></tr><tr align="center"><td class="c0">1</td><td class="c0">X</td><td class="c0">1</td></tr></table></div></td><td class="s">$$att{'_elt'} == $node || $$att{'_elt'}->is_inside($node)</td></tr>
+</table>
+</body>
+</html>
 
--- /dev/null
+<!DOCTYPE html
+     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<!--
+This file was generated by Devel::Cover Version 0.71
+Devel::Cover is copyright 2001-2010, Paul Johnson (
[email protected])
+Devel::Cover is free. It is licensed under the same terms as Perl itself.
+The latest version of Devel::Cover should be available from my homepage:
+http://www.pjcj.net
+-->
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta>
+    <meta http-equiv="Content-Language" content="en-us"></meta>
+    <link rel="stylesheet" type="text/css" href="cover.css"></link>
+    <link rel="stylesheet" type="text/css" href="cover.css"></link>
+    <title>Subroutine Coverage: blib/lib/HTML/TreeBuilder/XPath.pm</title>
+</head>
+<body>
+<h1>Subroutine Coverage</h1>
+<table>
+<tr><td class="h" align="right">File:</td><td align="left">blib/lib/HTML/TreeBuilder/XPath.pm</td></tr>
+<tr><td class="h" align="right">Coverage:</td><td align="left" class="c0">69.0%</td></tr>
+</table>
+<div><br/></div>
+<table>
+<tr><th>line</th><th>subroutine</th></tr>
+<tr><td class="h"><a id="L3">3</a></td><td class="c3"><div class="s">BEGIN</div></td></tr>
+<tr><td class="h"><a id="L5">5</a></td><td class="c3"><div class="s">BEGIN</div></td></tr>
+<tr><td class="h"><a id="L6">6</a></td><td class="c3"><div class="s">BEGIN</div></td></tr>
+<tr><td class="h"><a id="L8">8</a></td><td class="c3"><div class="s">BEGIN</div></td></tr>
+<tr><td class="h"><a id="L17">17</a></td><td class="c3"><div class="s">BEGIN</div></td></tr>
+<tr><td class="h"><a id="L21">21</a></td><td class="c3"><div class="s">isElementNode</div></td></tr>
+<tr><td class="h"><a id="L22">22</a></td><td class="c3"><div class="s">isAttributeNode</div></td></tr>
+<tr><td class="h"><a id="L23">23</a></td><td class="c0"><div class="s">isNamespaceNode</div></td></tr>
+<tr><td class="h"><a id="L24">24</a></td><td class="c0"><div class="s">isTextNode</div></td></tr>
+<tr><td class="h"><a id="L25">25</a></td><td class="c0"><div class="s">isProcessingInstructionNode</div></td></tr>
+<tr><td class="h"><a id="L26">26</a></td><td class="c0"><div class="s">isPINode</div></td></tr>
+<tr><td class="h"><a id="L27">27</a></td><td class="c0"><div class="s">isCommentNode</div></td></tr>
+<tr><td class="h"><a id="L29">29</a></td><td class="c3"><div class="s">getChildNodes</div></td></tr>
+<tr><td class="h"><a id="L30">30</a></td><td class="c3"><div class="s">getFirstChild</div></td></tr>
+<tr><td class="h"><a id="L31">31</a></td><td class="c3"><div class="s">getLastChild</div></td></tr>
+<tr><td class="h"><a id="L37">37</a></td><td class="c3"><div class="s">getElementById</div></td></tr>
+<tr><td class="h"><a id="L41">41</a></td><td class="c0"><div class="s">to_number</div></td></tr>
+<tr><td class="h"><a id="L44">44</a></td><td class="c3"><div class="s">cmp</div></td></tr>
+<tr><td class="h"><a id="L97">97</a></td><td class="c3"><div class="s">BEGIN</div></td></tr>
+<tr><td class="h"><a id="L98">98</a></td><td class="c3"><div class="s">BEGIN</div></td></tr>
+<tr><td class="h"><a id="L102">102</a></td><td class="c3"><div class="s">BEGIN</div></td></tr>
+<tr><td class="h"><a id="L106">106</a></td><td class="c3"><div class="s">xp</div></td></tr>
+<tr><td class="h"><a id="L112">112</a></td><td class="c3"><div class="s">findnodes</div></td></tr>
+<tr><td class="h"><a id="L113">113</a></td><td class="c3"><div class="s">findnodes_as_string</div></td></tr>
+<tr><td class="h"><a id="L114">114</a></td><td class="c3"><div class="s">findnodes_as_strings</div></td></tr>
+<tr><td class="h"><a id="L115">115</a></td><td class="c3"><div class="s">findvalue</div></td></tr>
+<tr><td class="h"><a id="L116">116</a></td><td class="c3"><div class="s">findvalues</div></td></tr>
+<tr><td class="h"><a id="L117">117</a></td><td class="c0"><div class="s">exists</div></td></tr>
+<tr><td class="h"><a id="L118">118</a></td><td class="c0"><div class="s">find_xpath</div></td></tr>
+<tr><td class="h"><a id="L119">119</a></td><td class="c0"><div class="s">matches</div></td></tr>
+<tr><td class="h"><a id="L120">120</a></td><td class="c0"><div class="s">set_namespace</div></td></tr>
+<tr><td class="h"><a id="L123">123</a></td><td class="c3"><div class="s">getRootNode</div></td></tr>
+<tr><td class="h"><a id="L130">130</a></td><td class="c3"><div class="s">getParentNode</div></td></tr>
+<tr><td class="h"><a id="L133">133</a></td><td class="c3"><div class="s">getName</div></td></tr>
+<tr><td class="h"><a id="L134">134</a></td><td class="c3"><div class="s">getLocalName</div></td></tr>
+<tr><td class="h"><a id="L135">135</a></td><td class="c3"><div class="s">getNextSibling</div></td></tr>
+<tr><td class="h"><a id="L139">139</a></td><td class="c3"><div class="s">getPreviousSibling</div></td></tr>
+<tr><td class="h"><a id="L144">144</a></td><td class="c3"><div class="s">isElementNode</div></td></tr>
+<tr><td class="h"><a id="L145">145</a></td><td class="c3"><div class="s">isCommentNode</div></td></tr>
+<tr><td class="h"><a id="L146">146</a></td><td class="c0"><div class="s">isProcessingInstructionNode</div></td></tr>
+<tr><td class="h"><a id="L147">147</a></td><td class="c3"><div class="s">isTextNode</div></td></tr>
+<tr><td class="h"><a id="L150">150</a></td><td class="c3"><div class="s">getValue</div></td></tr>
+<tr><td class="h"><a id="L156">156</a></td><td class="c3"><div class="s">getChildNodes</div></td></tr>
+<tr><td class="h"><a id="L163">163</a></td><td class="c3"><div class="s">getFirstChild</div></td></tr>
+<tr><td class="h"><a id="L171">171</a></td><td class="c3"><div class="s">getLastChild</div></td></tr>
+<tr><td class="h"><a id="L180">180</a></td><td class="c3"><div class="s">getAttributes</div></td></tr>
+<tr><td class="h"><a id="L192">192</a></td><td class="c0"><div class="s">to_number</div></td></tr>
+<tr><td class="h"><a id="L194">194</a></td><td class="c3"><div class="s">string_value</div></td></tr>
+<tr><td class="h"><a id="L203">203</a></td><td class="c3"><div class="s">_child_as_object</div></td></tr>
+<tr><td class="h"><a id="L216">216</a></td><td class="c3"><div class="s">toString</div></td></tr>
+<tr><td class="h"><a id="L220">220</a></td><td class="c3"><div class="s">BEGIN</div></td></tr>
+<tr><td class="h"><a id="L222">222</a></td><td class="c3"><div class="s">as_XML_compact</div></td></tr>
+<tr><td class="h"><a id="L259">259</a></td><td class="c3"><div class="s">BEGIN</div></td></tr>
+<tr><td class="h"><a id="L266">266</a></td><td class="c3"><div class="s">as_XML_indented</div></td></tr>
+<tr><td class="h"><a id="L313">313</a></td><td class="c3"><div class="s">_start_tag</div></td></tr>
+<tr><td class="h"><a id="L326">326</a></td><td class="c0"><div class="s">well_formed_name</div></td></tr>
+<tr><td class="h"><a id="L333">333</a></td><td class="c0"><div class="s">_indent_level</div></td></tr>
+<tr><td class="h"><a id="L340">340</a></td><td class="c3"><div class="s">BEGIN</div></td></tr>
+<tr><td class="h"><a id="L346">346</a></td><td class="c0"><div class="s">indents</div></td></tr>
+<tr><td class="h"><a id="L367">367</a></td><td class="c0"><div class="s">_xml_escape_attribute_value</div></td></tr>
+<tr><td class="h"><a id="L373">373</a></td><td class="c3"><div class="s">_xml_escape_text</div></td></tr>
+<tr><td class="h"><a id="L379">379</a></td><td class="c0"><div class="s">_xml_escape_comment</div></td></tr>
+<tr><td class="h"><a id="L386">386</a></td><td class="c0"><div class="s">_xml_escape_cdata</div></td></tr>
+<tr><td class="h"><a id="L399">399</a></td><td class="c3"><div class="s">BEGIN</div></td></tr>
+<tr><td class="h"><a id="L401">401</a></td><td class="c3"><div class="s">getParentNode</div></td></tr>
+<tr><td class="h"><a id="L402">402</a></td><td class="c0"><div class="s">getValue</div></td></tr>
+<tr><td class="h"><a id="L403">403</a></td><td class="c3"><div class="s">isTextNode</div></td></tr>
+<tr><td class="h"><a id="L404">404</a></td><td class="c3"><div class="s">getAttributes</div></td></tr>
+<tr><td class="h"><a id="L408">408</a></td><td class="c3"><div class="s">as_XML</div></td></tr>
+<tr><td class="h"><a id="L421">421</a></td><td class="c3"><div class="s">getPreviousSibling</div></td></tr>
+<tr><td class="h"><a id="L430">430</a></td><td class="c3"><div class="s">getNextSibling</div></td></tr>
+<tr><td class="h"><a id="L440">440</a></td><td class="c0"><div class="s">getRootNode</div></td></tr>
+<tr><td class="h"><a id="L442">442</a></td><td class="c3"><div class="s">string_value</div></td></tr>
+<tr><td class="h"><a id="L446">446</a></td><td class="c0"><div class="s">lineage</div></td></tr>
+<tr><td class="h"><a id="L452">452</a></td><td class="c0"><div class="s">is_inside</div></td></tr>
+<tr><td class="h"><a id="L460">460</a></td><td class="c3"><div class="s">BEGIN</div></td></tr>
+<tr><td class="h"><a id="L462">462</a></td><td class="c3"><div class="s">getParentNode</div></td></tr>
+<tr><td class="h"><a id="L463">463</a></td><td class="c3"><div class="s">getValue</div></td></tr>
+<tr><td class="h"><a id="L464">464</a></td><td class="c3"><div class="s">getName</div></td></tr>
+<tr><td class="h"><a id="L465">465</a></td><td class="c0"><div class="s">getLocalName</div></td></tr>
+<tr><td class="h"><a id="L466">466</a></td><td class="c3"><div class="s">string_value</div></td></tr>
+<tr><td class="h"><a id="L467">467</a></td><td class="c3"><div class="s">to_number</div></td></tr>
+<tr><td class="h"><a id="L468">468</a></td><td class="c0"><div class="s">isAttributeNode</div></td></tr>
+<tr><td class="h"><a id="L469">469</a></td><td class="c0"><div class="s">toString</div></td></tr>
+<tr><td class="h"><a id="L473">473</a></td><td class="c0"><div class="s">getPreviousSibling</div></td></tr>
+<tr><td class="h"><a id="L486">486</a></td><td class="c0"><div class="s">getNextSibling</div></td></tr>
+<tr><td class="h"><a id="L501">501</a></td><td class="c3"><div class="s">lineage</div></td></tr>
+<tr><td class="h"><a id="L507">507</a></td><td class="c3"><div class="s">is_inside</div></td></tr>
+<tr><td class="h"><a id="L516">516</a></td><td class="c3"><div class="s">BEGIN</div></td></tr>
+<tr><td class="h"><a id="L518">518</a></td><td class="c3"><div class="s">getParentNode</div></td></tr>
+<tr><td class="h"><a id="L519">519</a></td><td class="c3"><div class="s">getChildNodes</div></td></tr>
+<tr><td class="h"><a id="L520">520</a></td><td class="c3"><div class="s">getAttributes</div></td></tr>
+<tr><td class="h"><a id="L521">521</a></td><td class="c0"><div class="s">isDocumentNode</div></td></tr>
+<tr><td class="h"><a id="L522">522</a></td><td class="c3"><div class="s">getRootNode</div></td></tr>
+<tr><td class="h"><a id="L523">523</a></td><td class="c3"><div class="s">getName</div></td></tr>
+<tr><td class="h"><a id="L524">524</a></td><td class="c3"><div class="s">getNextSibling</div></td></tr>
+<tr><td class="h"><a id="L525">525</a></td><td class="c3"><div class="s">getPreviousSibling</div></td></tr>
+<tr><td class="h"><a id="L528">528</a></td><td class="c0"><div class="s">lineage</div></td></tr>
+<tr><td class="h"><a id="L529">529</a></td><td class="c0"><div class="s">is_inside</div></td></tr>
+<tr><td class="h"><a id="L530">530</a></td><td class="c0"><div class="s">cmp</div></td></tr>
+</table>
+</body>
+</html>
 
--- /dev/null
+<!DOCTYPE html
+     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<!--
+This file was generated by Devel::Cover Version 0.71
+Devel::Cover is copyright 2001-2010, Paul Johnson (
[email protected])
+Devel::Cover is free. It is licensed under the same terms as Perl itself.
+The latest version of Devel::Cover should be available from my homepage:
+http://www.pjcj.net
+-->
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta>
+    <meta http-equiv="Content-Language" content="en-us"></meta>
+    <link rel="stylesheet" type="text/css" href="cover.css"></link>
+    <link rel="stylesheet" type="text/css" href="cover.css"></link>
+    <title>File Coverage: blib/lib/HTML/TreeBuilder/XPath.pm</title>
+</head>
+<body>
+<h1>File Coverage</h1>
+<table>
+<tr><td class="h" align="right">File:</td><td align="left">blib/lib/HTML/TreeBuilder/XPath.pm</td></tr>
+<tr><td class="h" align="right">Coverage:</td><td align="left" class="c0">58.0%</td></tr>
+</table>
+<div><br/></div>
+<table>
+<tr><th>line</th><th>stmt</th><th>bran</th><th>cond</th><th>sub</th><th>pod</th><th>time</th><th>code</th></tr>
+<tr><td class="h">1</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">package HTML::TreeBuilder::XPath;</td></tr>
+<tr><td class="h">2</td><td colspan="7"></td></tr><tr><td class="h">3</td><td><div class="c3">65</div><div class="c3">65</div><div class="c3">65</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L3">65</a></div></td><td></td><td><div>1143608</div><div>285</div><div>3190</div></td><td class="s">use List::Util qw( first);</td></tr>
+<tr><td class="h">4</td><td colspan="7"></td></tr><tr><td class="h">5</td><td><div class="c3">65</div><div class="c3">65</div><div class="c3">65</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L5">65</a></div></td><td></td><td><div>216</div><div>61</div><div>841</div></td><td class="s">use strict;</td></tr>
+<tr><td class="h">6</td><td><div class="c3">65</div><div class="c3">65</div><div class="c3">65</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L6">65</a></div></td><td></td><td><div>187</div><div>64</div><div>1447</div></td><td class="s">use warnings;</td></tr>
+<tr><td class="h">7</td><td colspan="7"></td></tr><tr><td class="h">8</td><td><div class="c3">65</div><div class="c3">65</div><div class="c3">65</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L8">65</a></div></td><td></td><td><div>166</div><div>58</div><div>3793</div></td><td class="s">use vars qw($VERSION);</td></tr>
+<tr><td class="h">9</td><td colspan="7"></td></tr><tr><td class="h">10</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">$VERSION = '0.12';</td></tr>
+<tr><td class="h">11</td><td colspan="7"></td></tr><tr><td class="h">12</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">my %CHAR2DEFAULT_ENT= ( '&' => '&amp;', '<' => '&lt;', '>' => '&gt;', '"' => '&quot;');</td></tr>
+<tr><td class="h">13</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">my %NUM2DEFAULT_ENT= ( '38' => 'amp', '60' => 'lt', '62' => 'gt', '"' => '&quot;');</td></tr>
+<tr><td class="h">14</td><td colspan="7"></td></tr><tr><td class="h">15</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">package HTML::TreeBuilder::XPath;</td></tr>
+<tr><td class="h">16</td><td colspan="7"></td></tr><tr><td class="h">17</td><td><div class="c3">65</div><div class="c3">65</div><div class="c3">65</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L17">65</a></div></td><td></td><td><div>209</div><div>71</div><div>4187</div></td><td class="s">use base( 'HTML::TreeBuilder');</td></tr>
+<tr><td class="h">18</td><td colspan="7"></td></tr><tr><td class="h">19</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">package HTML::TreeBuilder::XPath::Node;</td></tr>
+<tr><td class="h">20</td><td colspan="7"></td></tr><tr><td class="h">21</td><td><div class="c3">10352</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L21">10352</a></div></td><td></td><td><div>151326</div></td><td class="s">sub isElementNode   { 0 }</td></tr>
+<tr><td class="h">22</td><td><div class="c3">22</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L22">22</a></div></td><td></td><td><div>14650</div></td><td class="s">sub isAttributeNode { 0 }</td></tr>
+<tr><td class="h">23</td><td><div class="c0">0</div></td><td></td><td></td><td><div class="c0"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L23">0</a></div></td><td></td><td><div>0</div></td><td class="s">sub isNamespaceNode { 0 }</td></tr>
+<tr><td class="h">24</td><td><div class="c0">0</div></td><td></td><td></td><td><div class="c0"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L24">0</a></div></td><td></td><td><div>0</div></td><td class="s">sub isTextNode      { 0 }</td></tr>
+<tr><td class="h">25</td><td><div class="c0">0</div></td><td></td><td></td><td><div class="c0"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L25">0</a></div></td><td></td><td><div>0</div></td><td class="s">sub isProcessingInstructionNode { 0 }</td></tr>
+<tr><td class="h">26</td><td><div class="c0">0</div></td><td></td><td></td><td><div class="c0"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L26">0</a></div></td><td></td><td><div>0</div></td><td class="s">sub isPINode        { 0 }</td></tr>
+<tr><td class="h">27</td><td><div class="c0">0</div></td><td></td><td></td><td><div class="c0"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L27">0</a></div></td><td></td><td><div>0</div></td><td class="s">sub isCommentNode   { 0 }</td></tr>
+<tr><td class="h">28</td><td colspan="7"></td></tr><tr><td class="h">29</td><td><div class="c3">14578</div></td><td><div class="c3" title="T/F"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html#L29">100</a></div></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L29">14578</a></div></td><td></td><td><div>491532</div></td><td class="s">sub getChildNodes { return wantarray ? () : []; }</td></tr>
+<tr><td class="h">30</td><td><div class="c3">880</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L30">880</a></div></td><td></td><td><div>5301</div></td><td class="s">sub getFirstChild { return undef; }</td></tr>
+<tr><td class="h">31</td><td><div class="c3">99</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L31">99</a></div></td><td></td><td><div>703</div></td><td class="s">sub getLastChild { return undef; }</td></tr>
+<tr><td class="h">32</td><td colspan="7"></td></tr><tr><td class="h">33</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s"># need to do a complete look_down each time, as the id could have been changed </td></tr>
+<tr><td class="h">34</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s"># without any object being involved, hence without a potential cache being</td></tr>
+<tr><td class="h">35</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s"># up to date</td></tr>
+<tr><td class="h">36</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub getElementById </td></tr>
+<tr><td class="h">37</td><td><div class="c3">22</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L37">22</a></div></td><td></td><td><div>186</div></td><td class="s">  { my ($self, $id) = @_;</td></tr>
+<tr><td class="h">38</td><td><div class="c3">22</div></td><td></td><td></td><td></td><td></td><td><div>135</div></td><td class="s">    return scalar $self->look_down( id => $id);</td></tr>
+<tr><td class="h">39</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">  }</td></tr>
+<tr><td class="h">40</td><td colspan="7"></td></tr><tr><td class="h">41</td><td><div class="c0">0</div></td><td></td><td></td><td><div class="c0"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L41">0</a></div></td><td></td><td><div>0</div></td><td class="s">sub to_number { return XML::XPathEngine::Number->new( shift->getValue); }</td></tr>
+<tr><td class="h">42</td><td colspan="7"></td></tr><tr><td class="h">43</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub cmp</td></tr>
+<tr><td class="h">44</td><td><div class="c3">588</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L44">588</a></div></td><td></td><td><div>33520</div></td><td class="s">  { my( $a, $b)=@_;</td></tr>
+<tr><td class="h">45</td><td colspan="7"></td></tr><tr><td class="h">46</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">    # comparison with the root (in $b, or processed in HTML::TreeBuilder::XPath::Root)</td></tr>
+<tr><td class="h">47</td><td><div class="c3">588</div><div class="c0">0</div></td><td><div class="c0" title="-/F"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html#L47">50</a></div></td><td></td><td></td><td></td><td><div>2013</div><div>0</div></td><td class="s">    if( $b->isa( 'HTML::TreeBuilder::XPath::Root') ) { return -1; }</td></tr>
+<tr><td class="h">48</td><td colspan="7"></td></tr><tr><td class="h">49</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">    # easy cases</td></tr>
+<tr><td class="h">50</td><td><div class="c3">588</div></td><td><div class="c0" title="-/F"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html#L50">50</a></div></td><td></td><td></td><td></td><td><div>874</div></td><td class="s">    return  0 if( $a == $b);    </td></tr>
+<tr><td class="h">51</td><td><div class="c3">588</div></td><td><div class="c0" title="-/F"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html#L51">50</a></div></td><td></td><td></td><td></td><td><div>2031</div></td><td class="s">    return  1 if( $a->is_inside($b)); # a starts after b </td></tr>
+<tr><td class="h">52</td><td><div class="c3">588</div></td><td><div class="c0" title="-/F"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html#L52">50</a></div></td><td></td><td></td><td></td><td><div>12761</div></td><td class="s">    return -1 if( $b->is_inside($a)); # a starts before b</td></tr>
+<tr><td class="h">53</td><td colspan="7"></td></tr><tr><td class="h">54</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">    # lineage does not include the element itself</td></tr>
+<tr><td class="h">55</td><td><div class="c3">588</div></td><td></td><td></td><td></td><td></td><td><div>12162</div></td><td class="s">    my @a_pile= ($a, $a->lineage); </td></tr>
+<tr><td class="h">56</td><td><div class="c3">588</div></td><td></td><td></td><td></td><td></td><td><div>7162</div></td><td class="s">    my @b_pile= ($b, $b->lineage);</td></tr>
+<tr><td class="h">57</td><td colspan="7"></td></tr><tr><td class="h">58</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">    # the 2 elements are not in the same twig</td></tr>
+<tr><td class="h">59</td><td><div class="c3">588</div></td><td><div class="c0" title="-/F"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html#L59">50</a></div></td><td></td><td></td><td></td><td><div>5658</div></td><td class="s">    unless( $a_pile[-1] == $b_pile[-1]) </td></tr>
+<tr><td class="h">60</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">      { warn "2 nodes not in the same pile: ", ref( $a), " - ", ref( $b), "\n"; </td></tr>
+<tr><td class="h">61</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">        print "a: ", $a->string_value, "\nb: ", $b->string_value, "\n";</td></tr>
+<tr><td class="h">62</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">        return undef;</td></tr>
+<tr><td class="h">63</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
+<tr><td class="h">64</td><td colspan="7"></td></tr><tr><td class="h">65</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">    # find the first non common ancestors (they are siblings)</td></tr>
+<tr><td class="h">66</td><td><div class="c3">588</div></td><td></td><td></td><td></td><td></td><td><div>594</div></td><td class="s">    my $a_anc= pop @a_pile;</td></tr>
+<tr><td class="h">67</td><td><div class="c3">588</div></td><td></td><td></td><td></td><td></td><td><div>486</div></td><td class="s">    my $b_anc= pop @b_pile;</td></tr>
+<tr><td class="h">68</td><td colspan="7"></td></tr><tr><td class="h">69</td><td><div class="c3">588</div></td><td></td><td></td><td></td><td></td><td><div>876</div></td><td class="s">    while( $a_anc == $b_anc) </td></tr>
+<tr><td class="h">70</td><td><div class="c3">1550</div></td><td></td><td></td><td></td><td></td><td><div>1183</div></td><td class="s">      { $a_anc= pop @a_pile;</td></tr>
+<tr><td class="h">71</td><td><div class="c3">1550</div></td><td></td><td></td><td></td><td></td><td><div>2136</div></td><td class="s">        $b_anc= pop @b_pile;</td></tr>
+<tr><td class="h">72</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
+<tr><td class="h">73</td><td colspan="7"></td></tr><tr><td class="h">74</td><td><div class="c3">588</div></td><td><div class="c0" title="T/-"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html#L74">50</a></div></td><td><div class="c0"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--condition.html#L74">33</a></div></td><td></td><td></td><td><div>2275</div></td><td class="s">    if( defined( $a_anc->{_rank}) && defined( $b_anc->{_rank}))</td></tr>
+<tr><td class="h">75</td><td><div class="c3">588</div></td><td></td><td></td><td></td><td></td><td><div>3162</div></td><td class="s">      { return $a_anc->{_rank} <=> $b_anc->{_rank}; }</td></tr>
+<tr><td class="h">76</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">    else</td></tr>
+<tr><td class="h">77</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">      {</td></tr>
+<tr><td class="h">78</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">        # from there move left and right and figure out the order</td></tr>
+<tr><td class="h">79</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">        my( $a_prev, $a_next, $b_prev, $b_next)= ($a_anc, $a_anc, $b_anc, $b_anc);</td></tr>
+<tr><td class="h">80</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">        while()</td></tr>
+<tr><td class="h">81</td><td><div class="c0">0</div></td><td></td><td><div class="c0"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--condition.html#L81">0</a></div></td><td></td><td></td><td><div>0</div></td><td class="s">          { $a_prev= $a_prev->getPreviousSibling || return -1;</td></tr>
+<tr><td class="h">82</td><td><div class="c0">0</div></td><td><div class="c0" title="-/-"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html#L82">0</a></div></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">            return  1 if( $a_prev == $b_anc);</td></tr>
+<tr><td class="h">83</td><td><div class="c0">0</div></td><td></td><td><div class="c0"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--condition.html#L83">0</a></div></td><td></td><td></td><td><div>0</div></td><td class="s">            $a_next= $a_next->getNextSibling     || return  1;</td></tr>
+<tr><td class="h">84</td><td><div class="c0">0</div></td><td><div class="c0" title="-/-"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html#L84">0</a></div></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">            return -1 if( $a_next == $b_anc);</td></tr>
+<tr><td class="h">85</td><td><div class="c0">0</div></td><td></td><td><div class="c0"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--condition.html#L85">0</a></div></td><td></td><td></td><td><div>0</div></td><td class="s">            $b_prev= $b_prev->getPreviousSibling || return  1;</td></tr>
+<tr><td class="h">86</td><td><div class="c0">0</div></td><td><div class="c0" title="-/-"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html#L86">0</a></div></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">            return -1 if( $b_prev == $a_next);</td></tr>
+<tr><td class="h">87</td><td><div class="c0">0</div></td><td></td><td><div class="c0"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--condition.html#L87">0</a></div></td><td></td><td></td><td><div>0</div></td><td class="s">            $b_next= $b_next->getNextSibling     || return -1;</td></tr>
+<tr><td class="h">88</td><td><div class="c0">0</div></td><td><div class="c0" title="-/-"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html#L88">0</a></div></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">            return  1 if( $b_next == $a_prev);</td></tr>
+<tr><td class="h">89</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">          }</td></tr>
+<tr><td class="h">90</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
+<tr><td class="h">91</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">  }</td></tr>
+<tr><td class="h">92</td><td colspan="7"></td></tr><tr><td class="h">93</td><td colspan="7"></td></tr><tr><td class="h">94</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s"># need to modify directly the HTML::Element package, because HTML::TreeBuilder won't let me</td></tr>
+<tr><td class="h">95</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s"># change the class of the nodes it generates</td></tr>
+<tr><td class="h">96</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">package HTML::Element;</td></tr>
+<tr><td class="h">97</td><td><div class="c3">65</div><div class="c3">65</div><div class="c3">65</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L97">65</a></div></td><td></td><td><div>1242575</div><div>90</div><div>3702</div></td><td class="s">use Scalar::Util qw(weaken);</td></tr>
+<tr><td class="h">98</td><td><div class="c3">65</div><div class="c3">65</div><div class="c3">65</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L98">65</a></div></td><td></td><td><div>253</div><div>78</div><div>2503</div></td><td class="s">use vars qw(@ISA);</td></tr>
+<tr><td class="h">99</td><td colspan="7"></td></tr><tr><td class="h">100</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">push @ISA, 'HTML::TreeBuilder::XPath::Node';</td></tr>
+<tr><td class="h">101</td><td colspan="7"></td></tr><tr><td class="h">102</td><td><div class="c3">65</div><div class="c3">65</div><div class="c3">65</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L102">65</a></div></td><td></td><td><div>130503</div><div>882459</div><div>47901</div></td><td class="s">use XML::XPathEngine;</td></tr>
+<tr><td class="h">103</td><td colspan="7"></td></tr><tr><td class="h">104</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">{ my $xp;</td></tr>
+<tr><td class="h">105</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">  sub xp</td></tr>
+<tr><td class="h">106</td><td><div class="c3">872</div></td><td></td><td><div class="c0"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--condition.html#L106">50</a></div></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L106">872</a></div></td><td></td><td><div>2016</div></td><td class="s">    { $xp ||=XML::XPathEngine->new();</td></tr>
+<tr><td class="h">107</td><td><div class="c3">872</div></td><td></td><td></td><td></td><td></td><td><div>7038</div></td><td class="s">      return $xp;</td></tr>
+<tr><td class="h">108</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">    }</td></tr>
+<tr><td class="h">109</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
+<tr><td class="h">110</td><td colspan="7"></td></tr><tr><td class="h">111</td><td colspan="7"></td></tr><tr><td class="h">112</td><td><div class="c3">55</div><div class="c3">55</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L112">55</a></div></td><td></td><td><div>2183085</div><div>112</div></td><td class="s">sub findnodes            { my( $elt, $path)= @_; return xp->findnodes(            $path, $elt); }</td></tr>
+<tr><td class="h">113</td><td><div class="c3">5</div><div class="c3">5</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L113">5</a></div></td><td></td><td><div>2044</div><div>11</div></td><td class="s">sub findnodes_as_string  { my( $elt, $path)= @_; return xp->findnodes_as_string(  $path, $elt); }</td></tr>
+<tr><td class="h">114</td><td><div class="c3">22</div><div class="c3">22</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L114">22</a></div></td><td></td><td><div>3939</div><div>37</div></td><td class="s">sub findnodes_as_strings { my( $elt, $path)= @_; return xp->findnodes_as_strings( $path, $elt); }</td></tr>
+<tr><td class="h">115</td><td><div class="c3">768</div><div class="c3">768</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L115">768</a></div></td><td></td><td><div>6826850</div><div>1366</div></td><td class="s">sub findvalue            { my( $elt, $path)= @_; return xp->findvalue(            $path, $elt); }</td></tr>
+<tr><td class="h">116</td><td><div class="c3">22</div><div class="c3">22</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L116">22</a></div></td><td></td><td><div>8042</div><div>42</div></td><td class="s">sub findvalues           { my( $elt, $path)= @_; return xp->findvalues(           $path, $elt); }</td></tr>
+<tr><td class="h">117</td><td><div class="c0">0</div><div class="c0">0</div></td><td></td><td></td><td><div class="c0"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L117">0</a></div></td><td></td><td><div>0</div><div>0</div></td><td class="s">sub exists               { my( $elt, $path)= @_; return xp->exists(               $path, $elt); }</td></tr>
+<tr><td class="h">118</td><td><div class="c0">0</div><div class="c0">0</div></td><td></td><td></td><td><div class="c0"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L118">0</a></div></td><td></td><td><div>0</div><div>0</div></td><td class="s">sub find_xpath           { my( $elt, $path)= @_; return xp->find(                 $path, $elt); }</td></tr>
+<tr><td class="h">119</td><td><div class="c0">0</div><div class="c0">0</div></td><td></td><td></td><td><div class="c0"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L119">0</a></div></td><td></td><td><div>0</div><div>0</div></td><td class="s">sub matches              { my( $elt, $path)= @_; return xp->matches( $elt, $path, $elt);        }</td></tr>
+<tr><td class="h">120</td><td><div class="c0">0</div><div class="c0">0</div></td><td></td><td></td><td><div class="c0"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L120">0</a></div></td><td></td><td><div>0</div><div>0</div></td><td class="s">sub set_namespace        { my $elt= shift; xp->new->set_namespace( @_); }</td></tr>
+<tr><td class="h">121</td><td colspan="7"></td></tr><tr><td class="h">122</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub getRootNode</td></tr>
+<tr><td class="h">123</td><td><div class="c3">861</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L123">861</a></div></td><td></td><td><div>743490</div></td><td class="s">  { my $elt= shift;</td></tr>
+<tr><td class="h">124</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">    # The parent of root is a HTML::TreeBuilder::XPath::Root</td></tr>
+<tr><td class="h">125</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">    # that helps getting the tree to mimic a DOM tree</td></tr>
+<tr><td class="h">126</td><td><div class="c3">861</div></td><td></td><td></td><td></td><td></td><td><div>3832</div></td><td class="s">    return $elt->root->getParentNode; # I like this one!</td></tr>
+<tr><td class="h">127</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">  }</td></tr>
+<tr><td class="h">128</td><td colspan="7"></td></tr><tr><td class="h">129</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub getParentNode</td></tr>
+<tr><td class="h">130</td><td><div class="c3">1686</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L130">1686</a></div></td><td></td><td><div>9493</div></td><td class="s">  { my $elt= shift;</td></tr>
+<tr><td class="h">131</td><td><div class="c3">1686</div></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--condition.html#L131">100</a></div></td><td></td><td></td><td><div>13253</div></td><td class="s">    return $elt->{_parent} || bless { _root => $elt }, 'HTML::TreeBuilder::XPath::Root';</td></tr>
+<tr><td class="h">132</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">  }</td></tr>
+<tr><td class="h">133</td><td><div class="c3">12303</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L133">12303</a></div></td><td></td><td><div>95140</div></td><td class="s">sub getName             { return shift->tag;   }</td></tr>
+<tr><td class="h">134</td><td><div class="c3">12</div><div class="c3">12</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L134">12</a></div></td><td></td><td><div>1367</div><div>124</div></td><td class="s">sub getLocalName        { (my $name= $_[0]->tag) =~ s{^.*:}{}; $name; }</td></tr>
+<tr><td class="h">135</td><td><div class="c3">1573</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L135">1573</a></div></td><td></td><td><div>42167</div></td><td class="s">sub getNextSibling      { my( $elt)= @_; </td></tr>
+<tr><td class="h">136</td><td><div class="c3">1573</div></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--condition.html#L136">100</a></div></td><td></td><td></td><td><div>3245</div></td><td class="s">                          my $parent= $elt->{_parent} || return undef;</td></tr>
+<tr><td class="h">137</td><td><div class="c3">1342</div></td><td></td><td><div class="c0"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--condition.html#L137">0</a></div></td><td></td><td></td><td><div>4829</div></td><td class="s">                          return  $parent->_child_as_object( scalar $elt->right, ($elt->{_rank} || 0) + 1);</td></tr>
+<tr><td class="h">138</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">                        }</td></tr>
+<tr><td class="h">139</td><td><div class="c3">234</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L139">234</a></div></td><td></td><td><div>5841</div></td><td class="s">sub getPreviousSibling  { my( $elt)= @_; </td></tr>
+<tr><td class="h">140</td><td><div class="c3">234</div></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--condition.html#L140">100</a></div></td><td></td><td></td><td><div>504</div></td><td class="s">                          my $parent= $elt->{_parent} || return undef;</td></tr>
+<tr><td class="h">141</td><td><div class="c3">201</div></td><td><div class="c3" title="T/F"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html#L141">100</a></div></td><td></td><td></td><td></td><td><div>630</div></td><td class="s">                          return undef unless $elt->{_rank};</td></tr>
+<tr><td class="h">142</td><td><div class="c3">133</div></td><td></td><td></td><td></td><td></td><td><div>548</div></td><td class="s">                          return  $parent->_child_as_object( scalar $elt->left, $elt->{_rank} - 1); </td></tr>
+<tr><td class="h">143</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">                        }</td></tr>
+<tr><td class="h">144</td><td><div class="c3">12323</div></td><td><div class="c3" title="T/F"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html#L144">100</a></div></td><td><div class="c0"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--condition.html#L144">67</a></div></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L144">12323</a></div></td><td></td><td><div>226131</div></td><td class="s">sub isElementNode       { return ref $_[0] && ($_[0]->{_tag}!~ m{^~}) ? 1 : 0; }</td></tr>
+<tr><td class="h">145</td><td><div class="c3">854</div></td><td><div class="c0" title="-/F"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html#L145">50</a></div></td><td><div class="c0"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--condition.html#L145">33</a></div></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L145">854</a></div></td><td></td><td><div>4514</div></td><td class="s">sub isCommentNode       { return ref $_[0] && ($_[0]->{_tag} eq '~comment') ? 1 : 0; }</td></tr>
+<tr><td class="h">146</td><td><div class="c0">0</div></td><td><div class="c0" title="-/-"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html#L146">0</a></div></td><td><div class="c0"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--condition.html#L146">0</a></div></td><td><div class="c0"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L146">0</a></div></td><td></td><td><div>0</div></td><td class="s">sub isProcessingInstructionNode { return ref $_[0] && ($_[0]->{_tag} eq '~pi') ? 1 : 0; }</td></tr>
+<tr><td class="h">147</td><td><div class="c3">55</div></td><td><div class="c0" title="T/-"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html#L147">50</a></div></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L147">55</a></div></td><td></td><td><div>1070</div></td><td class="s">sub isTextNode          { return ref $_[0] ? 0 : 1; }</td></tr>
+<tr><td class="h">148</td><td colspan="7"></td></tr><tr><td class="h">149</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub getValue </td></tr>
+<tr><td class="h">150</td><td><div class="c3">22</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L150">22</a></div></td><td></td><td><div>440</div></td><td class="s">  { my $elt= shift;</td></tr>
+<tr><td class="h">151</td><td><div class="c3">22</div><div class="c0">0</div></td><td><div class="c0" title="-/F"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html#L151">50</a></div></td><td></td><td></td><td></td><td><div>31</div><div>0</div></td><td class="s">    if( $elt->isCommentNode) { return $elt->{_text}; }</td></tr>
+<tr><td class="h">152</td><td><div class="c3">22</div></td><td></td><td></td><td></td><td></td><td><div>88</div></td><td class="s">    return $elt->as_text;</td></tr>
+<tr><td class="h">153</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">  }</td></tr>
+<tr><td class="h">154</td><td colspan="7"></td></tr><tr><td class="h">155</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub getChildNodes    </td></tr>
+<tr><td class="h">156</td><td><div class="c3">17248</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L156">17248</a></div></td><td></td><td><div>710743</div></td><td class="s">  { my $parent= shift;</td></tr>
+<tr><td class="h">157</td><td><div class="c3">17248</div></td><td></td><td></td><td></td><td></td><td><div>14984</div></td><td class="s">    my $rank=0;</td></tr>
+<tr><td class="h">158</td><td><div class="c3">17248</div><div class="c3">31936</div></td><td></td><td></td><td></td><td></td><td><div>60429</div><div>116678</div></td><td class="s">    my @children= map { $parent->_child_as_object( $_, $rank++) } $parent->content_list;</td></tr>
+<tr><td class="h">159</td><td><div class="c3">17248</div></td><td><div class="c3" title="T/F"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html#L159">100</a></div></td><td></td><td></td><td></td><td><div>97445</div></td><td class="s">    return wantarray ? @children : \@children;</td></tr>
+<tr><td class="h">160</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">  }</td></tr>
+<tr><td class="h">161</td><td colspan="7"></td></tr><tr><td class="h">162</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub getFirstChild</td></tr>
+<tr><td class="h">163</td><td><div class="c3">880</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L163">880</a></div></td><td></td><td><div>15095</div></td><td class="s">  { my $parent= shift;</td></tr>
+<tr><td class="h">164</td><td><div class="c3">880</div></td><td></td><td></td><td></td><td></td><td><div>3010</div></td><td class="s">    my @content= $parent->content_list;</td></tr>
+<tr><td class="h">165</td><td><div class="c3">880</div></td><td><div class="c0" title="T/-"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html#L165">50</a></div></td><td></td><td></td><td></td><td><div>5653</div></td><td class="s">    if( @content)</td></tr>
+<tr><td class="h">166</td><td><div class="c3">880</div></td><td></td><td></td><td></td><td></td><td><div>1200</div></td><td class="s">      { return $parent->_child_as_object( $content[0], 0); }</td></tr>
+<tr><td class="h">167</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">    else</td></tr>
+<tr><td class="h">168</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">      { return undef; }</td></tr>
+<tr><td class="h">169</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">  }</td></tr>
+<tr><td class="h">170</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub getLastChild</td></tr>
+<tr><td class="h">171</td><td><div class="c3">132</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L171">132</a></div></td><td></td><td><div>1963</div></td><td class="s">  { my $parent= shift;</td></tr>
+<tr><td class="h">172</td><td><div class="c3">132</div></td><td></td><td></td><td></td><td></td><td><div>511</div></td><td class="s">    my @content= $parent->content_list;</td></tr>
+<tr><td class="h">173</td><td><div class="c3">132</div></td><td><div class="c3" title="T/F"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html#L173">100</a></div></td><td></td><td></td><td></td><td><div>925</div></td><td class="s">    if( @content)</td></tr>
+<tr><td class="h">174</td><td><div class="c3">99</div></td><td></td><td></td><td></td><td></td><td><div>222</div></td><td class="s">      { return $parent->_child_as_object( $content[-1], $#content); }</td></tr>
+<tr><td class="h">175</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">    else</td></tr>
+<tr><td class="h">176</td><td><div class="c3">33</div></td><td></td><td></td><td></td><td></td><td><div>104</div></td><td class="s">      { return undef; }</td></tr>
+<tr><td class="h">177</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">  }</td></tr>
+<tr><td class="h">178</td><td colspan="7"></td></tr><tr><td class="h">179</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub getAttributes</td></tr>
+<tr><td class="h">180</td><td><div class="c3">3619</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L180">3619</a></div></td><td></td><td><div>588677</div></td><td class="s">  { my $elt= shift;</td></tr>
+<tr><td class="h">181</td><td><div class="c3">3619</div></td><td></td><td></td><td></td><td></td><td><div>13946</div></td><td class="s">    my %atts= $elt->all_external_attr;</td></tr>
+<tr><td class="h">182</td><td><div class="c3">3619</div></td><td></td><td></td><td></td><td></td><td><div>39275</div></td><td class="s">    my $rank=0;</td></tr>
+<tr><td class="h">183</td><td><div class="c3">3619</div><div class="c3">3212</div></td><td></td><td></td><td></td><td></td><td><div>8919</div><div>12813</div></td><td class="s">    my @atts= map { bless( { _name => $_, _value => $atts{$_}, </td></tr>
+<tr><td class="h">184</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">                             _elt => $elt, _rank => $rank++, </td></tr>
+<tr><td class="h">185</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">                           }, </td></tr>
+<tr><td class="h">186</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">                               'HTML::TreeBuilder::XPath::Attribute'</td></tr>
+<tr><td class="h">187</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">                         )</td></tr>
+<tr><td class="h">188</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">                  } sort keys %atts;</td></tr>
+<tr><td class="h">189</td><td><div class="c3">3619</div></td><td><div class="c0" title="-/F"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html#L189">50</a></div></td><td></td><td></td><td></td><td><div>20754</div></td><td class="s">    return wantarray ? @atts : \@atts;</td></tr>
+<tr><td class="h">190</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">  }</td></tr>
+<tr><td class="h">191</td><td colspan="7"></td></tr><tr><td class="h">192</td><td><div class="c0">0</div></td><td></td><td></td><td><div class="c0"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L192">0</a></div></td><td></td><td><div>0</div></td><td class="s">sub to_number { return XML::XPathEngine::Number->new( $_[0]->as_text); }</td></tr>
+<tr><td class="h">193</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub string_value </td></tr>
+<tr><td class="h">194</td><td><div class="c3">832</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L194">832</a></div></td><td></td><td><div>87485</div></td><td class="s">  { my $elt= shift;</td></tr>
+<tr><td class="h">195</td><td><div class="c3">832</div><div class="c0">0</div></td><td><div class="c0" title="-/F"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html#L195">50</a></div></td><td></td><td></td><td></td><td><div>1263</div><div>0</div></td><td class="s">    if( $elt->isCommentNode) { return $elt->{_text}; }</td></tr>
+<tr><td class="h">196</td><td><div class="c3">832</div></td><td></td><td></td><td></td><td></td><td><div>3424</div></td><td class="s">    return $elt->as_text;</td></tr>
+<tr><td class="h">197</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">  };</td></tr>
+<tr><td class="h">198</td><td colspan="7"></td></tr><tr><td class="h">199</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s"># called on a parent, with a child as second argument and its rank as third</td></tr>
+<tr><td class="h">200</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s"># returns the child if it is already an element, or</td></tr>
+<tr><td class="h">201</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s"># a new HTML::TreeBuilder::XPath::Text element if it is a plain string</td></tr>
+<tr><td class="h">202</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub _child_as_object</td></tr>
+<tr><td class="h">203</td><td><div class="c3">34390</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L203">34390</a></div></td><td></td><td><div>57255</div></td><td class="s">  { my( $elt, $elt_or_text, $rank)= @_;</td></tr>
+<tr><td class="h">204</td><td><div class="c3">34390</div></td><td><div class="c3" title="T/F"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html#L204">100</a></div></td><td></td><td></td><td></td><td><div>45466</div></td><td class="s">    return undef unless( defined $elt_or_text);</td></tr>
+<tr><td class="h">205</td><td><div class="c3">33928</div></td><td><div class="c3" title="T/F"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html#L205">100</a></div></td><td></td><td></td><td></td><td><div>42740</div></td><td class="s">    if( ! ref $elt_or_text)</td></tr>
+<tr><td class="h">206</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">      { # $elt_or_text is a string, turn it into a TextNode object</td></tr>
+<tr><td class="h">207</td><td><div class="c3">16305</div></td><td></td><td></td><td></td><td></td><td><div>45975</div></td><td class="s">        $elt_or_text= bless { _content => $elt_or_text, _parent => $elt, }, </td></tr>
+<tr><td class="h">208</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">                            'HTML::TreeBuilder::XPath::TextNode'</td></tr>
+<tr><td class="h">209</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">                      ;</td></tr>
+<tr><td class="h">210</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
+<tr><td class="h">211</td><td><div class="c3">33928</div><div class="c0">0</div></td><td><div class="c0" title="-/F"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html#L211">50</a></div></td><td></td><td></td><td></td><td><div>42535</div><div>0</div></td><td class="s">    if( ref $rank) { warn "rank is a ", ref( $rank), " elt_or_text is a ", ref( $elt_or_text); } </td></tr>
+<tr><td class="h">212</td><td><div class="c3">33928</div></td><td></td><td></td><td></td><td></td><td><div>31512</div></td><td class="s">    $elt_or_text->{_rank}= $rank; # used for sorting;</td></tr>
+<tr><td class="h">213</td><td><div class="c3">33928</div></td><td></td><td></td><td></td><td></td><td><div>55213</div></td><td class="s">    return $elt_or_text;</td></tr>
+<tr><td class="h">214</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">  }</td></tr>
+<tr><td class="h">215</td><td colspan="7"></td></tr><tr><td class="h">216</td><td><div class="c3">10</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L216">10</a></div></td><td></td><td><div>652</div></td><td class="s">sub toString { return shift->as_XML( @_); }</td></tr>
+<tr><td class="h">217</td><td colspan="7"></td></tr><tr><td class="h">218</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s"># produces better looking XML</td></tr>
+<tr><td class="h">219</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">{</td></tr>
+<tr><td class="h">220</td><td><div class="c3">65</div><div class="c3">65</div><div class="c3">65</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L220">65</a></div></td><td></td><td><div>267</div><div>61</div><div>16030</div></td><td class="s">  no warnings 'redefine'; </td></tr>
+<tr><td class="h">221</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">  sub as_XML_compact</td></tr>
+<tr><td class="h">222</td><td><div class="c3">38</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L222">38</a></div></td><td></td><td><div>3760</div></td><td class="s">    { my( $node, $opt)= @_;</td></tr>
+<tr><td class="h">223</td><td><div class="c3">38</div></td><td></td><td></td><td></td><td></td><td><div>53</div></td><td class="s">      my $name = $node->{'_tag'};</td></tr>
+<tr><td class="h">224</td><td><div class="c3">38</div><div class="c0">0</div></td><td><div class="c0" title="-/F"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html#L224">50</a></div></td><td></td><td></td><td></td><td><div>86</div><div>0</div></td><td class="s">      if( $name eq '~literal')     { return _xml_escape_text( $node->{text});                     }</td></tr>
+<tr><td class="h">225</td><td colspan="7"></td></tr><tr><td class="h">226</td><td><div class="c3">38</div><div class="c0">0</div></td><td><div class="c0" title="-/F"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html#L226">50</a></div></td><td></td><td></td><td></td><td><div>63</div><div>0</div></td><td class="s">      if( $name eq '~declaration') { return '<!'   . _xml_escape_text( $node->{text})    . ">";   }</td></tr>
+<tr><td class="h">227</td><td><div class="c3">38</div><div class="c0">0</div></td><td><div class="c0" title="-/F"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html#L227">50</a></div></td><td></td><td></td><td></td><td><div>66</div><div>0</div></td><td class="s">      if( $name eq '~pi')          { return '<?'   . _xml_escape_text( $node->{text})    . '?>';  }</td></tr>
+<tr><td class="h">228</td><td><div class="c3">38</div><div class="c0">0</div></td><td><div class="c0" title="-/F"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html#L228">50</a></div></td><td></td><td></td><td></td><td><div>65</div><div>0</div></td><td class="s">      if( $name eq '~comment')     { return '<!--' . _xml_escape_comment( $node->{text}) . '-->'; }</td></tr>
+<tr><td class="h">229</td><td colspan="7"></td></tr><tr><td class="h">230</td><td><div class="c3">38</div></td><td></td><td></td><td></td><td></td><td><div>62</div></td><td class="s">      my $lc_name= lc $name;</td></tr>
+<tr><td class="h">231</td><td colspan="7"></td></tr><tr><td class="h">232</td><td><div class="c3">38</div></td><td></td><td></td><td></td><td></td><td><div>60</div></td><td class="s">      my $xml= $node->_start_tag;</td></tr>
+<tr><td class="h">233</td><td colspan="7"></td></tr><tr><td class="h">234</td><td><div class="c3">38</div></td><td><div class="c0" title="-/F"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html#L234">50</a></div></td><td></td><td></td><td></td><td><div>70</div></td><td class="s">      if( $HTML::Tagset::isCDATA_Parent{$lc_name})</td></tr>
+<tr><td class="h">235</td><td><div class="c0">0</div></td><td></td><td><div class="c0"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--condition.html#L235">0</a></div></td><td></td><td></td><td><div>0</div></td><td class="s">        { my $content= $node->{_content} || '';</td></tr>
+<tr><td class="h">236</td><td><div class="c0">0</div></td><td><div class="c0" title="-/-"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html#L236">0</a></div></td><td><div class="c0"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--condition.html#L236">0</a></div></td><td></td><td></td><td><div>0</div></td><td class="s">          if( ref $content eq 'ARRAY' || $content->isa( 'ARRAY'))</td></tr>
+<tr><td class="h">237</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">            { $xml .= _xml_escape_cdata( join( '', @$content), $opt); }</td></tr>
+<tr><td class="h">238</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">          else</td></tr>
+<tr><td class="h">239</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">            { $xml .= $content; }</td></tr>
+<tr><td class="h">240</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">        }</td></tr>
+<tr><td class="h">241</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">      else</td></tr>
+<tr><td class="h">242</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">        { # start tag</td></tr>
+<tr><td class="h">243</td><td><div class="c3">38</div></td><td></td><td></td><td></td><td></td><td><div>180</div></td><td class="s">          foreach my $child ($node->content_list) </td></tr>
+<tr><td class="h">244</td><td><div class="c3">38</div><div class="c3">12</div></td><td><div class="c3" title="T/F"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html#L244">100</a></div></td><td></td><td></td><td></td><td><div>272</div><div>46</div></td><td class="s">            { if( ref $child) { $xml .= $child->as_XML_compact(); }</td></tr>
+<tr><td class="h">245</td><td><div class="c3">26</div></td><td></td><td></td><td></td><td></td><td><div>41</div></td><td class="s">              else            { $xml .=  _xml_escape_text( $child); }</td></tr>
+<tr><td class="h">246</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
+<tr><td class="h">247</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">        }</td></tr>
+<tr><td class="h">248</td><td><div class="c3">38</div></td><td><div class="c0" title="T/-"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html#L248">50</a></div></td><td></td><td></td><td></td><td><div>138</div></td><td class="s">          $xml.= "</$name>" unless $HTML::Tagset::emptyElement{$lc_name};</td></tr>
+<tr><td class="h">249</td><td><div class="c3">38</div></td><td></td><td></td><td></td><td></td><td><div>177</div></td><td class="s">      return $xml;</td></tr>
+<tr><td class="h">250</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">    }</td></tr>
+<tr><td class="h">251</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
+<tr><td class="h">252</td><td colspan="7"></td></tr><tr><td class="h">253</td><td colspan="7"></td></tr><tr><td class="h">254</td><td colspan="7"></td></tr><tr><td class="h">255</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">{ my %phrase_name;    # all phrase tags, + literals (those are not indented)</td></tr>
+<tr><td class="h">256</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">  my %extra_newline;  # tags that get an extra newline before the end tag</td></tr>
+<tr><td class="h">257</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">  my $default_indent; # 2 spaces, change with the 'indent' option</td></tr>
+<tr><td class="h">258</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">  BEGIN </td></tr>
+<tr><td class="h">259</td><td><div class="c3">65</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L259">65</a></div></td><td></td><td><div>919</div></td><td class="s">    { %phrase_name= %HTML::Tagset::isPhraseMarkup;</td></tr>
+<tr><td class="h">260</td><td><div class="c3">65</div></td><td></td><td></td><td></td><td></td><td><div>184</div></td><td class="s">      $phrase_name{'~literal'}= 1;</td></tr>
+<tr><td class="h">261</td><td><div class="c3">65</div></td><td></td><td></td><td></td><td></td><td><div>92</div></td><td class="s">      $default_indent= '  ';</td></tr>
+<tr><td class="h">262</td><td><div class="c3">65</div><div class="c3">910</div></td><td></td><td></td><td></td><td></td><td><div>95</div><div>31283</div></td><td class="s">      %extra_newline= map { $_ => 1 } qw(html head body script div table tbody thead tfoot tr form dl ol ul);</td></tr>
+<tr><td class="h">263</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">    }</td></tr>
+<tr><td class="h">264</td><td colspan="7"></td></tr><tr><td class="h">265</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">  sub as_XML_indented</td></tr>
+<tr><td class="h">266</td><td><div class="c3">38</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L266">38</a></div></td><td></td><td><div>3847</div></td><td class="s">    { my( $node, $opt)= @_;</td></tr>
+<tr><td class="h">267</td><td colspan="7"></td></tr><tr><td class="h">268</td><td colspan="7"></td></tr><tr><td class="h">269</td><td><div class="c3">38</div></td><td></td><td></td><td></td><td></td><td><div>63</div></td><td class="s">      my $name = $node->{'_tag'};</td></tr>
+<tr><td class="h">270</td><td><div class="c3">38</div></td><td></td><td></td><td></td><td></td><td><div>60</div></td><td class="s">      my $lc_name= lc $name;</td></tr>
+<tr><td class="h">271</td><td colspan="7"></td></tr><tr><td class="h">272</td><td><div class="c3">38</div><div class="c0">0</div></td><td><div class="c0" title="-/F"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html#L272">50</a></div></td><td></td><td></td><td></td><td><div>84</div><div>0</div></td><td class="s">      if( $name eq '~literal')     { return _xml_escape_text( $node->{text});                     }</td></tr>
+<tr><td class="h">273</td><td><div class="c3">38</div><div class="c0">0</div></td><td><div class="c0" title="-/F"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html#L273">50</a></div></td><td></td><td></td><td></td><td><div>64</div><div>0</div></td><td class="s">      if( $name eq '~declaration') { return '<!'   . _xml_escape_text( $node->{text})    . ">\n"; }</td></tr>
+<tr><td class="h">274</td><td colspan="7"></td></tr><tr><td class="h">275</td><td colspan="7"></td></tr><tr><td class="h">276</td><td><div class="c3">38</div><div class="c0">0</div></td><td><div class="c0" title="-/F"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html#L276">50</a></div></td><td></td><td></td><td></td><td><div>60</div><div>0</div></td><td class="s">      if( $name eq '~pi')          { return '<?'   . _xml_escape_text( $node->{text})    . '?>';  }</td></tr>
+<tr><td class="h">277</td><td><div class="c3">38</div><div class="c0">0</div></td><td><div class="c0" title="-/F"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html#L277">50</a></div></td><td></td><td></td><td></td><td><div>65</div><div>0</div></td><td class="s">      if( $name eq '~comment')     { return '<!--' . _xml_escape_comment( $node->{text}) . '-->'; }</td></tr>
+<tr><td class="h">278</td><td colspan="7"></td></tr><tr><td class="h">279</td><td><div class="c3">38</div></td><td></td><td></td><td></td><td></td><td><div>33</div></td><td class="s">      my $xml;</td></tr>
+<tr><td class="h">280</td><td><div class="c3">38</div></td><td></td><td></td><td></td><td></td><td><div>42</div></td><td class="s">      my $pre_tag_indent='';</td></tr>
+<tr><td class="h">281</td><td><div class="c3">38</div><div class="c3">38</div></td><td><div class="c0" title="T/-"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html#L281">50</a></div></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--condition.html#L281">100</a></div><div class="c0"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--condition.html#L281">33</a></div></td><td></td><td></td><td><div>75</div><div>271</div></td><td class="s">      if(!$phrase_name{$lc_name}) { $pre_tag_indent=  "\n" . ($opt->{indent} || $default_indent) x ($opt->{indent_level}||0); }</td></tr>
+<tr><td class="h">282</td><td><div class="c3">38</div><div class="c3">12</div></td><td><div class="c3" title="T/F"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html#L282">100</a></div></td><td></td><td></td><td></td><td><div>89</div><div>11</div></td><td class="s">      if( $opt->{indent_level}) { $xml .= $pre_tag_indent; }</td></tr>
+<tr><td class="h">283</td><td colspan="7"></td></tr><tr><td class="h">284</td><td><div class="c3">38</div></td><td></td><td></td><td></td><td></td><td><div>63</div></td><td class="s">      $xml.= $node->_start_tag();</td></tr>
+<tr><td class="h">285</td><td colspan="7"></td></tr><tr><td class="h">286</td><td><div class="c3">38</div></td><td></td><td></td><td></td><td></td><td><div>52</div></td><td class="s">      my $content='';</td></tr>
+<tr><td class="h">287</td><td colspan="7"></td></tr><tr><td class="h">288</td><td><div class="c3">38</div></td><td><div class="c0" title="-/F"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html#L288">50</a></div></td><td></td><td></td><td></td><td><div>68</div></td><td class="s">      if( $HTML::Tagset::isCDATA_Parent{$lc_name})</td></tr>
+<tr><td class="h">289</td><td><div class="c0">0</div></td><td></td><td><div class="c0"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--condition.html#L289">0</a></div></td><td></td><td></td><td><div>0</div></td><td class="s">        { my $content= $node->{_content} || '';</td></tr>
+<tr><td class="h">290</td><td><div class="c0">0</div></td><td><div class="c0" title="-/-"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html#L290">0</a></div></td><td><div class="c0"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--condition.html#L290">0</a></div></td><td></td><td></td><td><div>0</div></td><td class="s">          if( ref $content && (ref $content eq 'ARRAY' || $content->isa( 'ARRAY') ))</td></tr>
+<tr><td class="h">291</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">            { $content= _xml_escape_cdata( join( '', @$content), $opt); }</td></tr>
+<tr><td class="h">292</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">        }</td></tr>
+<tr><td class="h">293</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">      else</td></tr>
+<tr><td class="h">294</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">        { </td></tr>
+<tr><td class="h">295</td><td><div class="c3">38</div></td><td></td><td></td><td></td><td></td><td><div>73</div></td><td class="s">          my %child_opt= %$opt;</td></tr>
+<tr><td class="h">296</td><td><div class="c3">38</div></td><td></td><td></td><td></td><td></td><td><div>57</div></td><td class="s">          $child_opt{indent_level}++;</td></tr>
+<tr><td class="h">297</td><td><div class="c3">38</div></td><td></td><td></td><td></td><td></td><td><div>196</div></td><td class="s">          foreach my $child ($node->content_list) </td></tr>
+<tr><td class="h">298</td><td><div class="c3">38</div><div class="c3">12</div></td><td><div class="c3" title="T/F"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html#L298">100</a></div></td><td></td><td></td><td></td><td><div>273</div><div>60</div></td><td class="s">            { if( ref $child) { $content .= $child->as_XML_indented( \%child_opt ); }</td></tr>
+<tr><td class="h">299</td><td><div class="c3">26</div></td><td></td><td></td><td></td><td></td><td><div>50</div></td><td class="s">              else            { $content .=  _xml_escape_text( $child);             }</td></tr>
+<tr><td class="h">300</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
+<tr><td class="h">301</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">        }</td></tr>
+<tr><td class="h">302</td><td><div class="c3">38</div></td><td></td><td></td><td></td><td></td><td><div>86</div></td><td class="s">      $xml .= $content;</td></tr>
+<tr><td class="h">303</td><td colspan="7"></td></tr><tr><td class="h">304</td><td><div class="c3">38</div><div class="c3">8</div></td><td><div class="c3" title="T/F"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html#L304">100</a></div></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--condition.html#L304">100</a></div></td><td></td><td></td><td><div>138</div><div>11</div></td><td class="s">      if( $extra_newline{$lc_name} && $content ne '' ) { $xml.= $pre_tag_indent; }</td></tr>
+<tr><td class="h">305</td><td><div class="c3">38</div></td><td><div class="c0" title="T/-"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html#L305">50</a></div></td><td></td><td></td><td></td><td><div>98</div></td><td class="s">      $xml.= "</$name>" unless $HTML::Tagset::emptyElement{$lc_name};</td></tr>
+<tr><td class="h">306</td><td><div class="c3">38</div></td><td><div class="c3" title="T/F"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html#L306">100</a></div></td><td></td><td></td><td></td><td><div>82</div></td><td class="s">      $xml .="\n" if( !$opt->{indent_level});</td></tr>
+<tr><td class="h">307</td><td colspan="7"></td></tr><tr><td class="h">308</td><td><div class="c3">38</div></td><td></td><td></td><td></td><td></td><td><div>202</div></td><td class="s">      return $xml;</td></tr>
+<tr><td class="h">309</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">    }</td></tr>
+<tr><td class="h">310</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
+<tr><td class="h">311</td><td colspan="7"></td></tr><tr><td class="h">312</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub _start_tag</td></tr>
+<tr><td class="h">313</td><td><div class="c3">76</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L313">76</a></div></td><td></td><td><div>88</div></td><td class="s">  { my( $node)= @_;</td></tr>
+<tr><td class="h">314</td><td><div class="c3">76</div></td><td></td><td></td><td></td><td></td><td><div>88</div></td><td class="s">    my $name = $node->{'_tag'};</td></tr>
+<tr><td class="h">315</td><td><div class="c3">76</div></td><td></td><td></td><td></td><td></td><td><div>94</div></td><td class="s">    my $start_tag.= "<$name";</td></tr>
+<tr><td class="h">316</td><td><div class="c3">76</div></td><td></td><td></td><td></td><td></td><td><div>344</div></td><td class="s">    foreach my $att_name (sort keys %$node) </td></tr>
+<tr><td class="h">317</td><td><div class="c3">400</div></td><td><div class="c0" title="T/-"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html#L317">50</a></div></td><td><div class="c0"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--condition.html#L317">25</a></div></td><td></td><td></td><td><div>1811</div></td><td class="s">      { next if( (!length $att_name) ||  ($att_name=~ m{^_}) || ($att_name eq '/') );</td></tr>
+<tr><td class="h">318</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">        my $well_formed_att_name= well_formed_name( $att_name);</td></tr>
+<tr><td class="h">319</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">        $start_tag .= qq{ $well_formed_att_name="} . _xml_escape_attribute_value( $node->{$att_name}) . qq{"};</td></tr>
+<tr><td class="h">320</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
+<tr><td class="h">321</td><td><div class="c3">76</div></td><td><div class="c0" title="-/F"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html#L321">50</a></div></td><td></td><td></td><td></td><td><div>220</div></td><td class="s">    $start_tag.= $HTML::Tagset::emptyElement{lc $name} ? " />" : ">";</td></tr>
+<tr><td class="h">322</td><td><div class="c3">76</div></td><td></td><td></td><td></td><td></td><td><div>119</div></td><td class="s">    return $start_tag;</td></tr>
+<tr><td class="h">323</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">  }</td></tr>
+<tr><td class="h">324</td><td colspan="7"></td></tr><tr><td class="h">325</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub well_formed_name</td></tr>
+<tr><td class="h">326</td><td><div class="c0">0</div></td><td></td><td></td><td><div class="c0"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L326">0</a></div></td><td></td><td><div>0</div></td><td class="s">  { my( $name)= @_;</td></tr>
+<tr><td class="h">327</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">    $name=~ s{[^\w:_-]+}{_}g;</td></tr>
+<tr><td class="h">328</td><td><div class="c0">0</div><div class="c0">0</div></td><td><div class="c0" title="-/-"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html#L328">0</a></div></td><td></td><td></td><td></td><td><div>0</div><div>0</div></td><td class="s">    if( $name=~ m{^\d}) { $name= "a$name"; }</td></tr>
+<tr><td class="h">329</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">    return $name;</td></tr>
+<tr><td class="h">330</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">  }</td></tr>
+<tr><td class="h">331</td><td colspan="7"></td></tr><tr><td class="h">332</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub _indent_level</td></tr>
+<tr><td class="h">333</td><td><div class="c0">0</div></td><td></td><td></td><td><div class="c0"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L333">0</a></div></td><td></td><td><div>0</div></td><td class="s">  { my( $node)= @_;</td></tr>
+<tr><td class="h">334</td><td><div class="c0">0</div><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div><div>0</div></td><td class="s">    my $level= scalar grep { !$HTML::Tagset::isPhraseMarkup{lc $_->{_tag}} } $node->lineage;</td></tr>
+<tr><td class="h">335</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">    return $level;</td></tr>
+<tr><td class="h">336</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">  }</td></tr>
+<tr><td class="h">337</td><td colspan="7"></td></tr><tr><td class="h">338</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">{ my( $indent, %extra_newline, $nl);</td></tr>
+<tr><td class="h">339</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">  BEGIN </td></tr>
+<tr><td class="h">340</td><td><div class="c3">65</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L340">65</a></div></td><td></td><td><div>207</div></td><td class="s">    { $indent= '  '; </td></tr>
+<tr><td class="h">341</td><td><div class="c3">65</div></td><td></td><td></td><td></td><td></td><td><div>113</div></td><td class="s">      $nl= "\n";</td></tr>
+<tr><td class="h">342</td><td><div class="c3">65</div><div class="c3">650</div></td><td></td><td></td><td></td><td></td><td><div>120</div><div>20872</div></td><td class="s">      %extra_newline= map { $_ => 1 } qw(html head body script div table tr form ol ul);</td></tr>
+<tr><td class="h">343</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">    }</td></tr>
+<tr><td class="h">344</td><td colspan="7"></td></tr><tr><td class="h">345</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">  sub indents</td></tr>
+<tr><td class="h">346</td><td><div class="c0">0</div></td><td></td><td></td><td><div class="c0"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L346">0</a></div></td><td></td><td><div>0</div></td><td class="s">    { my( $opt, $name)= @_;</td></tr>
+<tr><td class="h">347</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">      my $indents= { pre_start_tag => '', post_start_tag => '', pre_end_tag => '', post_end_tag => ''};</td></tr>
+<tr><td class="h">348</td><td><div class="c0">0</div></td><td><div class="c0" title="-/-"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html#L348">0</a></div></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">      if( $opt->{indented})</td></tr>
+<tr><td class="h">349</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">        { my $indent_level= $opt->{indent_level};</td></tr>
+<tr><td class="h">350</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">          my $wrapping_nl= $nl; </td></tr>
+<tr><td class="h">351</td><td><div class="c0">0</div><div class="c0">0</div><div class="c0">0</div></td><td><div class="c0" title="-/-"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html#L351">0</a></div></td><td></td><td></td><td></td><td><div>0</div><div>0</div><div>0</div></td><td class="s">          if( !defined( $indent_level)) { $indent_level = 0; $wrapping_nl= ''; }</td></tr>
+<tr><td class="h">352</td><td><div class="c0">0</div></td><td><div class="c0" title="-/-"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html#L352">0</a></div></td><td><div class="c0"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--condition.html#L352">0</a></div></td><td></td><td></td><td><div>0</div></td><td class="s">          if( $HTML::Tagset::isKnown{lc $name} && !$HTML::Tagset::isPhraseMarkup{lc $name} && $indent_level > 0) </td></tr>
+<tr><td class="h">353</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">            { $indents->{pre_start_tag}= $wrapping_nl . ($indent x $indent_level); }</td></tr>
+<tr><td class="h">354</td><td><div class="c0">0</div></td><td><div class="c0" title="-/-"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html#L354">0</a></div></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">          if( $extra_newline{lc $name})</td></tr>
+<tr><td class="h">355</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">            { $indents->{post_start_tag}= $nl; </td></tr>
+<tr><td class="h">356</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">              $indents->{pre_end_tag}= $nl . ($indent x $indent_level);</td></tr>
+<tr><td class="h">357</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
+<tr><td class="h">358</td><td><div class="c0">0</div></td><td><div class="c0" title="-/-"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html#L358">0</a></div></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">          if( $indent_level == 0) </td></tr>
+<tr><td class="h">359</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">            { $indents->{post_end_tag} = $wrapping_nl; }</td></tr>
+<tr><td class="h">360</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">        }</td></tr>
+<tr><td class="h">361</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">      return $indents;</td></tr>
+<tr><td class="h">362</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">    }</td></tr>
+<tr><td class="h">363</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
+<tr><td class="h">364</td><td colspan="7"></td></tr><tr><td class="h">365</td><td colspan="7"></td></tr><tr><td class="h">366</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub _xml_escape_attribute_value</td></tr>
+<tr><td class="h">367</td><td><div class="c0">0</div></td><td></td><td></td><td><div class="c0"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L367">0</a></div></td><td></td><td><div>0</div></td><td class="s">  { my( $text)= @_;</td></tr>
+<tr><td class="h">368</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">    $text=~ s{([&<>"])}{$CHAR2DEFAULT_ENT{$1}}g; # escape also quote, as it is the attribute separator</td></tr>
+<tr><td class="h">369</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">    return $text;</td></tr>
+<tr><td class="h">370</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">  }</td></tr>
+<tr><td class="h">371</td><td colspan="7"></td></tr><tr><td class="h">372</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub _xml_escape_text</td></tr>
+<tr><td class="h">373</td><td><div class="c3">74</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L373">74</a></div></td><td></td><td><div>103</div></td><td class="s">  { my( $text)= @_;</td></tr>
+<tr><td class="h">374</td><td><div class="c3">74</div></td><td></td><td></td><td></td><td></td><td><div>894</div></td><td class="s">    $text=~ s{([&<>])}{$CHAR2DEFAULT_ENT{$1}}g;</td></tr>
+<tr><td class="h">375</td><td><div class="c3">74</div></td><td></td><td></td><td></td><td></td><td><div>640</div></td><td class="s">    return $text;</td></tr>
+<tr><td class="h">376</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">  }</td></tr>
+<tr><td class="h">377</td><td colspan="7"></td></tr><tr><td class="h">378</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub _xml_escape_comment</td></tr>
+<tr><td class="h">379</td><td><div class="c0">0</div></td><td></td><td></td><td><div class="c0"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L379">0</a></div></td><td></td><td><div>0</div></td><td class="s">  { my( $text)= @_;</td></tr>
+<tr><td class="h">380</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">    $text=~ s{([&<>])}{$CHAR2DEFAULT_ENT{$1}}g;</td></tr>
+<tr><td class="h">381</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">    $text=~ s{--}{-&#45;}g; # can't have double --'s in XML comments</td></tr>
+<tr><td class="h">382</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">    return $text;</td></tr>
+<tr><td class="h">383</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">  }</td></tr>
+<tr><td class="h">384</td><td colspan="7"></td></tr><tr><td class="h">385</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub _xml_escape_cdata</td></tr>
+<tr><td class="h">386</td><td><div class="c0">0</div></td><td></td><td></td><td><div class="c0"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L386">0</a></div></td><td></td><td><div>0</div></td><td class="s">  { my( $text, $opt)= @_;</td></tr>
+<tr><td class="h">387</td><td><div class="c0">0</div></td><td><div class="c0" title="-/-"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html#L387">0</a></div></td><td><div class="c0"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--condition.html#L387">0</a></div></td><td></td><td></td><td><div>0</div></td><td class="s">    if( $opt->{force_escape_cdata} || $text=~ m{[<&]})</td></tr>
+<tr><td class="h">388</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">      { $text=~ s{^\s*\Q<![CDATA[}{}s;</td></tr>
+<tr><td class="h">389</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">        $text=~ s{\Q]]>\E\s*$}{}s;</td></tr>
+<tr><td class="h">390</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">        $text=~ s{]]>}{]]&#62;}g; # can't have]]> in CDATA</td></tr>
+<tr><td class="h">391</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">        $text=  "<![CDATA[$text]]>";</td></tr>
+<tr><td class="h">392</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
+<tr><td class="h">393</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">    return $text;</td></tr>
+<tr><td class="h">394</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">  }</td></tr>
+<tr><td class="h">395</td><td colspan="7"></td></tr><tr><td class="h">396</td><td colspan="7"></td></tr><tr><td class="h">397</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">package HTML::TreeBuilder::XPath::TextNode;</td></tr>
+<tr><td class="h">398</td><td colspan="7"></td></tr><tr><td class="h">399</td><td><div class="c3">65</div><div class="c3">65</div><div class="c3">65</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L399">65</a></div></td><td></td><td><div>265</div><div>64</div><div>3201</div></td><td class="s">use base 'HTML::TreeBuilder::XPath::Node';</td></tr>
+<tr><td class="h">400</td><td colspan="7"></td></tr><tr><td class="h">401</td><td><div class="c3">979</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L401">979</a></div></td><td></td><td><div>7879</div></td><td class="s">sub getParentNode { return shift->{_parent};    }</td></tr>
+<tr><td class="h">402</td><td><div class="c0">0</div></td><td></td><td></td><td><div class="c0"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L402">0</a></div></td><td></td><td><div>0</div></td><td class="s">sub getValue      { return shift->{_content};   }</td></tr>
+<tr><td class="h">403</td><td><div class="c3">66</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L403">66</a></div></td><td></td><td><div>913</div></td><td class="s">sub isTextNode    { return 1;                   }</td></tr>
+<tr><td class="h">404</td><td><div class="c3">418</div></td><td><div class="c0" title="-/F"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html#L404">50</a></div></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L404">418</a></div></td><td></td><td><div>26489</div></td><td class="s">sub getAttributes { return wantarray ? () : []; }</td></tr>
+<tr><td class="h">405</td><td colspan="7"></td></tr><tr><td class="h">406</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s"># similar to HTML::Element as_XML</td></tr>
+<tr><td class="h">407</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub as_XML</td></tr>
+<tr><td class="h">408</td><td><div class="c3">22</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L408">22</a></div></td><td></td><td><div>3175</div></td><td class="s">  { my( $node, $entities)= @_;</td></tr>
+<tr><td class="h">409</td><td><div class="c3">22</div></td><td></td><td></td><td></td><td></td><td><div>38</div></td><td class="s">    my $content= $node->{_content};</td></tr>
+<tr><td class="h">410</td><td><div class="c3">22</div></td><td><div class="c0" title="-/F"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html#L410">50</a></div></td><td><div class="c0"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--condition.html#L410">33</a></div></td><td></td><td></td><td><div>141</div></td><td class="s">    if( $node->{_parent} && $node->{_parent}->{_tag} eq 'script')</td></tr>
+<tr><td class="h">411</td><td><div class="c0">0</div><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div><div>0</div></td><td class="s">      { $content=~ s{(&\w+;)}{HTML::Entities::decode($1)}eg; }</td></tr>
+<tr><td class="h">412</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">    else</td></tr>
+<tr><td class="h">413</td><td><div class="c3">22</div></td><td></td><td></td><td></td><td></td><td><div>34</div></td><td class="s">      { $content= HTML::Element::_xml_escape_text($content); }</td></tr>
+<tr><td class="h">414</td><td><div class="c3">22</div></td><td></td><td></td><td></td><td></td><td><div>126</div></td><td class="s">    return $content;</td></tr>
+<tr><td class="h">415</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">  }</td></tr>
+<tr><td class="h">416</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">*as_XML_compact  = *as_XML;</td></tr>
+<tr><td class="h">417</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">*as_XML_indented = *as_XML;</td></tr>
+<tr><td class="h">418</td><td colspan="7"></td></tr><tr><td class="h">419</td><td colspan="7"></td></tr><tr><td class="h">420</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub getPreviousSibling</td></tr>
+<tr><td class="h">421</td><td><div class="c3">99</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L421">99</a></div></td><td></td><td><div>106</div></td><td class="s">  { my $self= shift;</td></tr>
+<tr><td class="h">422</td><td><div class="c3">99</div></td><td></td><td></td><td></td><td></td><td><div>102</div></td><td class="s">    my $rank= $self->{_rank}; </td></tr>
+<tr><td class="h">423</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">    #unless( defined $self->{_rank})</td></tr>
+<tr><td class="h">424</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">    #  { warn "no rank for text node $self->{_content}, parent is $self->{_parent}->{_tag}\n"; }</td></tr>
+<tr><td class="h">425</td><td><div class="c3">99</div></td><td></td><td></td><td></td><td></td><td><div>93</div></td><td class="s">    my $parent= $self->{_parent};</td></tr>
+<tr><td class="h">426</td><td><div class="c3">99</div></td><td><div class="c0" title="-/F"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html#L426">50</a></div></td><td></td><td></td><td></td><td><div>705</div></td><td class="s">    return $rank ? $parent->_child_as_object( $parent->{_content}->[$rank-1], $rank-1) : undef;</td></tr>
+<tr><td class="h">427</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">  }</td></tr>
+<tr><td class="h">428</td><td colspan="7"></td></tr><tr><td class="h">429</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub getNextSibling</td></tr>
+<tr><td class="h">430</td><td><div class="c3">880</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L430">880</a></div></td><td></td><td><div>853</div></td><td class="s">  { my $self= shift;</td></tr>
+<tr><td class="h">431</td><td><div class="c3">880</div></td><td></td><td></td><td></td><td></td><td><div>795</div></td><td class="s">    my $rank= $self->{_rank};</td></tr>
+<tr><td class="h">432</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">    #unless( defined $self->{_rank})</td></tr>
+<tr><td class="h">433</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">    #  { warn "no rank for text node $self->{_content}, parent is $self->{_parent}->{_tag}\n"; }</td></tr>
+<tr><td class="h">434</td><td><div class="c3">880</div></td><td></td><td></td><td></td><td></td><td><div>760</div></td><td class="s">    my $parent= $self->{_parent};</td></tr>
+<tr><td class="h">435</td><td><div class="c3">880</div></td><td></td><td></td><td></td><td></td><td><div>1116</div></td><td class="s">    my $next_sibling= $parent->{_content}->[$rank+1];</td></tr>
+<tr><td class="h">436</td><td><div class="c3">880</div></td><td><div class="c0" title="-/F"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html#L436">50</a></div></td><td></td><td></td><td></td><td><div>5750</div></td><td class="s">    return defined( $next_sibling) ? $parent->_child_as_object( $next_sibling, $rank+1) : undef;</td></tr>
+<tr><td class="h">437</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">  }</td></tr>
+<tr><td class="h">438</td><td colspan="7"></td></tr><tr><td class="h">439</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub getRootNode</td></tr>
+<tr><td class="h">440</td><td><div class="c0">0</div></td><td></td><td></td><td><div class="c0"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L440">0</a></div></td><td></td><td><div>0</div></td><td class="s">  { return shift->{_parent}->getRootNode; }</td></tr>
+<tr><td class="h">441</td><td colspan="7"></td></tr><tr><td class="h">442</td><td><div class="c3">11</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L442">11</a></div></td><td></td><td><div>2071</div></td><td class="s">sub string_value { return shift->{_content}; }</td></tr>
+<tr><td class="h">443</td><td colspan="7"></td></tr><tr><td class="h">444</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s"># added to provide element-like methods to text nodes, for use by cmp</td></tr>
+<tr><td class="h">445</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub lineage </td></tr>
+<tr><td class="h">446</td><td><div class="c0">0</div></td><td></td><td></td><td><div class="c0"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L446">0</a></div></td><td></td><td><div>0</div></td><td class="s">  { my( $node)= @_;</td></tr>
+<tr><td class="h">447</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">    my $parent= $node->{_parent};</td></tr>
+<tr><td class="h">448</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">    return( $parent, $parent->lineage);</td></tr>
+<tr><td class="h">449</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">  }</td></tr>
+<tr><td class="h">450</td><td colspan="7"></td></tr><tr><td class="h">451</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub is_inside</td></tr>
+<tr><td class="h">452</td><td><div class="c0">0</div></td><td></td><td></td><td><div class="c0"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L452">0</a></div></td><td></td><td><div>0</div></td><td class="s">  { my( $text, $node)= @_;</td></tr>
+<tr><td class="h">453</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">    return $text->{_parent}->is_inside( $node);</td></tr>
+<tr><td class="h">454</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">  }</td></tr>
+<tr><td class="h">455</td><td colspan="7"></td></tr><tr><td class="h">456</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">1;</td></tr>
+<tr><td class="h">457</td><td colspan="7"></td></tr><tr><td class="h">458</td><td colspan="7"></td></tr><tr><td class="h">459</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">package HTML::TreeBuilder::XPath::Attribute;</td></tr>
+<tr><td class="h">460</td><td><div class="c3">65</div><div class="c3">65</div><div class="c3">65</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L460">65</a></div></td><td></td><td><div>25182</div><div>85</div><div>21210</div></td><td class="s">use base 'HTML::TreeBuilder::XPath::Node';</td></tr>
+<tr><td class="h">461</td><td colspan="7"></td></tr><tr><td class="h">462</td><td><div class="c3">11</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L462">11</a></div></td><td></td><td><div>1513</div></td><td class="s">sub getParentNode   { return $_[0]->{_elt}; }</td></tr>
+<tr><td class="h">463</td><td><div class="c3">22</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L463">22</a></div></td><td></td><td><div>402</div></td><td class="s">sub getValue        { return $_[0]->{_value}; }</td></tr>
+<tr><td class="h">464</td><td><div class="c3">3162</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L464">3162</a></div></td><td></td><td><div>43861</div></td><td class="s">sub getName         { return $_[0]->{_name} ; }</td></tr>
+<tr><td class="h">465</td><td><div class="c0">0</div><div class="c0">0</div></td><td></td><td></td><td><div class="c0"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L465">0</a></div></td><td></td><td><div>0</div><div>0</div></td><td class="s">sub getLocalName    { (my $name= $_[0]->{_name}) =~ s{^.*:}{}; $name; }</td></tr>
+<tr><td class="h">466</td><td><div class="c3">1347</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L466">1347</a></div></td><td></td><td><div>106823</div></td><td class="s">sub string_value    { return $_[0]->{_value}; }</td></tr>
+<tr><td class="h">467</td><td><div class="c3">18</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L467">18</a></div></td><td></td><td><div>1120</div></td><td class="s">sub to_number       { return XML::XPathEngine::Number->new( $_[0]->{_value}); }</td></tr>
+<tr><td class="h">468</td><td><div class="c0">0</div></td><td></td><td></td><td><div class="c0"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L468">0</a></div></td><td></td><td><div>0</div></td><td class="s">sub isAttributeNode { 1 }</td></tr>
+<tr><td class="h">469</td><td><div class="c0">0</div></td><td></td><td></td><td><div class="c0"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L469">0</a></div></td><td></td><td><div>0</div></td><td class="s">sub toString        { return qq{ $_[0]->{_name}="$_[0]->{_value}"}; }</td></tr>
+<tr><td class="h">470</td><td colspan="7"></td></tr><tr><td class="h">471</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s"># awfully inefficient, but hopefully this is called only for weird (read test-case) queries</td></tr>
+<tr><td class="h">472</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub getPreviousSibling</td></tr>
+<tr><td class="h">473</td><td><div class="c0">0</div></td><td></td><td></td><td><div class="c0"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L473">0</a></div></td><td></td><td><div>0</div></td><td class="s">  { my $self= shift;</td></tr>
+<tr><td class="h">474</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">    my $rank= $self->{_rank};</td></tr>
+<tr><td class="h">475</td><td><div class="c0">0</div></td><td><div class="c0" title="-/-"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html#L475">0</a></div></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">    return undef unless $rank;</td></tr>
+<tr><td class="h">476</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">    my %atts= $self->{_elt}->all_external_attr;</td></tr>
+<tr><td class="h">477</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">    my $previous_att_name= (sort keys %atts)[$rank-1]; </td></tr>
+<tr><td class="h">478</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">    return bless( { _name => $previous_att_name, </td></tr>
+<tr><td class="h">479</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">                             _value => $atts{$previous_att_name}, </td></tr>
+<tr><td class="h">480</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">                             _elt => $self->{_elt}, _rank => $rank-1, </td></tr>
+<tr><td class="h">481</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">                   }, 'HTML::TreeBuilder::XPath::Attribute'</td></tr>
+<tr><td class="h">482</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">                );</td></tr>
+<tr><td class="h">483</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">  }</td></tr>
+<tr><td class="h">484</td><td colspan="7"></td></tr><tr><td class="h">485</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub getNextSibling</td></tr>
+<tr><td class="h">486</td><td><div class="c0">0</div></td><td></td><td></td><td><div class="c0"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L486">0</a></div></td><td></td><td><div>0</div></td><td class="s">  { my $self= shift;</td></tr>
+<tr><td class="h">487</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">    my $rank= $self->{_rank};</td></tr>
+<tr><td class="h">488</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">    my %atts= $self->{_elt}->all_external_attr;</td></tr>
+<tr><td class="h">489</td><td><div class="c0">0</div></td><td></td><td><div class="c0"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--condition.html#L489">0</a></div></td><td></td><td></td><td><div>0</div></td><td class="s">    my $next_att_name= (sort keys %atts)[$rank+1] || return undef; </td></tr>
+<tr><td class="h">490</td><td><div class="c0">0</div></td><td></td><td></td><td></td><td></td><td><div>0</div></td><td class="s">    return bless( { _name => $next_att_name, _value => $atts{$next_att_name}, </td></tr>
+<tr><td class="h">491</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">                             _elt => $self->{_elt}, _rank => $rank+1, </td></tr>
+<tr><td class="h">492</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">                   }, 'HTML::TreeBuilder::XPath::Attribute'</td></tr>
+<tr><td class="h">493</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">                );</td></tr>
+<tr><td class="h">494</td><td colspan="7"></td></tr><tr><td class="h">495</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">  }</td></tr>
+<tr><td class="h">496</td><td colspan="7"></td></tr><tr><td class="h">497</td><td colspan="7"></td></tr><tr><td class="h">498</td><td colspan="7"></td></tr><tr><td class="h">499</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s"># added to provide element-like methods to attributes, for use by cmp</td></tr>
+<tr><td class="h">500</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub lineage </td></tr>
+<tr><td class="h">501</td><td><div class="c3">275</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L501">275</a></div></td><td></td><td><div>268</div></td><td class="s">  { my( $att)= @_;</td></tr>
+<tr><td class="h">502</td><td><div class="c3">275</div></td><td></td><td></td><td></td><td></td><td><div>264</div></td><td class="s">    my $elt= $att->{_elt};</td></tr>
+<tr><td class="h">503</td><td><div class="c3">275</div></td><td></td><td></td><td></td><td></td><td><div>992</div></td><td class="s">    return( $elt, $elt->lineage);</td></tr>
+<tr><td class="h">504</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">  }</td></tr>
+<tr><td class="h">505</td><td colspan="7"></td></tr><tr><td class="h">506</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub is_inside</td></tr>
+<tr><td class="h">507</td><td><div class="c3">275</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L507">275</a></div></td><td></td><td><div>265</div></td><td class="s">  { my( $att, $node)= @_;</td></tr>
+<tr><td class="h">508</td><td><div class="c3">275</div></td><td></td><td><div class="c0"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--condition.html#L508">33</a></div></td><td></td><td></td><td><div>1525</div></td><td class="s">    return ($att->{_elt} == $node) || $att->{_elt}->is_inside( $node);</td></tr>
+<tr><td class="h">509</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">  }</td></tr>
+<tr><td class="h">510</td><td colspan="7"></td></tr><tr><td class="h">511</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">1;</td></tr>
+<tr><td class="h">512</td><td colspan="7"></td></tr><tr><td class="h">513</td><td colspan="7"></td></tr><tr><td class="h">514</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">package HTML::TreeBuilder::XPath::Root;</td></tr>
+<tr><td class="h">515</td><td colspan="7"></td></tr><tr><td class="h">516</td><td><div class="c3">65</div><div class="c3">65</div><div class="c3">65</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L516">65</a></div></td><td></td><td><div>268</div><div>62</div><div>10353</div></td><td class="s">use base 'HTML::TreeBuilder::XPath::Node';</td></tr>
+<tr><td class="h">517</td><td colspan="7"></td></tr><tr><td class="h">518</td><td><div class="c3">275</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L518">275</a></div></td><td></td><td><div>2324</div></td><td class="s">sub getParentNode   { return (); }</td></tr>
+<tr><td class="h">519</td><td><div class="c3">1304</div><div class="c3">1304</div></td><td><div class="c3" title="T/F"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html#L519">100</a></div></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L519">1304</a></div></td><td></td><td><div>126152</div><div>6568</div></td><td class="s">sub getChildNodes   { my @content= ( $_[0]->{_root}); return wantarray ? @content : \@content; }</td></tr>
+<tr><td class="h">520</td><td><div class="c3">33</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L520">33</a></div></td><td></td><td><div>2696</div></td><td class="s">sub getAttributes   { return []        }</td></tr>
+<tr><td class="h">521</td><td><div class="c0">0</div></td><td></td><td></td><td><div class="c0"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L521">0</a></div></td><td></td><td><div>0</div></td><td class="s">sub isDocumentNode  { return 1         }</td></tr>
+<tr><td class="h">522</td><td><div class="c3">11</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L522">11</a></div></td><td></td><td><div>69</div></td><td class="s">sub getRootNode     { return $_[0]     }</td></tr>
+<tr><td class="h">523</td><td><div class="c3">11</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L523">11</a></div></td><td></td><td><div>50</div></td><td class="s">sub getName         { return           }</td></tr>
+<tr><td class="h">524</td><td><div class="c3">242</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L524">242</a></div></td><td></td><td><div>1991</div></td><td class="s">sub getNextSibling  { return           }</td></tr>
+<tr><td class="h">525</td><td><div class="c3">11</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L525">11</a></div></td><td></td><td><div>48</div></td><td class="s">sub getPreviousSibling { return        }</td></tr>
+<tr><td class="h">526</td><td colspan="7"></td></tr><tr><td class="h">527</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s"># added to provide element-like methods to root, for use by cmp</td></tr>
+<tr><td class="h">528</td><td><div class="c0">0</div></td><td></td><td></td><td><div class="c0"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L528">0</a></div></td><td></td><td></td><td class="s">sub lineage {  return ($_[0]); }</td></tr>
+<tr><td class="h">529</td><td><div class="c0">0</div></td><td></td><td></td><td><div class="c0"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L529">0</a></div></td><td></td><td></td><td class="s">sub is_inside { return 0; }</td></tr>
+<tr><td class="h">530</td><td><div class="c0">0</div></td><td><div class="c0" title="-/-"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html#L530">0</a></div></td><td></td><td><div class="c0"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html#L530">0</a></div></td><td></td><td></td><td class="s">sub cmp { return $_[1]->isa( ' HTML::TreeBuilder::XPath::Root') ? 0 : 1; }</td></tr>
+<tr><td class="h">531</td><td colspan="7"></td></tr><tr><td class="h">532</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">1;</td></tr>
+<tr><td class="h">533</td><td colspan="7"></td></tr></table>
+</body>
+</html>
 
--- /dev/null
+/* Stylesheet for Devel::Cover HTML reports */
+
+/* You may modify this file to alter the appearance of your coverage
+ * reports. If you do, you should probably flag it read-only to prevent
+ * future runs from overwriting it.
+ */
+
+/* Note: default values use the color-safe web palette. */
+
+body {
+       font-family: sans-serif;
+}
+
+h1 {
+       background-color: #3399ff;
+       border: solid 1px #999999;
+       padding: 0.2em;
+       -moz-border-radius: 10px;
+}
+
+a {
+       color: #000000;
+}
+a:visited {
+       color: #333333;
+}
+
+table {
+    border-collapse: collapse;
+       border-spacing: 0px;
+}
+tr {
+       text-align : center;
+       vertical-align: top;
+}
+th,.h {
+       background-color: #cccccc;
+       border: solid 1px #333333;
+    padding: 0em 0.2em;
+}
+td {
+       border: solid 1px #cccccc;
+}
+
+/* source code */
+pre,.s {
+       text-align: left;
+       font-family: monospace;
+       white-space: pre;
+       padding: 0em 0.5em 0em 0.5em;
+}
+
+/* Classes for color-coding coverage information:
+ *   c0  : path not covered or coverage < 75%
+ *   c1  : coverage >= 75%
+ *   c2  : coverage >= 90%
+ *   c3  : path covered or coverage = 100%
+ */
+.c0, .c1, .c2, .c3 { text-align: right; }
+.c0 {
+       background-color: #ff9999;
+       border: solid 1px #cc0000;
+}
+.c1 {
+       background-color: #ffcc99;
+       border: solid 1px #ff9933;
+}
+.c2 {
+       background-color: #ffff99;
+       border: solid 1px #cccc66;
+}
+.c3 {
+       background-color: #99ff99;
+       border: solid 1px #009900;
+}
 
--- /dev/null
+<!DOCTYPE html
+     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<!--
+This file was generated by Devel::Cover Version 0.71
+Devel::Cover is copyright 2001-2010, Paul Johnson (
[email protected])
+Devel::Cover is free. It is licensed under the same terms as Perl itself.
+The latest version of Devel::Cover should be available from my homepage:
+http://www.pjcj.net
+-->
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta>
+    <meta http-equiv="Content-Language" content="en-us"></meta>
+    <link rel="stylesheet" type="text/css" href="cover.css"></link>
+    <link rel="stylesheet" type="text/css" href="cover.css"></link>
+    <title>Coverage Summary</title>
+</head>
+<body>
+<h1>Coverage Summary</h1>
+<table>
+<tr><td class="h" align="right">Database:</td><td align="left">/home/mrodrigu/perl/html-treebuilder-xpath/cover_db</td></tr>
+</table>
+<div><br/></div>
+<table>
+<tr><th>file</th><th>stmt</th><th>bran</th><th>cond</th><th>sub</th><th>pod</th><th>time</th><th>total</th></tr>
+<tr><td align="left"><a href="blib-lib-HTML-TreeBuilder-XPath-pm.html">blib/lib/HTML/TreeBuilder/XPath.pm</a></td><td class="c0" title="219 / 337">65.0</td><td class="c0" title="58 / 122"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--branch.html">47.5</a></td><td class="c0" title="22 / 75"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--condition.html">29.3</a></td><td class="c0" title="69 / 100"><a href="blib-lib-HTML-TreeBuilder-XPath-pm--subroutine.html">69.0</a></td><td>n/a</td><td>100.0</td><td class="c0" title="368 / 634">58.0</td></tr>
+<tr><td align="left">Total</td><td class="c0" title="219 / 337">65.0</td><td class="c0" title="58 / 122">47.5</td><td class="c0" title="22 / 75">29.3</td><td class="c0" title="69 / 100">69.0</td><td>n/a</td><td>100.0</td><td class="c0" title="368 / 634">58.0</td></tr>
+</table>
+</body>
+</html>
 
@@ -7,7 +7,7 @@ use warnings; 
 
 use vars qw($VERSION);
 
-$VERSION = '0.11';
+$VERSION = '0.12';
 
 my %CHAR2DEFAULT_ENT= ( '&' => '&', '<' => '<', '>' => '>', '"' => '"');
 my %NUM2DEFAULT_ENT= ( '38' => 'amp', '60' => 'lt', '62' => 'gt', '"' => '"');
@@ -131,6 +131,7 @@ sub getParentNode 
     return $elt->{_parent} || bless { _root => $elt }, 'HTML::TreeBuilder::XPath::Root';
   }
 sub getName             { return shift->tag;   }
+sub getLocalName        { (my $name= $_[0]->tag) =~ s{^.*:}{}; $name; }
 sub getNextSibling      { my( $elt)= @_; 
                           my $parent= $elt->{_parent} || return undef;
                           return  $parent->_child_as_object( scalar $elt->right, ($elt->{_rank} || 0) + 1);
 
--- /dev/null
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use HTML::TreeBuilder::XPath;
+use Test::More tests => 9;
+
+use utf8;
+
+{ my $html=qq{<html>
+               <head></head>
+               <body xmlns:foo="http://foo.org">
+                 <!-- comment 1 -->
+                 <p>p1</p>
+                 <p>p2</p>
+                 <!-- comment 2 -->
+               </body>
+             };
+
+  my $tree  = HTML::TreeBuilder->new;
+  $tree->store_comments(1);
+  $tree->parse_content( $html);
+
+  is( $tree->findvalue( '/html/body/*[local_name()="p"][2]'), 'p2', 'local_name');
+  is( $tree->findnodes_as_string( '//p'), "<p>p1</p>\n<p>p2</p>\n", 'findnodes_as_string');
+}
+
+{ my $html=qq{<html><head></head><body><p>foo</p></body></html>};
+  my $tree= HTML::TreeBuilder->new_from_content( $html);
+  is( $tree->as_XML_compact, $html, 'as_XML_compact');
+  is( $tree->as_XML_indented, qq{<html>\n  <head></head>\n  <body>\n    <p>foo</p>\n  </body>\n</html>\n}, 'as_XML_indented');
+}
+
+{ my $html=qq{<html><head></head><body><img height="5" width="6" id="i1" /><img height="7" width="6" id="i2" /></body></html>};
+  my $tree= HTML::TreeBuilder->new_from_content( $html);
+  is( $tree->findvalue( '//img[@* > 6]/@id'), 'i2', '//img[@* > 6]/@id');
+  is( $tree->findvalue( '//img[@height < @width]/@id'), 'i1', '//img[@height < @width]/@id');
+  is( $tree->findvalue( '//img[@height < @width]/@id'), 'i1', '//img[@height < @width]/@id');
+  is( $tree->findvalue( '//img[@height < @width]/@id[1]'), 'i1', '//img[@height < @width]/@id[1]');
+  is( $tree->findvalue( '//img[preceding-sibling::img]/@id'), 'i2', '//img[preceding-sibling::img]/@id');
+}
+