- From: Lachlan Hunt <lachlan.hunt@lachy.id.au>
- Date: Thu, 09 Feb 2006 02:11:28 +1100
- To: Bjoern Hoehrmann <derhoermi@gmx.net>
- CC: Dominique Hazael-Massieux <dom@w3.org>, www-validator@w3.org
Bjoern Hoehrmann wrote:
> * Dominique Hazael-Massieux wrote:
>> When using the direct input form for validation with a FPI that the
>> system doesn't recognize, the validator defaults to an SGML-parsing,
>> even when there is an XML declaration at the top of the input. I think
>> the XML declaration should be a good enough hint to switch the
>> XML-parsing.
>
> <?xml version='1.0'?>
> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
> <HTML LANG=de>
> <HEAD>
> ...
>
> That's perfectly legal HTML content. The textarea validation essentially
> assumes text/html input and since W3C refuses to define how to tell HTML
> and non-HTML text/html content apart,
This could be solved by providing an explicit Content-Type field for the
direct input. It's relatively easy to implement, I did it my self in
about 3 hours. But it only took that long cause I've never written Perl
before, so I had to learn quickly and, at the same time, try and
understand what the script was doing; but anyway, here's what I did.
It's not perfect, I'm sure there are issues with it, but it's a start.
In the check script: (line numbers match the script in version 0.7.1,
they may have changed with subsequent updates since then)
around line 340: add this line:
$File->{Opt}->{'ContentType'} = $q->param('content-type') ?
$q->param('content-type') : '';
Around line 392, add this:
if (&conflict($File->{Opt}->{ContentType}, '(detect automatically)')) {
my ($mode, $ct, $charset) = &parse_content_type($File,
$File->{Opt}->{'ContentType'});
$File->{Mode} = $mode;
$File->{ContentType} = $ct;
$File->{Charset}->{HTTP} = lc $charset;
}
Finally, in the markup for the direct input form, add this:
<p><label><code>Content-Type:</code>
<select name="content-type">
<option value="text/html;charset=UTF-8"
selected="selected">text/html;charset=UTF-8 (HTML only)</option>
<option value="application/xhtml+xml">application/xhtml+xml
(recommended for XHTML)</option>
<option value="application/xml">application/xml</option>
<option value="text/xml">text/xml (not recommended)</option>
<option value="image/svg+xml">image/svg+xml</option>
</select></label><p>
This would probably also be useful for file upload and URI validation as
well on the extended interfaces, although they would need a "(detect
automatically)" option added to the form.
--
Lachlan Hunt
http://lachy.id.au/
Received on Wednesday, 8 February 2006 15:11:33 UTC