<HTML><BODY style="word-wrap: break-word; -khtml-nbsp-mode: space; -khtml-line-break: after-white-space; ">I've released the underlying technology behind <A href="http://www.badpage.info">http://www.badpage.info</A> and placed it on squeaksource.<DIV><BR class="khtml-block-placeholder"></DIV><DIV style="text-align: justify;"><FONT class="Apple-style-span" face="Courier" size="3"><SPAN class="Apple-style-span" style="font-size: 11px;"><A href="http://www.squeaksource.com/htmlcssparser">http://www.squeaksource.com/htmlcssparser</A></SPAN></FONT></DIV><DIV style="text-align: justify;"><FONT class="Apple-style-span" face="Courier" size="3"><SPAN class="Apple-style-span" style="font-size: 11px;"><BR class="khtml-block-placeholder"></SPAN></FONT></DIV><P align="justify" style="margin-top: 0px; margin-right: 0px; margin-bottom: 5px; margin-left: 0px; "><FONT class="Apple-style-span" face="Arial" size="4"><SPAN class="Apple-style-span" style="font-size: 15px;"><B>Project Description</B></SPAN></FONT></P><DIV style="text-align: justify;"><FONT class="Apple-style-span" face="Courier" size="3"><SPAN class="Apple-style-span" style="font-size: 11px;"></SPAN></FONT></DIV><DIV style="text-align: justify;"><FONT class="Apple-style-span" face="Geneva" size="3"><SPAN class="Apple-style-span" style="font-size: 11px;">This is an HTML and CSS parser and DOM that handles rotten HTML and broken CSS quite well. I wrote it to provide validation of web pages and it is the underlying technology behind <A href="http://www.badpage.info">http://www.badpage.info</A>. The tag nesting and attribute rules are determined by interpreting the DTD's at the W3C. Hopefully this will make it fairly future proof. The CSS parser understands most of CSS 2 and some CSS 3 and the CSS selectors can tell if they match a DOM node. There is no visual rendering and no calculation of layout. <BR></SPAN></FONT><FONT class="Apple-style-span" face="Geneva" size="3"><SPAN class="Apple-style-span" style="font-size: 11px;"><BR></SPAN></FONT><FONT class="Apple-style-span" face="Geneva" size="3"><SPAN class="Apple-style-span" style="font-size: 11px;"> I hearby license it free for almost any use with the understanding that it may not be used to provide website QA software or services such as might compete with <A href="http://badpage.info">http://badpage.info</A>. <BR></SPAN></FONT><FONT class="Apple-style-span" face="Geneva" size="3"><SPAN class="Apple-style-span" style="font-size: 11px;"><BR></SPAN></FONT><FONT class="Apple-style-span" face="Geneva" size="3"><SPAN class="Apple-style-span" style="font-size: 11px;"> Otherwise, do whatever you like with it. I think it would make a dandy base for a real web browser. I also find it quite useful for scraping web pages.</SPAN></FONT><FONT class="Apple-style-span" face="Courier" size="3"><SPAN class="Apple-style-span" style="font-size: 11px;"></SPAN></FONT></DIV><DIV style="text-align: justify;"><FONT class="Apple-style-span" face="Geneva" size="3"><SPAN class="Apple-style-span" style="font-size: 11px;">-----</SPAN></FONT></DIV><DIV style="text-align: justify;"><FONT class="Apple-style-span" face="Geneva" size="3"><SPAN class="Apple-style-span" style="font-size: 11px;">SqueakMap is not presently responding to requests to send me a new password and I can't remember my old one.  When it regains its senses, I'll put it up there as well.</SPAN></FONT></DIV><DIV style="text-align: justify;"><FONT class="Apple-style-span" face="Geneva" size="3"><SPAN class="Apple-style-span" style="font-size: 11px;"><BR class="khtml-block-placeholder"></SPAN></FONT></DIV><DIV style="text-align: justify;"><FONT class="Apple-style-span" face="Geneva" size="3"><SPAN class="Apple-style-span" style="font-size: 11px;">-Todd Blanchard</SPAN></FONT></DIV></BODY></HTML>