--- loncom/xml/lonxml.pm 2002/12/09 22:40:18 1.220
+++ loncom/xml/lonxml.pm 2003/03/19 21:57:59 1.221.2.3
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# XML Parser Module
#
-# $Id: lonxml.pm,v 1.220 2002/12/09 22:40:18 albertel Exp $
+# $Id: lonxml.pm,v 1.221.2.3 2003/03/19 21:57:59 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -352,7 +352,7 @@ sub printtokenheader {
if ($target eq 'web') {
my %idhash=&Apache::lonnet::idrget($tudom,($tuname));
return
- '
'.
+ '
'.
'Checked out for '.$plainname.
'
User: '.$tuname.' at '.$tudom.
'
ID: '.$idhash{$tuname}.
@@ -693,7 +693,8 @@ sub inner_xmlparse {
if ($metamode<1) {
my $text=$token->[1];
if ($token->[0] eq 'C' && $target eq 'tex') {
- $text = '%'.$text."\n";
+ $text = '';
+# $text = '%'.$text."\n";
}
$result.=$text;
}
@@ -771,7 +772,7 @@ sub inner_xmlparse {
if ($token->[0] eq 'E') {
&end_tag($stack,$parstack,$token);
}
- }
+ }
if ($#$pars > -1) {
pop @$pars;
pop @Apache::lonxml::pwd;
@@ -1113,7 +1114,9 @@ sub store_counter {
sub get_all_text {
my($tag,$pars)= @_;
&Apache::lonxml::debug("Got a ".ref($pars));
+ my $gotfullstack=1;
if (ref($pars) ne 'ARRAY') {
+ $gotfullstack=0;
$pars=[$pars];
}
my $depth=0;
@@ -1122,7 +1125,8 @@ sub get_all_text {
if ( $tag =~ m:^/: ) {
my $tag=substr($tag,1);
#&Apache::lonxml::debug("have:$tag:");
- while (($depth >=0) && ($#$pars > -1)) {
+ my $top_empty=0;
+ while (($depth >=0) && ($#$pars > -1) && (!$top_empty)) {
while (($depth >=0) && ($token = $$pars[-1]->get_token)) {
#&Apache::lonxml::debug("e token:$token->[0]:$depth:$token->[1]:".$#$pars.":".$#Apache::lonxml::pwd);
if (($token->[0] eq 'T')||($token->[0] eq 'C')||($token->[0] eq 'D')) {
@@ -1144,6 +1148,16 @@ sub get_all_text {
pop(@$pars);
pop(@Apache::lonxml::pwd);
}
+ if (($depth >=0) && ($#$pars == 0) ) { &debug("here4");$top_empty=1; }
+ }
+ if ($top_empty && $depth >= 0) {
+ #never found the end tag ran out of text, throw error send back blank
+ &error('Never found end tag for <'.$tag.'>');
+ if ($gotfullstack) {
+ my $newstring=''.$tag.'>'.$result;
+ &Apache::lonxml::newparser($pars,\$newstring);
+ }
+ $result='';
}
} else {
while ($#$pars > -1) {