Sp 64 BR

From Htmlpedia
Jump to: navigation, search

OpenSP: O tipo do documento não permite o elemento %1 aqui

Causa:

O elemento mencionado acima foi encontrado num contexto onde não é permitido pela declaração de tipo do documento (DOCTYPE Declaration).

Em geral isso significa que há um elemento legítimo num lugar onde ele não deveria estar, como por exemplo um elemento <style> na seção <body> ao invés do cabeçalho (<head>).

Uma causa comum deste erro é o uso de sintaxe XHTML em documentos HTML. Em virtude das regras implícitas de fechamento de elementos de HTML, este erro pode causar um efeito cascata. Por exemplo, usar a forma abreviada de marcadores vazios (<x/>) do XHTML para os elementos <meta/> e <link/> na seção <head/> dum documento HTML pode levar o parser a inferir o fim da seção <head/> e o início da seção <body/> (onde <meta/> e <link/> não são permitidos, daí o erro).

Ao usar JavaScript para inserir HTML num documento do lado do cliente, deve-se esconder do validador os elementos HTML dentro do código JavaScript. Isto é particularmente importante ao trabalhar-se com XHTML.


Exemplos

Elemento STYLE mal posicionado:

Bad
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
	<title>Estiloso</title>
</head>
<body>
	<style type="text/css">
	</style>
</body>
</html>
Good
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
	<title>Estiloso</title>
	<style type="text/css">
	</style>
</head>
<body>
</body>
</html>

Sintaxe XHTML num documento HTML:

Bad<link ... />
Good<link ... >

JavaScript não escapado num documento XHTML:

Bad
<script type="text/javascript">
var output = "<html><body><p>Oi!<\/p><\/body><\/html>";
</script>
Good
<script type="text/javascript">
//<![CDATA[
var output = "<html><body><p>Oi!<\/p><\/body><\/html>";
//]]>
</script>

Solução:

  • Se o problema é causado por um elemento mal posicionado, remova-o.
  • Se o problema é causado pelo uso de sintaxe XHTML num documento HTML, remova as barras de fechamento.
  • Se o problema é causado pelo HTML dentro de código JavaScript embarcado, envolva o código JavaScript numa seção CDATA.

Referências: