Diff for /loncom/homework/cleanxml/xml_to_loncapa.pm between versions 1.1 and 1.4

version 1.1, 2015/12/03 20:40:31 version 1.4, 2016/01/05 18:51:08
Line 49  my @simple_data = ('polygon', 'rectangle Line 49  my @simple_data = ('polygon', 'rectangle
   
 my @inline_responses = ('stringresponse','optionresponse','numericalresponse','formularesponse','mathresponse','organicresponse','reactionresponse','customresponse','externalresponse');  my @inline_responses = ('stringresponse','optionresponse','numericalresponse','formularesponse','mathresponse','organicresponse','reactionresponse','customresponse','externalresponse');
   
   # see http://www.w3.org/TR/html-polyglot/#empty-elements
   # and http://tiffanybbrown.com/2011/03/23/html5-does-not-allow-self-closing-tags/
   # HTML elements that do not have an empty content, and must never use a self-closing tag:
   my @non_empty_html = ('title','style','script','noscript','body','section','header','footer','article','aside','nav','h1','h2','h3','h4','h5','h6','div','p','li','dt','dd','caption','td','th','span','a','em','strong','b','i','sup','sub','pre','code','kbd','samp','cite','q','tt','ins','del','var','small','big','address','blockquote','bdo','ruby','rb','rp','rt','rtc','figure','figcaption','object','applet','video','audio','canvas','label','option','textarea','fieldset','legend','button','iframe');
   
   
 # Converts a file and return the modified contents  # Converts a file and return the modified contents
 sub convert_file {  sub convert_file {
Line 92  sub node_to_string { Line 97  sub node_to_string {
       $s .= ' ';        $s .= ' ';
       $s .= $attribute->nodeName;        $s .= $attribute->nodeName;
       $s .= '="';        $s .= '="';
       $s .= escape($attribute->nodeValue);        $s .= escape_attribute($attribute->nodeValue);
       $s .= '"';        $s .= '"';
     }      }
     if ($node->hasChildNodes()) {      if ($node->hasChildNodes() || string_in_array(\@non_empty_html, $tag)) {
       $s .= '>';        $s .= '>';
       foreach my $child ($node->childNodes) {        foreach my $child ($node->childNodes) {
         $s .= node_to_string($child);          $s .= node_to_string($child);
Line 110  sub node_to_string { Line 115  sub node_to_string {
   }    }
 }  }
   
 # Escapes a string for LON-CAPA output (used for text nodes, not attribute values)  # Escapes an attribute value
 sub escape {  sub escape_attribute {
   my ($s) = @_;    my ($s) = @_;
   $s =~ s/&/&/sg;    # normal XML escapes do not work with LON-CAPA, for instance with reactionresponse
   $s =~ s/</&lt;/sg;    #$s =~ s/&/&amp;/sg;
   $s =~ s/>/&gt;/sg;    #$s =~ s/</&lt;/sg;
   # quot and apos do not need to be escaped outside attribute values    #$s =~ s/>/&gt;/sg;
     $s =~ s/"/&quot;/sg;
   return $s;    return $s;
 }  }
   

Removed from v.1.1  
changed lines
  Added in v.1.4


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>