The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
=head1 NAME

HTML::HTML5::DOM::HTMLDocument - implementation of the HTMLDocument interface of the HTML DOM

=head1 DESCRIPTION

HTML::HTML5::DOM::HTMLDocument is an implementation of the HTMLDocument interface of the HTML DOM. See L<HTML::HTML5::DOM> for a list of the conventions that have been used when translating the DOM to Perl.

=head2 HTML Elements

This class applies to the following HTML elements.

=over

=back

=head2 Inheritance

HTML::HTML5::DOM::HTMLDocument inherits methods from the following Perl classes.

=over

=item * L<HTML::HTML5::DOMutil::FancyISA>

=item * L<XML::LibXML::Augment::Document>

=item * L<XML::LibXML::Augment::Node>

=item * L<XML::LibXML::Document>

=item * L<XML::LibXML::Node>

=item * L<XML::LibXML::QuerySelector>

=back

=head2 Additional Methods

As well as its inherited methods, this class provides the following methods.

=over

=item * C<< AUTOLOAD >>

See L<perlsub> if you don't know the significance of the AUTOLOAD function. HTML::HTML5::DOM::HTMLDocument will pass through unknown menthods to the document's root element. So for example, C<< $document->setAttribute >> will actually set an attribute on the document's root element.

=item * C<< URL >>

Get/set the document's URL.

=item * C<< anchors >>

Returns all C<< <a> >> with a "name" attribute found in the document.

=item * C<< applets >>

Returns all C<< <applet> >> elements (and C<< <object codetype="application/java"> >> elements) found in the document.

=item * C<< body >>

Returns the document body.

=item * C<< characterSet >>

Returns the character set that the document was parsed as (if known). As C<charset> can be used as a setter, this is not necessarily the same as C<charset>.

=item * C<< charset >>

Getter/setter for the document encoding.

=item * C<< compatMode >>

Returns the string 'quirks' or 'limited quirks' or undef.

=item * C<< cookie >>

Ostensibly returns cookies associated with the document, but in this implementation always returns an empty string.

=item * C<< defaultCharset >>

Returns the string 'utf-8'.

=item * C<< doctype >>

This method is not implemented yet, but will eventually support the functionality defined in DOM Core 3.

=item * C<< documentURI >>

Alias for C<URL>.

=item * C<< domConfig >>

Ostensibly an object representing settings which will be used when C<normalize> is called. In practise, just returns an empty hashref that you can do with what you like.

=item * C<< domain >>

The documents URL's host name.

=item * C<< embeds >>

Returns all C<< <embed> >> elements found in the document.

=item * C<< forms >>

Returns all forms found in the document.

=item * C<< getElementById >>

The world-famous C<getElementById> method. The default XML::LibXML implementation of this does not work with HTML::HTML5::Parser documents, because HTML::HTML5::Parser lacks the ability to inform libxml which element to use as an ID. (libxml defaults to xml:id.) This implementation is XPath-based, thus slower.

=item * C<< head >>

Returns the document head.

=item * C<< images >>

Returns all images found in the document.

=item * C<< implementation >>

Returns the same as HTML::HTML5::DOM->getDOMImplementation.

=item * C<< inputEncoding >>

This method is not implemented yet, but will eventually support the functionality defined in DOM Core 3.

=item * C<< lastModified >>

Ostensibly returns the current document readiness, but this implementation always returns the string 'complete'.

=item * C<< links >>

Returns all C<< <a> >> and C<< <area> >> elements with an "href" attribute found in the document.

=item * C<< normalizeDocument >>

Alias for C<normalize>.

=item * C<< p5_tables >>

Returns all tables found in the document.

=item * C<< plugins >>

Returns all C<< <embed> >> elements found in the document.

=item * C<< referer >>

An alias for 'referrer' provided for the benefit of those who learnt to spell by reading HTTP RFCs.

=item * C<< referrer >>

Ostensibly returns the HTTP referer for the document, but in this implementation always returns an empty string.

=item * C<< renameNode >>

This method is not implemented yet, but will eventually support the functionality defined in DOM Core 3.

=item * C<< scripts >>

Returns all scripts found in the document.

=item * C<< strictErrorChecking >>

DOM seems a little vague as to what exactly constitutes 'strict'. This returns false.

=item * C<< title >>

Returns the document's title, from its C<< <title> >> element, with a little whitespace canonicalisation.

=item * C<< xmlEncoding >>

This method is not implemented yet, but will eventually support the functionality defined in DOM Core 3.

=item * C<< xmlStandalone >>

Called with an argument, acts as C<setStandalone>; called without an argument, acts as C<standalone>.

=item * C<< xmlVersion >>

Returrns undef for documents parsed using an HTML parser; 1.0 or 1.1 if parsed using libxml.

=back

=head1 BUGS

L<http://rt.cpan.org/Dist/Display.html?Queue=HTML-HTML5-DOM>.

=head1 SEE ALSO

L<HTML::HTML5::DOM>.

=head1 AUTHOR

Toby Inkster E<lt>tobyink@cpan.orgE<gt>.

=head1 COPYRIGHT AND LICENCE

This software is copyright (c) 2012, 2014 by Toby Inkster.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.

=head1 DISCLAIMER OF WARRANTIES

THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.