--- loncom/homework/cleanxml/post_xml.pm 2016/01/20 00:40:39 1.8 +++ loncom/homework/cleanxml/post_xml.pm 2016/01/21 22:09:38 1.9 @@ -1,7 +1,7 @@ # The LearningOnline Network # Third step to clean a file. # -# $Id: post_xml.pm,v 1.8 2016/01/20 00:40:39 damieng Exp $ +# $Id: post_xml.pm,v 1.9 2016/01/21 22:09:38 damieng Exp $ # # Copyright Michigan State University Board of Trustees # @@ -128,6 +128,8 @@ sub post_xml { remove_useless_notsolved($root); + fix_comments($root); + fix_paragraphs_inside($root, \@all_block); remove_empty_style($root); @@ -1809,6 +1811,25 @@ sub remove_useless_notsolved { } } } + +# Use
 for multi-line comments without elements.
+sub fix_comments {
+  my ($root) = @_;
+  my $doc = $root->ownerDocument;
+  my @comments = $root->getElementsByTagName('comment');
+  foreach my $comment (@comments) {
+    my $first = $comment->firstChild;
+    if (defined $first) {
+      if ($first->nodeType == XML_TEXT_NODE && $first->nodeValue =~ /\n/ &&
+          !defined $first->nextSibling) {
+        my $pre = $doc->createElement('pre');
+        $comment->removeChild($first);
+        $comment->appendChild($pre);
+        $pre->appendChild($first);
+      }
+    }
+  }
+}
 
 # adds a paragraph inside if needed and calls fix_paragraph for all paragraphs (including new ones)
 sub fix_paragraphs_inside {