Como validar HTML de Java?

O que é uma maneira rápida e simples de validar HTML de Java? Estou procurando uma classe de código-fonte aberto / PD (ou conjunto de classes) que descreva as várias propriedades das 100 tags HTML ímpares, como:

A etiqueta é opcional? Esvaziar? É legal omitir sua marca de fechamento?Quais outras tags essa tag pode conter (se houver)?Quais atributos são legais para essa tag e quais são seus tipos? (não é obrigatório, mas é bom ter)

Obrigado!

EDITAR

Estou procurando fazer uma análise tag a tag de um documento HTML, por isso estou menos interessado em saber se o documento como um todo é válido, mas quais são os requisitos específicos para cada tipo de tag. Eu poderia codificar as regras com base nas especificações do W3C, mas queria ver quais soluções prontas estão disponíveis primeiro.

questionAnswers(2)

yourAnswerToTheQuestion