Não tenho tanta certeza sobre essas respostas. Como acabei de ler: "AS ETIQUETAS PERSONALIZADAS SEMPRE FORAM PERMITIDAS EM HTML."
http://www.crockford.com/html/
O ponto aqui é que o HTML foi baseado em SGML. Ao contrário do XML com seus doctypes e esquemas, o HTML não se torna inválido se um navegador não conhece uma ou duas tags. Pense em <marquee>. Isso não está no padrão oficial. Portanto, embora o uso torne sua página HTML "oficialmente reprovada", também não a quebra.
Depois, há o <keygen>, que era específico do Netscape, esquecido no HTML4 e redescoberto e agora especificado no HTML5. E também temos atributos de tag personalizados agora, como data-XyZzz = "..." permitidos em todas as tags HTML5.
Portanto, embora você não deva inventar uma salada inteira de marcações personalizadas não especificadas, não é exatamente proibido ter tags personalizadas em HTML. Isso, entretanto, a menos que você queira enviá-lo com um + xml Content-Type ou incorporar outros namespaces XML, como SVG ou MathML. Isso se aplica apenas a HTML confinado a SGML.
div
s com classnames