Click here to Skip to main content
15,886,017 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Hi,I've problem in multilevel tag closing,i want to close the tags form the inner level then come to close its outer level
<p_normal><list-bull>
<p_list-bull(1)>Use Microsoft Windows accessibility options to:
<p_list-simple(2)>– Magnify the display
<p_list-simple(2)>– Change the size of text and icons
<p_list-simple(2)>– Convert the text displayed into speech (i.e. narrator)
<p_list-simple(2)>– Change the contrast
<p_list-simple(2)>– Display an onscreen keyboard
<p_list-simple(2)>– Convert the mouse for left-handed use.
<p_list-bull(1)>Deliver learning through an audio podcast rather than written handouts for visually impaired learners.
<p_list-bull(1)>Increase the character size on handouts for visually impaired learners.
<p_list-bull(1)>Adjust background colours and fonts to assist dyslexic learners.
my output should be like the below code
XML
<list list-type="bullet">
<list-item><p>Use Microsoft Windows accessibility options to:
<list list-type="simple">
<list-item><p>&#x2013; Magnify the display</p></list-item>
<list-item><p>&#x2013; Change the size of text and icons</p></list-item>
<list-item><p>&#x2013; Convert the text displayed into speech (i.e. narrator)</p></list-item>
<list-item><p>&#x2013; Change the contrast</p></list-item>
<list-item><p>&#x2013; Display an onscreen keyboard</p></list-item>
<list-item><p>&#x2013; Convert the mouse for left-handed use.</p></list-item>
</list></p></list-item>
<list-item><p>Deliver learning through an audio podcast rather than written handouts for visually impaired learners.</p></list-item>
<list-item><p>Increase the character size on handouts for visually impaired learners.</p></list-item>
<list-item><p>Adjust background colours and fonts to assist dyslexic learners.</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 than handwritten notes, so that the learners can change character size or 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
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>/sgi)
    {
    $str =~ s#<list-(bull)>(?:(?:(?!<\/list-bull>).)*)<\/list-\1>#&List_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
Posted
Updated 9-Jan-12 1:27am
v2

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900