--- loncom/xml/lonxml.pm 2004/03/19 22:01:13 1.311 +++ loncom/xml/lonxml.pm 2004/03/31 05:24:00 1.315 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # XML Parser Module # -# $Id: lonxml.pm,v 1.311 2004/03/19 22:01:13 albertel Exp $ +# $Id: lonxml.pm,v 1.315 2004/03/31 05:24:00 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -59,7 +59,7 @@ package Apache::lonxml; use vars -qw(@pwd @outputstack $redirection $import @extlinks $metamode $evaluate %insertlist @namespace $prevent_entity_encode $errorcount $warningcount); +qw(@pwd @outputstack $redirection $import @extlinks $metamode $evaluate %insertlist @namespace $errorcount $warningcount); use strict; use HTML::LCParser(); use HTML::TreeBuilder(); @@ -141,9 +141,6 @@ $evaluate = 1; # stores the list of active tag namespaces @namespace=(); -# if 0 all high ASCII characters will be encoded into HTML Entities -$prevent_entity_encode=0; - # has the dynamic menu been updated to know about this resource $Apache::lonxml::registered=0; @@ -408,16 +405,17 @@ sub latex_special_symbols { $string=~s/([^\\])\&/$1\\\&/g; $string=~s/([^\\])\#/$1\\\#/g; } else { - $string=~s/([^\\])\%/$1\\\%/g; - $string=~s/([^\\])(\$|_)/$1\\$2/g; + $string=~s/\\/\\ensuremath{\\backslash}/g; + $string=~s/([^\\]|^)\%/$1\\\%/g; + $string=~s/([^\\]|^)(\$|_)/$1\\$2/g; $string=~s/\$\$/\$\\\$/g; $string=~s/\#\#/\#\\\#/g; - $string=~s/([^\\])(\~|\^)/$1\\$2\\strut /g; + $string=~s/([^\\]|^)(\~|\^)/$1\\$2\\strut /g; $string=~s/(>|<)/\\ensuremath\{$1\}/g; #more or less $string=&Apache::lonprintout::character_chart($string); # any & or # leftover should be safe to just escape - $string=~s/([^\\])\&/$1\\\&/g; - $string=~s/([^\\])\#/$1\\\#/g; + $string=~s/([^\\]|^)\&/$1\\\&/g; + $string=~s/([^\\]|^)\#/$1\\\#/g; #single { or } How to escape? } return $string; @@ -516,10 +514,6 @@ sub inner_xmlparse { } } - # Encode any high ASCII characters -# if (!$Apache::lonxml::prevent_entity_encode) { -# $result=&HTML::Entities::encode($result,"\200-\377"); -# } if ($Apache::lonxml::redirection) { $Apache::lonxml::outputstack['-1'] .= $result; } else { @@ -966,7 +960,7 @@ sub get_all_text { #never found the end tag ran out of text, throw error send back blank &error('Never found end tag for <'.$tag. '> current string
'.
-		   &HTML::Entities::encode($result).
+		   &HTML::Entities::encode($result,'<>&"').
 		   '
'); if ($gotfullstack) { my $newstring=''.$result; @@ -1143,7 +1137,7 @@ SIMPLECONTENT sub inserteditinfo { my ($result,$filecontents,$filetype)=@_; - $filecontents = &HTML::Entities::encode($filecontents); + $filecontents = &HTML::Entities::encode($filecontents,'<>&"'); # my $editheader='Edit below
'; my $xml_help = ''; if ($filetype eq 'html') { @@ -1328,7 +1322,7 @@ sub debug { $|=1; my $request=$Apache::lonxml::request; if (!$request) { $request=Apache->request; } - $request->print('
DEBUG:'.&HTML::Entities::encode($_[0])."
\n"); + $request->print('
DEBUG:'.&HTML::Entities::encode($_[0],'<>&"')."
\n"); } }