+=head3 Unrolling an array via a single sample element and a callback (<ul> container)
+
+This is a more advanced version of the previous method. Instead of
+cloning the sample element several times and calling
+C<replace_content> on the clone with the array element, a custom
+callback is called with the clone and array element.
+
+Here is the example from before.
+
+ <strong>Here are the things I need from the store:</strong>
+ <ul>
+ <li class="store_items">Sample item</li>
+ </ul>
+
+Code:
+
+ sub cb {
+ my ($data, $li) = @_;
+ $li->replace_content($data);
+ }
+
+ my $li = $tree->look_down(class => 'store_items');
+ my @items = qw(bread butter vodka);
+ $li->itercb(\@items, \&cb);
+
+Output is as before:
+
+ <html>
+ <head></head>
+ <body>Here are the things I need from the store:
+ <ul>
+ <li class="store_items">bread</li>
+ <li class="store_items">butter</li>
+ <li class="store_items">vodka</li>
+ </ul>
+ </body>
+ </html>
+
+Here is a more complex example (unrolling a table). HTML:
+
+ <table><thead><th>First Name<th>Last Name<th>Option</thead>
+ <tbody>
+ <tr><td class="first">First<td class="last">Last<td class="option">1
+ </tbody></table>
+
+Code:
+
+ sub tr_cb {
+ my ($data, $tr) = @_;
+ $tr->look_down(class => 'first')->replace_content($data->{first});
+ $tr->look_down(class => 'last')->replace_content($data->{last});
+ $tr->look_down(class => 'option')->replace_content($data->{option});
+ }
+
+ my @data = (
+ {first => 'Foo', last => 'Bar', option => 2},
+ {first => 'Bar', last => 'Bar', option => 3},
+ {first => 'Baz', last => 'Bar', option => 4},
+ );
+
+ my $tr = $tree->find('table')->find('tbody')->find('tr');
+ $tr->itercb(\@data, \&tr_cb);
+
+Produces:
+
+ <table><thead><th>First Name<th>Last Name<th>Option</thead>
+ <tbody>
+ <tr><td class="first">Foo<td class="last">Bar<td class="option">2
+ <tr><td class="first">Bar<td class="last">Bar<td class="option">3
+ <tr><td class="first">Baz<td class="last">Bar<td class="option">4
+ </tbody></table>
+