Whatpm::HTML::Serializer - HTML DOM Serializer
require Whatpm::HTML::Serializer; ## Serialize an HTML document my $html = Whatpm::HTML::Serializer->get_inner_html ($doc); ## NOTE: $html = $doc->inner_html is preferred. ## Serialize an HTML element my $html = Whatpm::HTML::Serializer->get_inner_html ($el); ## NOTE: $html = $el->inner_html is preferred. ## Serialize an HTML document fragment my $html = Whatpm::HTML::Serializer->get_inner_html ($df);
Whatpm::HTML::Serializer module provides a function that
implements the fragment serialization algorithm of HTML5. It can
be used to serialize a HTML
Element node into
an HTML document or fragment.
Note that the algorithm cannot be used to serialize an arbitrary DOM tree; an attempt to serialize a DOM that cannot be represented in a static HTML document (fragment) will result in an invalid document or in a document representing different DOM tree.
For example, the DOM tree:
+- Element |p| +- Element |ul|
... cannot be represented in HTML serialization. The serialization algorithm will generate an invalid HTML fragment:
... which represents another DOM tree:
+- Element |p| +- Element |ul| (with "invalid </p>" error)
... without raising any error or warning. This is a limitation of the HTML serialization format and the fragment serialization algorithm.
NOTE: Usually you don't have to call this module directly,
since the Message::DOM::Document manpage and the Message::DOM::Element manpage
modules implement the
inner_html attribute for
CODE, which will be invoked when an error occurs. If the algorithm is required to raise an
INVALID_STATE_ERRerror, i.e. if the algorithm is faced to a
Nodewhose type is different from any of ones supported by the algorithm, the
CODEis invoked with that
Nodeas an argument. It is expected for the
CODEto raise an exception. If no exception is raised, the
Nodeis ignored for the purpose of the algorithm.
If $onerror is omitted, an empty
CODE (which does nothing)
SCALARreference to the result of the HTML fragment serialization algorithm.
manakai's the Message::DOM::Document manpage and the Message::DOM::Element manpage
modules are implementing the
Copyright 2007 Wakaba <email@example.com>
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.