NAME

XML::Filter::TableWrapper - Wrap a table's cells in to a certain number of rows

SYNOPSIS

use XML::Filter::TableWrapper;
use XML::SAX::Machines qw( Pipeline );

## Ouput a table with 5 rows, the last row having 3 cells:
Pipeline(
    XML::Filter::TableWrapper->new(
        Columns => 3,   # The default is 5
    ),
    \*STDOUT,
)->parse_string( "<table>" . "<td/>" x 23 . "</table" );

DESCRIPTION

Takes a list of elements and inserts (by default) <tr>...</tr> elements to make an table with a specified number of columns (5 by default). By default, it assumes that the container element is named "{}table" (the "{}" means it is not namespaced), but this can be changed:

XML::Filter::TableWrapper->new(
    ListTags => "{$my_ns}rows",
    Columns  => 3,
);

for instance.

LIMITATIONS

These can be read as possible future features:

  • Be able to translate the container tag to some other, for instance:

    ListTags => {
        "{}ul" => {
            TableTag  => "{}table",
            RowTag    => "{}tr",
            CellTag   => "{}td",
        },
    }
  • Autoadapt if the user specifies empty "{}" namespaces and the events have no NamespaceURI defined, and vice versa.

  • Row filling instead of column filling.

  • Stripping of existing row tags, for "refilling" a table.

  • Callbacks to allow the various tags to be built, so they can have attributes. This would be a decent way of allowing greybar, for instance.

Columns
$h->Columns( 1024 );
my $columns = $h->Columns;

Set/get the number of columns to wrap to.

1 POD Error

The following errors were encountered while parsing the POD:

Around line 97:

'=item' outside of any '=over'

=over without closing =back