Sobre este problema HTML
O W3C HTML Validator gera este erro porque o HTML5 não suporta declarações arbitrárias de namespace XML. Em XML, o prefixo xmlns: é usado para vincular prefixos de namespace a URIs, permitindo que elementos e atributos de vocabulários diferentes coexistam. No entanto, o HTML5 usa as suas próprias regras de análise que são distintas do XML, e o único atributo de namespace reconhecido no HTML5 é o atributo xmlns simples no elemento <html> (definido como http://www.w3.org/1999/xhtml). Atributos de namespace com dois pontos como xmlns:o, xmlns:v, xmlns:w, e outros não fazem parte da especificação HTML5.
O namespace xmlns:o="urn:schemas-microsoft-com:office:office" especificamente vem do Microsoft Office. Quando você guarda um documento do Word como HTML ou cola conteúdo de aplicações do Office num editor HTML, o Office injeta as suas próprias declarações de namespace e markup proprietário. Este markup é destinado a fazer o round-trip do documento de volta para o Office e não serve qualquer propósito na web.
Além da validação, deixar estes atributos no lugar pode causar problemas práticos. O analisador HTML5 nos navegadores ignora silenciosamente ou interpreta mal estas declarações de namespace, o que significa que elas adicionam peso morto ao seu markup. Elas também aumentam o tamanho do ficheiro desnecessariamente e podem confundir outras ferramentas que processam o seu HTML, como leitores de ecrã, crawlers de motores de busca, ou sistemas de gestão de conteúdo.
Como corrigir
-
Remova o atributo
xmlns:ode qualquer elemento onde apareça (tipicamente a tag<html>). -
Remova atributos de namespace do Office relacionados como
xmlns:v,xmlns:w,xmlns:x, exmlns:st1, pois estes irão desencadear erros similares. -
Remova quaisquer elementos ou atributos usando esses prefixos de namespace, como
<o:p>,<v:shape>, ou<w:wrap>, uma vez que não são elementos HTML5 válidos e os navegadores não os renderizam de forma significativa. - Limpe HTML gerado pelo Office completamente se você estiver a converter documentos do Word para conteúdo web. Considere usar uma ferramenta de limpeza HTML dedicada ou uma opção de colar-como-texto-simples no seu editor.
Exemplos
Incorreto: atributos de namespace do Office no elemento <html>
Este markup contém múltiplas declarações de namespace do Microsoft Office que desencadeiam erros de validação:
<!DOCTYPE html>
<html xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:w="urn:schemas-microsoft-com:office:word"
xmlns:v="urn:schemas-microsoft-com:vml">
<head>
<title>My Document</title>
</head>
<body>
<h1>Meeting Notes</h1>
<p>Welcome to the meeting.<o:p></o:p></p>
</body>
</html>
Correto: HTML5 limpo sem namespaces do Office
Remova todos os atributos com prefixo xmlns: e quaisquer elementos específicos do Office como <o:p>:
<!DOCTYPE html>
<html lang="en">
<head>
<title>My Document</title>
</head>
<body>
<h1>Meeting Notes</h1>
<p>Welcome to the meeting.</p>
</body>
</html>
Incorreto: namespace do Office num elemento não-raiz
Por vezes o markup do Office aparece mais profundamente no documento:
<div xmlns:o="urn:schemas-microsoft-com:office:office">
<p>Some content<o:p></o:p></p>
</div>
Correto: versão limpa
<div>
<p>Some content</p>
</div>
Ao remover todas as declarações de namespace do Microsoft Office e os seus elementos proprietários associados, o seu HTML torna-se compatível com padrões, mais leve, e mais compatível entre navegadores e tecnologias assistivas. Se você converte frequentemente documentos do Office para HTML, considere usar uma ferramenta de limpeza como DirtyMarkup ou a funcionalidade “Colar como texto simples” no seu editor de conteúdo para evitar estes problemas desde o início.
Encontre problemas como este automaticamente
O Rocket Validator analisa milhares de páginas em segundos, detetando problemas HTML em todo o seu site.