Current Path : /usr/local/lib/perl5/site_perl/5.8.9/XML/ |
FreeBSD hs32.drive.ne.jp 9.1-RELEASE FreeBSD 9.1-RELEASE #1: Wed Jan 14 12:18:08 JST 2015 root@hs32.drive.ne.jp:/sys/amd64/compile/hs32 amd64 |
Current File : //usr/local/lib/perl5/site_perl/5.8.9/XML/Element.pm |
require 5; package XML::Element; #Time-stamp: "2004-06-10 20:00:02 ADT" use HTML::Tagset (); use HTML::Element 3.08 (); $VERSION = '3.09'; @ISA = ('HTML::Element'); # Init: %emptyElement = (); foreach my $e (%HTML::Tagset::emptyElement) { $emptyElement{$e} = 1 if substr($e,0,1) eq '~' and $HTML::Tagset::emptyElement{$e}; } #-------------------------------------------------------------------------- #Some basic overrides: sub _empty_element_map { \%emptyElement } *_fold_case = \&HTML::Element::_fold_case_NOT; *starttag = \&HTML::Element::starttag_XML; *endtag = \&HTML::Element::endtag_XML; # TODO: override id with something that looks for xml:id too/instead? #-------------------------------------------------------------------------- #TODO: test and document this: # with no tagname set, assumes ALL all-whitespace nodes are ignorable! use strict; sub delete_ignorable_whitespace { my $under_hash = $_[1]; my(@to_do) = ($_[0]); if($under_hash and ref($under_hash) eq 'ARRAY') { $under_hash = { map {; $_ => 1 } @$under_hash }; } my $all = !$under_hash; my($i,$this,$children); while(@to_do) { $this = shift @to_do; $children = $this->content || next; if( ($all or $under_hash->{$this->tag}) and @$children ) { for($i = $#$children; $i >= 0; --$i) { # work backwards thru the list next if ref $children->[$i]; if($children->[$i] =~ m<^\s*$>s) { # all WS splice @$children, $i, 1; # delete it. } } } unshift @to_do, grep ref($_), @$children; # recurse } return; } #-------------------------------------------------------------------------- 1; __END__ =head1 NAME XML::Element - XML elements with the same interface as HTML::Element =head1 SYNOPSIS [See HTML::Element] =head1 DESCRIPTION This is just a subclass of HTML::Element. It works basically the same as HTML::Element, except that tagnames and attribute names aren't forced to lowercase, as they are in HTML::Element. L<HTML::Element> describes everything you can do with this class. =head1 CAVEATS Has currently no handling of namespaces. =head1 SEE ALSO L<XML::TreeBuilder> for a class that actually builds XML::Element structures. L<HTML::Element> for all documentation. L<XML::DOM> and L<XML::Twig> for other XML document tree interfaces. L<XML::Generator> for more fun. =head1 COPYRIGHT AND DISCLAIMERS Copyright (c) 2000,2004 Sean M. Burke. All rights reserved. This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. This program is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose. =head1 AUTHOR Sean M. Burke, E<lt>sburke@cpan.orgE<gt> =cut