Hmmm… interessante 
Sobre gerar schemas a partir de um XML, acho que dá até pra usar XSLT pra fazer isso, mas não sei de nada pronto por aí. É um trabalhinho bem pesado, aliás… se vc estiver fazendo isso num loop gigante em cima de uma quantidade de informacao monstruosa, prepare-se pra um longo inverno 
Parsers de HTML são preciosidades raras, pq HTML não tem sintaxe definida (ou definível). Se voce der uma olhada no que o Mozilla faz pra entender os HTMLs que a gente joga nele, vai ver que é um esforço heróico pra decifrar o que quer que o documento contenha. Mesmo assim, voce pode querer dar uma olhada no jTidy (.sf.net).
Sobre o 3o ponto: faz sentido, mas não é “bom”. Estou imaginando que vc esta tentando ler informacao da internet, e tentar normalizar a internet em um banco de dados ou um modelo fechadinho é simplesmente impossível, pq vc vai estar sempre um passo atrás da bagunça. O jeito é manter os documentos nos formatos originais (possivelmente removendo a formatação que não te interessa, apenas), e categorizando as coisas dinamicamente.
Um exemplo aqui eh o servico de diretórios do Google: nao tem ninguem que cria as categorias, o sistema se vira sozinho pra descobrir se uma determinada area de interesse tem um numero grande o suficiente de paginas e relacionamentos (intra-links) pra merecer uma categoria propria.