Today I had to add some functionality to an already existing class library. In there
were a internal virtual method that I thought were supposed to be protected virtual.
To no big surprise, I couldn’t compile after changing it to protected. I didn’t want
to make it public so I thought of combining the two accessors with no hope for it
to work.
internal protected virtual void SomeMethod()
{
DoSomething();
}
Then I had this code and guess what, it compiles. I had no idea that you could combine
different accessors like this. Everyday – something new.
>
The W3C has introduced an API for
their HTML Validator. It is not a SOAP web service, but it does return XML that can
be parsed, so now you have the ability to incorporate validation to any web application,
Windows program or wherever you want. It works just as the normal validator, by specifying
a URL, but you have to add the “output=soap12” parameter to the URL like so: http://validator.w3.org/check?uri=http://www.google.com&output=soap12.
I’ve been playing a little with the possibilities and created a class that encapsulates
the validation process and wraps the results up in a suitable class. The collection
of errors and warnings can be bound directly to a GridView or Repeater without additional
code. This gives you a very easy, but powerful way of dealing with the validator.
Examples of use
Even thought the class is very small and its functionality limited, it still gives
you all the relevant information from the validation. Here’s an example of some of
the possibilities of the class.
using (HtmlValidator val
= new HtmlValidator("http://www.google.com"))
{
if (!val.Validate())
{
grid.DataSource
= val.Errors; // or val.Warnings
grid.DataBind();
lbDoctype.Text
= val.Doctype;
lbCharset.Text
= val.Charset.BodyName;
foreach (HtmlValidator.ValidationError error in val.Errors)
{
DoSomething(error.Message,
error.LineNumber, error.ColumnIndex);
}
}
}
Implementation
Download HtmlValidator.cs below and add it to any C# project. If you want to use it
in an ASP.NET project, just put it in the App_Code folder.
Download
HtmlValidator.zip
(1,43 KB)