The W3C MarkUp Validation Service consists of an SGML Parser, an SGML catalog, a CGI program and it's configuration files. In addition it relies on a moderately large set of Perl modules for it's operation.
This document tries to draw a road map of the prerequisites and what the different parts of the system do. It is intended for system administrators and people interested in helping developing the validator. This is not end user documentation. See the User Manual for usage instructions.
Apart from a properly configured web server, the Validator needs a SGML parser -- that does all the hard work -- and several Perl modules used by the "check" CGI script.
The SGML parser we're currently using is OpenSP 1.5
,
which can be found on the OpenJade
home page.
The canonical list of Perl modules we use can be found in the source
for the "check" CGI script. There is a bunch of lines that of the form
"use Foo::Bar" where each "Foo::Bar" represents a module. Most modules
can be found on CPAN (minimum
versions in parenthesis after the name). The following
list was complete when CVS spit out:
$Date: 2002/11/30 16:45:33 $
. :-)
CGI (2.81)
CGI::Carp
File::Spec
HTML::Parser (3.25)
LWP::UserAgent (1.90)
Set::IntSpan
Text::Iconv
Text::Wrap
URI::Escape
The validator uses a number of configuration files -- most of which
are really mapping tables of some form -- to avoid having to check in
a new version of the code every time a new version of HTML comes out.
All configuration files can be found in
$CVSROOT/validator/htdocs/config/
.
To really understand what each does you should read the source, but here is a short description to get you started.
The TODO list for the Validator is online at <http://validator.w3.org/todo.html>. This is probably the best place to start.
However this list is by no means comprehensive. Feel free to suggest other features that should be on this list or send patches for your favourite feature.
Keep in mind that features should be of general utility and that the point if the validator is that it does an objective validation instead of just what some random developer happens to think is a Good Idea®. While extra features are nice, they shouldn't dilute the value of the validator as an objective check.