Take me over?
NAME
HTML::StripScripts::LibXML - XSS filter - outputs a LibXML Document or DocumentFragment
SYNOPSIS
use HTML::StripScripts::LibXML();
my $hss = HTML::StripScripts::LibXML->new(
{
Context => 'Document', ## HTML::StripScripts configuration
Rules => { ... },
},
strict_comment => 1, ## HTML::Parser options
strict_names => 1,
);
$hss->parse_file("foo.html");
$xml_doc = $hss->filtered_document;
OR
$xml_doc = $hss->filter_html($html);
DESCRIPTION
This class provides an easy interface to HTML::StripScripts
, using HTML::Parser
to parse the HTML, and returns an XML::LibXML::Document or XML::LibXML::DocumentFragment.
See HTML::Parser for details of how to customise how the raw HTML is parsed into tags, and HTML::StripScripts for details of how to customise the way those tags are filtered. This module is a subclass of HTML::StripScripts::Parser.
DIFFERENCES FROM HTML::StripScripts
- CONTEXT
-
HTML::StripScripts::LibXML still allows you to specify the
Context
of the HTML (Document, Flow, Inline, NoTags). IfContext
isDocument
, then it returns anXML::LibXML::Document
object, otherwise it returns anXML::LibXML::DocumentFragment
object. - TAG CALLBACKS
-
HTML::StripScripts allows you to use tag callbacks, for instance:
$hss = HTML::StripScripts->new({ Rules => { a => \&a_callback } }); sub a_callback { my ($filter,$element) = @_; # where $element = { # tag => 'a', # attr => { href => '/index.html' }, # content => 'Go to <b>Home</b> page', # } return 1; }
HTML::StripScripts::LibXML still gives you tag callbacks, but they look like this:
sub a_callback { my ($filter,$element) = @_; # where $element = { # tag => 'a', # attr => { href => '/index.html' }, # children => [ # XML::LibXML::Text --> 'Go to ', # XML::LibXML::Element --> 'b' # with child Text --> 'Home', # XML::LibXML::Text --> ' page', # ], # } return 1; }
- SUBCLASSING
-
The subs
output
,output_start
andoutput_end
are not called. Instead, this module usesoutput_stack_entry
which handles the tag callback, (and depending on the result of the tag callback) creates an element and adds its child nodes. Then it adds the element to the list of children for the parent tag.
CONSTRUCTORS
- new ( {CONFIG}, [PARSER_OPTIONS] )
-
Creates a new
HTML::StripScripts::LibXML
object.See HTML::StripScripts::Parser for details.
BUGS AND LIMITATIONS
- API - BETA
-
This is the first draft of this module, and currently there are no configuration options for the XML. I would welcome feedback from XML users as to how I could improve the interface.
For this reason, the API may change.
- REPORTING BUGS
-
Please report any bugs or feature requests to bug-html-stripscripts-libxml@rt.cpan.org, or through the web interface at http://rt.cpan.org.
SEE ALSO
HTML::Parser, HTML::StripScripts::Parser, HTML::StripScripts::Regex
AUTHOR
Clinton Gormley <clint@traveljury.com>
COPYRIGHT
Copyright (C) 2007 Clinton Gormley. All Rights Reserved.
LICENSE
This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.