Men nu har jag svaret! Inspirerad av Tim O'Reilly som för länge sen insett att internet är ett operativsystem kom jag på att använda W3Cs valideringssida, tillsammans med HtmlUnit.
Så här går det till:
- Fråga din webbapp efter den html du vill validera.
- Stoppa in denna html in rätt formulär på validator.w3.org.
- Submitta och kolla sedan att texten "Passed validation" finns på svarssidan.
public class HtmlTest extends TestCase {
public void testPage() throws IOException {
// Get the WebClient that is part of HtmlUnit.
WebClient webClient = new WebClient();
// Get the html we want to validate, in this case the front page
// of skickafilen.se.
Page htmlPage = webClient.getPage("http://skickafilen.se");
String htmlToValidate = htmlPage.getWebResponse().getContentAsString();
// Get the validator page from W3.
HtmlPage validatorPage =
(HtmlPage) webClient.getPage("http://validator.w3.org/");
// Find the textarea and enter the html we want to validate.
HtmlForm form = (HtmlForm) validatorPage.getForms().get(2);
HtmlTextArea textarea =
(HtmlTextArea) form.getTextAreasByName("fragment").get(0);
textarea.setText(htmlToValidate);
// Submit the validator page and store the resulting page in a string.
String result = ((HtmlPage) form.submit()).asText();
// Make sure our html validated ok.
assertTrue(result.contains("Passed validation"));
}
}
W3C har även ett SOAP-gränssnitt mot valideringstjänsten men vem orkar bry sig om något så überkomplicerat som SOAP?