version 1.3, 2015/12/23 20:33:10
|
version 1.5, 2016/01/06 16:44:32
|
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 { |
my ($contents) = @_; |
my ($contents) = @_; |
|
|
my $dom_doc = XML::LibXML->load_xml(string => $contents); |
my $dom_doc = XML::LibXML->load_xml(string => $contents); |
add_outtext($dom_doc); |
my $root = $dom_doc->documentElement(); |
|
if (defined $root && $root->nodeName ne 'html') { |
|
add_outtext($dom_doc); |
|
} |
return node_to_string($dom_doc); |
return node_to_string($dom_doc); |
} |
} |
|
|
Line 95 sub node_to_string {
|
Line 103 sub node_to_string {
|
$s .= escape_attribute($attribute->nodeValue); |
$s .= escape_attribute($attribute->nodeValue); |
$s .= '"'; |
$s .= '"'; |
} |
} |
if ($node->hasChildNodes() || $tag eq 'script') { |
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); |