--- test/html-webhacc/cc.cgi 2007/06/27 13:30:15 1.3 +++ test/html-webhacc/cc.cgi 2007/06/30 14:51:10 1.6 @@ -45,7 +45,7 @@

Web Document Conformance Checker (beta)

-
+
Document URI
<@{[htescape $input_uri]}>
@@ -82,19 +82,19 @@

Parse Errors

-
    +
    ]; push @nav, ['#parse-errors' => 'Parse Error']; my $onerror = sub { my (%opt) = @_; if ($opt{column} > 0) { - print STDOUT qq[
  • Line $opt{line} column $opt{column}: ]; + print STDOUT qq[
    Line $opt{line} column $opt{column}
    \n]; } else { $opt{line}--; - print STDOUT qq[
  • Line $opt{line}: ]; + print STDOUT qq[
    Line $opt{line}
    \n]; } - print STDOUT qq[@{[htescape $opt{type}]}
  • \n]; + print STDOUT qq[
    @{[htescape $opt{type}]}
    \n]; }; $doc = $dom->create_document; @@ -107,7 +107,7 @@ } print STDOUT qq[ -
+
]; } elsif ($input_format eq 'application/xhtml+xml') { @@ -133,16 +133,16 @@

Parse Errors

- +
]; } else { print STDOUT qq[ +

Media type @{[htescape $input_format]} is not supported!

@@ -181,28 +182,97 @@

Document Errors

- +
]; + + if (@{$elements->{table}}) { + require JSON; + + print STDOUT qq[ +
+

Tables

+ + + + +]; + + my $i = 0; + for my $table_el (@{$elements->{table}}) { + $i++; + print STDOUT qq[

] . + get_node_link ($table_el) . q[

]; + + my $table = Whatpm::HTMLTable->form_table ($table_el); + + for (@{$table->{column_group}}, @{$table->{column}}, $table->{caption}) { + next unless $_; + delete $_->{element}; + } + + for (@{$table->{row_group}}) { + next unless $_; + next unless $_->{element}; + $_->{type} = $_->{element}->manakai_local_name; + delete $_->{element}; + } + + for (@{$table->{cell}}) { + next unless $_; + for (@{$_}) { + next unless $_; + for (@$_) { + $_->{id} = refaddr $_->{element} if defined $_->{element}; + delete $_->{element}; + } + } + } + + print STDOUT '
]; + } + + print STDOUT qq[
]; + } + + if (keys %{$elements->{term}}) { + print STDOUT qq[ +
+

Terms

+ +
+]; + for my $term (sort {$a cmp $b} keys %{$elements->{term}}) { + print STDOUT qq[
@{[htescape $term]}
]; + for (@{$elements->{term}->{$term}}) { + print STDOUT qq[
].get_node_link ($_).qq[
]; + } + } + print STDOUT qq[
]; + } } ## TODO: Show result @@ -250,14 +320,15 @@ my $node_id = 'node-'.refaddr $child; my $nt = $child->node_type; if ($nt == $child->ELEMENT_NODE) { - $r .= qq'
  • ' . htescape ($child->tag_name) . + my $child_nsuri = $child->namespace_uri; + $r .= qq[
  • ] . htescape ($child->tag_name) . ''; ## ISSUE: case if ($child->has_attributes) { $r .= '
      '; - for my $attr (sort {$a->[0] cmp $b->[0]} map { [$_->name, $_->value, 'node-'.refaddr $_] } + for my $attr (sort {$a->[0] cmp $b->[0]} map { [$_->name, $_->value, $_->namespace_uri, 'node-'.refaddr $_] } @{$child->attributes}) { - $r .= qq'
    • ' . htescape ($attr->[0]) . ' = '; ## ISSUE: case? + $r .= qq[
    • ] . htescape ($attr->[0]) . ' = '; ## ISSUE: case? $r .= '' . htescape ($attr->[1]) . '
    • '; ## TODO: children } $r .= '
    '; @@ -265,31 +336,32 @@ if ($node->has_child_nodes) { $r .= '
      '; - unshift @node, @{$child->child_nodes}, '
    '; + unshift @node, @{$child->child_nodes}, '
  • '; + } else { + $r .= ''; } } elsif ($nt == $child->TEXT_NODE) { - $r .= qq'
  • ' . htescape ($child->data) . '
  • '; + $r .= qq'
  • ' . htescape ($child->data) . '
  • '; } elsif ($nt == $child->CDATA_SECTION_NODE) { - $r .= qq'
  • <[CDATA[' . htescape ($child->data) . ']]>
  • '; + $r .= qq'
  • <[CDATA[' . htescape ($child->data) . ']]>
  • '; } elsif ($nt == $child->COMMENT_NODE) { - $r .= qq'
  • <!--' . htescape ($child->data) . '-->
  • '; + $r .= qq'
  • <!--' . htescape ($child->data) . '-->
  • '; } elsif ($nt == $child->DOCUMENT_NODE) { - $r .= qq'
  • Document
  • '; + $r .= qq'
  • Document'; if ($child->has_child_nodes) { $r .= '
      '; - unshift @node, @{$child->child_nodes}, '
    '; + unshift @node, @{$child->child_nodes}, '
  • '; } } elsif ($nt == $child->DOCUMENT_TYPE_NODE) { - $r .= qq'
  • <!DOCTYPE>
      '; - $r .= '
    • Name = @{[htescape ($child->name)]}
    • '; - $r .= '
    • Public identifier = @{[htescape ($child->public_id)]}
    • '; - $r .= '
    • System identifier = @{[htescape ($child->system_id)]}
    • '; + $r .= qq'
    • <!DOCTYPE>
        '; + $r .= qq[
      • Name = @{[htescape ($child->name)]}
      • ]; + $r .= qq[
      • Public identifier = @{[htescape ($child->public_id)]}
      • ]; + $r .= qq[
      • System identifier = @{[htescape ($child->system_id)]}
      • ]; $r .= '
    • '; } elsif ($nt == $child->PROCESSING_INSTRUCTION_NODE) { - $r .= qq'
    • <?@{[htescape ($child->target)]}?>'; - $r .= '
      • @{[htescape ($child->data)]}
    • '; + $r .= qq'
    • <?@{[htescape ($child->target)]} @{[htescape ($child->data)]}?>
    • '; } else { - $r .= qq'
    • @{[$child->node_type]} @{[htescape ($child->node_name)]}
    • '; # error + $r .= qq'
    • @{[$child->node_type]} @{[htescape ($child->node_name)]}
    • '; # error } } @@ -323,6 +395,11 @@ return join '/', @r; } # get_node_path +sub get_node_link ($) { + return qq[] . + htescape (get_node_path ($_[0])) . qq[]; +} # get_node_link + =head1 AUTHOR Wakaba . @@ -336,4 +413,4 @@ =cut -## $Date: 2007/06/27 13:30:15 $ +## $Date: 2007/06/30 14:51:10 $