G'day Monks, I am struggling in XML::Twig for increment the tag content.
use strict;
use warnings;
use XML::Twig;
use XML::XPath;
use XML::Twig::XPath;
my $twigrp = new XML::Twig::XPath( pretty_print => 'indented_c',
+ # print format
+ keep_encoding => 1,
);
$twigrp->parse(\*DATA);
my %insbeforetag;
$insbeforetag{1} = [('//chbody//exercises/orderedlist/item/para', 'ins
+t', '\t{{Num}\.\t')];
for my $row (keys %insbeforetag){
for ($twigrp->findnodes($insbeforetag{$row}->[0]))
{
my $min_elt= XML::Twig::Elt->new( $insbeforetag{$row}->[1] =>
+$insbeforetag{$row}->[2]);
$min_elt->paste( before => $_);
}
}
$twigrp->print;
__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>
Output as:
<chapter>
<chbody>
<exercises att="problems">
<title>Content</title>
<orderedlist numeration="number">
<item>
<inst>\t{{Num}\.\t</inst>
<para>Text1</para></item>
<item>
<inst>\t{{Num}\.\t</inst>
<para>Text2</para></item>
<item>
<inst>\t{{Num}\.\t</inst>
<para>Text3</para></item></orderedlist>
<orderedlist numeration="number">
<item>
<inst>\t{{Num}\.\t</inst>
<para>Text1</para></item>
<item>
<inst>\t{{Num}\.\t</inst>
<para>Text2</para></item>
<item>
<inst>\t{{Num}\.\t</inst>
<para>Text3</para></item>
<item>
<inst>\t{{Num}\.\t</inst>
<para>Text4</para></item></orderedlist></exercises></chbody>
+</chapter>
But expected Output as:
<chapter>
<chbody>
<exercises att="problems">
<title>Content</title>
<orderedlist numeration="number">
<inst> 1. </inst><item><para>Text1</para></item>
<inst> 2. </inst><item><para>Text2</para></item>
<inst> 3. </inst><item><para>Text3</para></item>
</orderedlist>
<orderedlist numeration="number">
<inst> 1. </inst><item><para>Text1</para></item>
<inst> 2. </inst><item><para>Text2</para></item>
<inst> 3. </inst><item><para>Text3</para></item>
<inst> 4. </inst><item><para>Text4</para></item>
</orderedlist>
</exercises>
</chbody>
</chapter>
Tag content as "\t{{Num}}\.\t" will be " 1. " with orderedlist sequence. Each orderedlist {{Num}} will be reset. How to achive this?
Thanks in advance.
Regards,
Velusamy R.
eval"print uc\"\\c$_\""for split'','j)@,/6%@0%2,`e@3!-9v2)/@|6%,53!-9@2~j';