Clinton Gormley > HTML-StripScripts-LibXML-0.12 > HTML::StripScripts::LibXML

Download:
HTML-StripScripts-LibXML-0.12.tar.gz

Dependencies

Annotate this POD

View/Report Bugs
Module Version: 0.12   Source  

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). If Context is Document, then it returns an XML::LibXML::Document object, otherwise it returns an XML::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 and output_end are not called. Instead, this module uses output_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.

syntax highlighting: