--- 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 {