Another HTML-lint 5 is based on the original Another HTML-lint and added support for HTML5 by Heartcore,Inc.
The original Another HTML-lint is used for basic logic and check features except HTML5.
As a HTML syntax checker, Mr. Neil Bowsers's Weblint is popular and also Mr. Masayasu Ishikawa's jweblint and Mr. Keisuke Yano's Libra are well known in Japan. Another HTML-lint was made with many ideas from them. Please notice that Another HTML-lint is not jweblint.
In the early 1997, Mr. Ishino installed jweblint into the office and started gateway service for internal use, making some adjustments in HTML and Perl script etc. After a while, different check results began to seem strange to him and that made him start analyzing of Weblint (jweblint) Perl script, for exmaple "in what kind of rules it checks HTML" and "How well it reflects DTD". As a result, he did not get very acceptable consequences.
Since Weblint is not designed for severe validation in the first place, it is written quite easily. Even so, it is too easy and has almost no data structure. It is just a series of ad hockery. For example, the only information for the order and frequency of tags appearance is <HTML></HTML> relative. Furthermore, as it is not abstracted, it is not applicative information. In addition, the handling of no end tag needed tags is not so correct and there is no information about which tags are allowed to be written as an element of other tags. It just checks a few nesting tags such as <A> and <Hn> as well as <LI> listing tags. He assumed it could be defined more clearly if it uses DTD inofrmation suitably. (This was as at June 1997, so might be different in the later versions)
Therefore, he had been using it with occasional adjustments for a while, however he came to think that creating a new HTML checker is much easier than keeping such adjustments making.
He did not want to make it too compliant with DTD as it could be bad for some WWW browsers which are not so strict about HTML evaluation. Just let SGML parser do such kind of checks. So it is designed to get DTD information as much as possible but to check them moderately, and is made from DTD simple parser. Therefore, it does not reflect DTD perfectly and some DTD are even distorted due to the actual behaviors of WWW browsers.
The biggest difference from specialist SGML parser is that Another HTML-lint checks many things which are not ruled in DTD and styles which are considered undesirable.
As described above, its check system is based on DTD, but unfortunately no DTD is provided/disclosed for Navigator(Mozilla), so he had to make it up.
After all, he was a beginner of Perl, so he had to start with learning and did most of the work on weekends and at night. He went through a lot of difficulties to get where he is.
Please note that he originally wrote it in Perl4 and moved it to Perl5 without drastic changes. Source is very messy.