Sorry, not a XML::Twig solution:
use strict;
use warnings;
use XML::Rules;
my $parser = XML::Rules->new(
rules => [
_default => 'raw',
item => 'as array',
orderedlist => sub {
delete $_[1]->{_content}; # remove the whitespace
for (my $inst = 1; $inst <= @{$_[1]->{item}}; $inst++) {
push @{$_[1]->{_content}}, "\n", [inst => "\t$inst.\t"
+], [item => $_[1]->{item}[$inst-1]];
}
push @{$_[1]->{_content}}, "\n";
delete $_[1]->{item};
return $_[0] => $_[1];
}
],
style => 'filter',
);
$parser->filter(\*DATA);
__DATA__
<chapter>
<chbody>
<exercises att="problems">
<title>Content</title>
<orderedlist numeration="number">
<item><para>Text1</para></item>
<item><para>Text2</para></item>
<item><para>Text3</para></item>
</orderedlist>
<orderedlist numeration="number">
<item><para>Text1</para></item>
<item><para>Text2</para></item>
<item><para>Text3</para></item>
<item><para>Text4</para></item>
</orderedlist>
</exercises>
</chbody>
</chapter>
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|