- From: Olivier Thereaux via cvs-syncmail <cvsmail@w3.org>
- Date: Mon, 07 May 2007 19:18:00 +0000
- To: www-validator-cvs@w3.org
Update of /sources/public/validator/httpd/cgi-bin In directory hutz:/tmp/cvs-serv5008/httpd/cgi-bin Modified Files: check Log Message: for documents served as XML, and for which the root element is not <html>, the fallback to XHTML is not a great choice. Instead, we can perform a basic xml-wf checking, and report a positive result for these. Index: check =================================================================== RCS file: /sources/public/validator/httpd/cgi-bin/check,v retrieving revision 1.517 retrieving revision 1.518 diff -u -d -r1.517 -r1.518 --- check 7 May 2007 16:14:15 -0000 1.517 +++ check 7 May 2007 19:17:58 -0000 1.518 @@ -254,6 +254,8 @@ # Misc simple types. $File->{Mode} = 'SGML'; # Default parse mode is SGML. +# By default, perform validation (we may perform only xml-wf in some cases) +$File->{XMLWF_ONLY} = FALSE; # # Listrefs. $File->{Warnings} = []; # Warnings... @@ -588,8 +590,7 @@ # # Override DOCTYPE if user asked for it. if ($File->{Opt}->{DOCTYPE} - and not $File->{Opt}->{DOCTYPE} =~ /(Inline|detect)/i - and $File->{Opt}->{DOCTYPE} ne '1' ) { + and not $File->{Opt}->{DOCTYPE} =~ /(Inline|detect)/i) { $File = &override_doctype($File); } @@ -781,7 +782,7 @@ # # Force "XML" if type is an XML type and an FPI was not found. # Otherwise set the type to be the FPI. -if (&is_xml($File) and not $File->{DOCTYPE}) { +if (&is_xml($File) and not $File->{DOCTYPE} and lc($File->{Root}) ne 'html') { $File->{Version} = 'XML'; } else { $File->{Version} = $File->{DOCTYPE} unless $File->{Version}; @@ -962,7 +963,9 @@ $T->param(tip_uri => $tip->[0]); $T->param(tip_slug => $tip->[1]); - # + # Root Element + $T->param(root_element => $File->{Root}); + # Namespaces... $T->param(file_namespace => $File->{Namespace}); my %seen_ns = (); @@ -1102,7 +1105,9 @@ if ($File->{Opt}->{'Outline'}) { $T->param(file_outline => $File->{heading_outline}); } - + if ($File->{XMLWF_ONLY}){ + $T->param(xmlwf_only => TRUE); + } my $thispage = self_url_file($File); $T->param(file_thispage => $thispage); } @@ -2358,9 +2363,17 @@ } } + if ($err->{num} eq '187') + # filtering out no "document type declaration; will parse without validation" + # if root element is not html and mode is xml... + { + # since parsing was done without validation, result can only be "well-formed" + if ($File->{Mode} eq 'XML' and lc($File->{Root}) ne 'html') { + $File->{XMLWF_ONLY} = TRUE; + } + return; + } - # ... - $File->{'Is Valid'} = FALSE if $err->{type} eq 'E'; # Workaround for onsgmls as of 1.5 sometimes allegedly reporting errors # beyond EOL. If you see this warning in your web server logs, please @@ -2379,12 +2392,14 @@ $File->{Templates}->{Error}->param(fatal_parse_extid_msg => $err->{msg}); } - # No DOCTYPE. + # No DOCTYPE found! We are falling back to vanilla DTD if ($err->{msg} =~ m(prolog can\'t be omitted)) { - my $dtd = ($File->{Mode} eq 'XML' ? - 'XHTML 1.0 Transitional' : 'HTML 4.01 Transitional' ); - - add_warning('W09', {W09_dtd => $dtd}); + if (lc($File->{Root}) eq 'html') { + my $dtd = ($File->{Mode} eq 'XML' ? + 'XHTML 1.0 Transitional' : 'HTML 4.01 Transitional' ); + add_warning('W09', {W09_dtd => $dtd}); + } + return; # Don't report this as a normal error. } @@ -2392,6 +2407,8 @@ abort_if_error_flagged($File, O_DOCTYPE); push @{$File->{Errors}}, $err; + # ... + $File->{'Is Valid'} = FALSE if $err->{type} eq 'E'; if (defined $mess->{aux_message}) {
Received on Monday, 7 May 2007 19:18:06 UTC