--- loncom/xml/lonxml.pm	2001/01/06 16:22:55	1.46
+++ loncom/xml/lonxml.pm	2001/02/13 00:15:49	1.51
@@ -24,7 +24,13 @@ sub register {
     $Apache::lonxml::alltags{$temptag}=$space;
   }
 }
-                                     
+
+sub printalltags {
+  my $temp;
+  foreach $temp (sort keys %Apache::lonxml::alltags) {
+    &Apache::lonxml::debug("$temp -- $Apache::lonxml::alltags{$temp}");
+  }
+}
 use Apache::style;
 use Apache::lontexconvert;
 use Apache::run;
@@ -44,10 +50,14 @@ sub xmlparse {
  if ($target eq 'meta') {
    $Apache::lonxml::textredirection = 0;
    $Apache::lonxml::on_offimport = 1;
+ } elsif ($target eq 'grade') {
+   $Apache::lonxml::textredirection = 0;
+   $Apache::lonxml::on_offimport = 0;
  } else {
    $Apache::lonxml::textredirection = 1;
    $Apache::lonxml::on_offimport = 0;
  }
+ #&printalltags();
  my @pars = ();
  @Apache::lonxml::pwd=();
  my $pwd=$ENV{'request.filename'};
@@ -110,7 +120,7 @@ sub xmlparse {
        #clear out any tags that didn't end
        while ($token->[1] ne $stack[$#stack] 
 	      && ($#stack > -1)) {
-	 &Apache::lonxml::error("Unbalanced tags in resource $stack['-1']");   
+	 &Apache::lonxml::warning("Unbalanced tags in resource $stack['-1']");   
 	 pop @stack;pop @parstack;&decreasedepth($token);
        }
        
@@ -184,7 +194,7 @@ sub recurse {
 	#clear out any tags that didn't end
 	while ($tokenpat->[1] ne $innerstack[$#innerstack] 
 	       && ($#innerstack > -1)) {
-	  &Apache::lonxml::error("Unbalanced tags in resource $innerstack['-1']");
+	  &Apache::lonxml::warning("Unbalanced tags in resource $innerstack['-1']");
 	  pop @innerstack;pop @innerparstack;&decreasedepth($tokenpat);
 	}
 	$partstring = &callsub("end_$tokenpat->[1]",
@@ -270,7 +280,7 @@ sub decreasedepth {
     $Apache::lonxml::olddepth=$Apache::lonxml::depth+1;
   }
   if (  $Apache::lonxml::depth < -1) {
-    &Apache::lonxml::error("Unbalanced tags in resource");   
+    &Apache::lonxml::warning("Unbalanced tags in resource");   
     $Apache::lonxml::depth='-1';
   }
   my $curdepth=join('_',@Apache::lonxml::depthcounter);
@@ -285,8 +295,9 @@ sub get_all_text {
  my $token;
  my $result='';
  my $tag=substr($tag,1); #strip the / off the tag
-# &Apache::lonxml::debug("have:$tag:");
+ #&Apache::lonxml::debug("have:$tag:");
  while (($depth >=0) && ($token = $pars->get_token)) {
+   #&Apache::lonxml::debug("token:$token->[0]:$depth:$token->[1]");
    if ($token->[0] eq 'T') {
      $result.=$token->[1];
    } elsif ($token->[0] eq 'S') {
@@ -300,6 +311,7 @@ sub get_all_text {
      }
    }
  }
+# &Apache::lonxml::debug("Exit:$result:");
  return $result
 }
 
@@ -321,7 +333,8 @@ sub parstring {
   map {
     unless ($_=~/\W/) {
       my $val=$token->[2]->{$_};
-      if ($val =~ m/^[\%\@]/) { $val="\\".$val; }
+      $val =~ s/([\%\@\\])/\$1/;
+      #if ($val =~ m/^[\%\@]/) { $val="\\".$val; }
       $temp .= "my \$$_=\"$val\";"
     }
   } @{$token->[3]};
@@ -343,7 +356,7 @@ sub handler {
   my $request=shift;
   
   my $target='web';
-#  $Apache::lonxml::debug=1;
+  $Apache::lonxml::debug=0;
   if ($ENV{'browser.mathml'}) {
     $request->content_type('text/xml');
   } else {
@@ -366,12 +379,19 @@ sub handler {
 
   $request->print('<body bgcolor="#FFFFFF">'."\n");
 
-  my $file = "/home/httpd/html".$request->uri;
+  my $file=&Apache::lonnet::filelocation("",$request->uri);
   my %mystyle;
-  my $result = '';
-  $result = Apache::lonxml::xmlparse($target, &Apache::lonnet::getfile($file),'',%mystyle);
+  my $result = ''; 
+  my $filecontents=&Apache::lonnet::getfile($file);
+  if ($filecontents == -1) {
+    &Apache::lonxml::error("<b> Unable to find <i>$file</i></b>");
+    $filecontents='';
+  } else {
+    $result = &Apache::lonxml::xmlparse($target,$filecontents,'',%mystyle);
+  }
   $request->print($result);
 
+
   $request->print('</body>');
   $request->print(&Apache::lontexconvert::footer());
   writeallows($request->uri);
@@ -384,9 +404,11 @@ sub debug {
     print "DEBUG:".$_[0]."<br>\n";
   }
 }
+
 sub error {
-#  print "ERROR:".$_[0]."<br>\n";
+  print "ERROR:".$_[0]."<br>\n";
 }
+
 sub warning {
   if ($Apache::lonxml::debug eq 1) {
     print "WARNING:".$_[0]."<br>\n";
@@ -395,21 +417,3 @@ sub warning {
 
 1;
 __END__
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-