The below provided list's as contains nested list. I need to fetch the maximum level value in <label> element and insert the value before the <list> element where the attribute appears as 'type="num"'.
For Example:
INPUT:
<list spitype="num" id="list1">
<list-item><label>1</label><para></para></list-item>
<list-item><label>2</label><para></para>
<list spitype="num" id="list1-1">
<list-item><label>1</label><para></para></list-item>
<list-item><label>2</label><para></para></list-item>
<list-item><label>3</label><para></para></list-item>
</list></list-item>
<list-item><label>3</label><para></para></list-item>
<list-item><label>4</label><para></para></list-item>
<list-item><label>5</label><para></para></list-item>
</list>
OUTPUT:
**<max-val-5/>**
<list spitype="num" id="list1">
<list-item><label>1</label><para></para></list-item>
<list-item><label>2</label><para></para>
**<max-val-3/>**
<list spitype="num" id="list1-1">
<list-item><label>1</label><para></para></list-item>
<list-item><label>2</label><para></para></list-item>
<list-item><label>3</label><para></para></list-item>
</list></list-item>
<list-item><label>3</label><para></para></list-item>
<list-item><label>4</label><para></para></list-item>
<list-item><label>5</label><para></para></list-item>
</list>
I have wrote this below code however I didn't get the output. The nested list doesn't not covered on this one. Could you please anyone can help on this will be appreciate.
$incnt=~s{(<list(?: |>)[^>]*>((?:(?!<\/list>).)*)<\/list>)}{
my $list=$1; my ($sbpre,$sbmatch,$sbpost,$slmatch,$LblWidthVal) = "";
if($list=~m/<list(?: |>)[^>]*type="num"[^>]*>/g)
{
$sbpre=$sbpre.$`; $sbmatch=$&; $sbpost=$';
$slmatch=$1 while($list=~m/<label>([^<>]*)<\/label>/sg);
$slmatch=~s/[.,:;\(\)\[\]\{\}]*//g;
$LblWidthVal = "<max-val-$slmatch/>";
$sbmatch = $LblWidthVal."\n".$sbmatch;
$sbpre = $sbpre.$sbmatch; $list = $sbpost;
}
if(length $sbpre) { $list = $sbpre.$sbpost; }
"$list";}igse;