Hi experts,
I've problem in multilevel tag closing,i want to close the tags form the inner level then come to close its outer level
e.g
<P_Normal><list-bull></P_Normal>
<P_list-bull(1)>Use Microsoft Windows accessibility options to: </P_li
+st-bull(1)>
<P_list-simple(2)>– Magnify the display </P_list-simple(2)>
<P_list-simple(2)>– Change the size of text and icons </P_lis
+t-simple(2)>
<P_list-simple(2)>– Convert the text displayed into speech &#
+x0028;i.e. narrator) </P_list-simple(2)>
<P_list-simple(2)>– Change the contrast </P_list-simple(2)>
<P_list-simple(2)>– Display an onscreen keyboard </P_list-sim
+ple(2)>
<P_list-simple(2)>– Convert the mouse for left-handed use. </
+P_list-simple(2)>
<P_list-bull(1)>Deliver learning through an audio podcast rather than
+written handouts for visually impaired learners. </P_list-bull(1)>
<P_list-bull(1)>Increase the character size on handouts for visually i
+mpaired learners. </P_list-bull(1)>
<P_list-bull(1)>Adjust background colours and fonts to assist dyslexic
+ learners. </P_list-bull(1)>
<P_list-bull(1)><pg>13</pg>Provide feedbac
+k on written work using the comments facility and track changes rathe
+r than handwritten notes, so that the learners can change character s
+ize or use a text to speech application to hear feedback.</P_list-bul
+l(1)>
</list-bull>
my output should be like the below code
<list list-type="bullet">
<list-item><p>Use Microsoft Windows accessibility options to:
<list list-type="simple">
<list-item><p>– Magnify the display</p></list-item>
<list-item><p>– Change the size of text and icons</p></list-ite
+m>
<list-item><p>– Convert the text displayed into speech (i.e. na
+rrator)</p></list-item>
<list-item><p>– Change the contrast</p></list-item>
<list-item><p>– Display an onscreen keyboard</p></list-item>
<list-item><p>– Convert the mouse for left-handed use.</p></lis
+t-item>
</list></p></list-item>
<list-item><p>Deliver learning through an audio podcast rather than wr
+itten handouts for visually impaired learners.</p></list-item>
<list-item><p>Increase the character size on handouts for visually imp
+aired learners.</p></list-item>
<list-item><p>Adjust background colours and fonts to assist dyslexic l
+earners.</p></list-item>
<list-item><p><xref ref-type="page" id="page_13"/>Provide feedback on
+written work using the comments facility and track changes rather tha
+n handwritten notes, so that the learners can change character size o
+r use a text to speech application to hear feedback.</p></list-item>
</list>
i tried the below code but i gives single item list only i d't know where its wrong pls correct my mistake monk's
use strict;
my $inputfile = $ARGV[0];
open (IN,"$inputfile") || die ("Can't open the input file for reading"
+);
undef $/;
my $str = <IN>;
while($str =~ /<list-(bull)>(?:(?:(?!<\/list-bull>).)*)<\/list-\1>/sg
+i)
{
$str =~ s#<list-(bull)>(?:(?:(?!<\/list-bull>).)*)<\/list-\1>#&Lis
+t_find($&)#sgie;
}
sub List_find
{
my $line = @_[0];
my $currentlevel = 0;
while($line =~ /^[\s\S]*?<(P_list-(\w+)\((\d+)\))>(.*?)<\/\1>\s*/si)
{
my ($tag, $kind, $level, $text) = ($1, $2, $3, $4);
if ($currentlevel < $level) {
while($currentlevel < $level) {
$line = "\n<list list-type=\"$kind\">\n<list-item><p>";
$currentlevel++;
}
} elsif ($currentlevel > $level) {
while($currentlevel > $level) {
$currentlevel--;
$line ="</p></list-item>\n</list>\n";
}
$line = "</p></list-item>\n<list-item><p>";
} else {
$line = "</p></list-item>\n<list-item><p>";
}
$line .= $text;
# print $line;
}
while($currentlevel > 0) {
$currentlevel--;
$line .= "</p></list-item>\n</list>\n";
}
#print $line;
return "$line";
}
open (OUT,">$inputfile\.xml") || die ("Can't open the output file for
+writing");
print OUT $str;
close (OUT);
pls consider my problem