--- loncom/xml/lonxml.pm	2001/07/27 18:16:22	1.104
+++ loncom/xml/lonxml.pm	2001/08/07 16:54:14	1.106
@@ -13,12 +13,14 @@
 # 6/12,6/13 H. K. Ng
 # 6/16 Gerd Kortemeyer
 # 7/27 H. K. Ng
+# 8/7 Gerd Kortemeyer
 
 package Apache::lonxml; 
 use vars 
 qw(@pwd @outputstack $redirection $import @extlinks $metamode $evaluate %insertlist @namespace);
 use strict;
 use HTML::TokeParser;
+use HTML::TreeBuilder;
 use Safe;
 use Safe::Hole;
 use Math::Cephes qw(:trigs :hypers :bessels erf erfc);
@@ -132,6 +134,7 @@ sub fontsettings() {
 sub registerurl {
     my $forcereg=shift;
     if ($Apache::lonxml::registered) { return ''; }
+    $Apache::lonxml::registered=1;
     if (($ENV{'REQUEST_URI'}!~/^\/(res\/)*adm\//) || ($forcereg)) {
         my $hwkadd='';
         if ($ENV{'REQUEST_URI'}=~/\.(problem|exam|quiz|assess|survey|form)$/) {
@@ -280,6 +283,26 @@ sub xmlparse {
  return $finaloutput;
 }
 
+sub htmlclean {
+    my $raw=shift;
+
+    my $tree = HTML::TreeBuilder->new;
+    $tree->ignore_unknown(0);
+    
+    $tree->parse($raw);
+    my %emptyhash=();
+
+    my $output= $tree->as_HTML(undef,' ',\%emptyhash), "\n";
+     
+    $output=~s/\<(br|hr|img)([^\>\/]*)\>/\<$1$2 \/\>/gis;
+    $output=~s/\<\/(br|hr|img)\>//gis;
+    $output=~s/\<[\/]*(body|head|html)\>//gis;
+
+    $tree = $tree->delete;
+
+    return $output;
+}
+
 sub inner_xmlparse {
   my ($target,$stack,$parstack,$pars,$safeeval,$style_for_target)=@_;
   &Apache::lonxml::debug('Reentrant parser starting, again?');