Syntax error handling >=======================<
[This file explains how netrik handles syntax errors in HTML pages, why it does
so, and what to do about that. See index.txt or
index.html for an overview of available
netrik documentation.]
or:
Why does netrik always complain about HTML syntax errors??
or:
No matter what site I load, (almost) always I get error messages. That can't be OK?!
Well, it *is* OK... The problem is: Actually almost all sites *are* more or
less broken.
Other browsers simply ignore the errors, hoping that the effect will resemble
more or less what the author intended -- and nobody ever knows, but for some
little blemish maybe, where no one cares about. (If Netscape wasn't so tolerant
about syntax errors in the first place, we wouldn't have that problem today
:-() However, the browser can only "guess" what the author intended, and that
doesn't always work out; such errors can cause the page to be layouted
completely wrong, including missing text parts etc. That's why netrik warns
about them, so the user at least knows what the matter is, and also gets the
chance to tell the page author about the problem. (s.b.)
Note that XHTML even *requires* a browser to abort on syntax errors -- sadly,
XHTML is not very popular. (Yet?...)
Of course, it might also happen that netrik sees an error where there is none
-- but no such case is known yet, so that is quite unlike.
Can't I turn that off?
Well, actually, you can: There are the two options "--broken-html" and
"--ignore-broken". "--ignore-broken" will prevent netrik complaining about
*any* syntax errors, while "--broken-html" only turns off warnings about common
errors which in most cases can be guessed correctly and nicely worked around.
(But not always!)
Add "--broken-html" to your ~/.netrikrc file (see
config.* for details) to generally disable
halting on less important errors.
However, please avoid usage of these options if possible. We know that the way
the errors messages are presented now is quite insistent; we can't change that
behaviour as long as multi-windowing is not implemented, though. Thus, using
--broken-html probably can't be helped when using netrik seriously -- sadly
almost all pages on the Net are more or less broken. (But please try to avoid
--ignore-broken -- it's generally a bad idea to use this!)
Still, please take the (little) trouble to tell the page author about the
problem.
Reporting a problem
Normally you will find an e-mail address of the right contact at the bottom of
the page, or on some "contact" page. Most authors will be greatful for the
information, and will gladly fix the problem -- once and for all.
You can improve your chances by telling exactly what the problem is. To find
out, you can load the page again, but using the "--debug" option. While parsing
the page, netrik will dump the source in this mode. When an error is
encountered, the last charactacter printed before the error message is the
offending one. Note however that in some cases the real reason for the problem
may be somewhere before.
If the output is too big, you may either use the --dump option and pipe the
output through some pager (but note that the debug output is written to stderr,
so you'll need to redirect it: "netrik --debug --dump <url> 2>&1 |less" or
something the like), or you can use the "--correct-html" option, causing netrik
to abort after the first error is detected.
Alternatively, you can use the W3Cs (WWW Consortium) HTML validating service.
(http://validator.w3.org)
This will create a report with all problems nicely listed -- very helpful for
the page author.
A note on comments
Netrik now has full SGML comment parsing. The problem is that the comment
syntax in SGML is fairly complicated; most authors do not know it, and thus do
not know that putting a "--" string inside a comment normally generates errors.
In most cases these are quite obvious; netrik will print an error message, and
use a workaround which will work in most cases, but not always -- just like for
other typical errors.
However, there are some constructs which *are* valid SGML -- but do not make
what the author probably intended. "<!------>" is a typical example: It is
valid, but the comment doesn't terminate; everything behind it will also be
treated as part of the comment! As it is not an error, netrik can't print an
error message or apply a workaround; instead, just a warning is printed.
Often such an unterminated comment will generate other errors later, because it
interferes with other comments or because it stretches to the end of the file;
in such a case, the warning may help finding the problem. In other cases
however, no error is generated at all -- the warning is the only cue that
something went wrong.
|