HTML 5 versus XHTML 1.0 Transicional?
Pergunta
Parece que o HTML 5 será suportado (parcialmente) pelo Firefox 3.1 e outros navegadores.Ele está adicionando suporte para vídeo e áudio como tags, mas essas são novas tags que o XHTML 1.0 Transitional não reconhece.Qual será o comportamento se eu usar uma nova tag HTML 5 em uma versão futura do Firefox, mas usar o DTD para XHTML?E se eu misturar a marcação HTML 5 com XHTML 1.0 Trans?
Isso está ficando confuso.Por que eles simplesmente não adicionaram essas tags ao XHTML?Como oferecemos suporte a XHTML e HTML 5?
Vídeo em HTML 5: http://www.youtube.com/watch?v=xIxDJof7xxQ
Solução
Bem, em geral, o HTML é SGML e XHTML é expresso em XML. Por causa disso, a criação de XHTML está conectada com mais restrições (na forma de marcação) do que o HTML. (HTML baseado em SGML versus baseado em XML)
Como mencionado Wikipedia, HTML 5 também terá uma variante XHTML (XHTML 5).
Regra geral: você sempre deve usar a marcação válida. Isso também significa que você não deve usar o mencionado <video>
ou <audio>
Tags na transição XHTML 1.0, pois não são um elemento dessa especificação. Se você realmente preciso Para usar essas tags (que eu duvido muito), você deve usar o html 5/xhtml 5 dtd para especificar que seu documento está nesse doctype.
Usando o HTML 5 ou XHTML 5 no estado especificado da implementação (Afaik, o padrão ainda não está resolvido, ainda correto?) Poderia ser contraproducente, pois quase todos os usuários podem não ver o site renderizado Correclty de qualquer maneira.
EDIT 2013: Devido aos recentes votos e, como essa resposta aceita não pode ser excluída (por mim), gostaria de acrescentar que o processo de suporte e padronização do HTML5 é hoje em dia totalmente diferente do que era quando escrevi essa resposta cinco anos atrás . Como a maioria dos principais navegadores suporta a maioria das partes do rascunho do HTML5 e como muitas coisas podem ser corrigidas com poli -preenchimentos em navegadores mais antigos, uso principalmente o HTML5 agora.
Outras dicas
HTML5 é muito mais fácil de escrever do que o XHTML 1.0.
Você não precisa declarar manualmente o "http://www.w3.org/1999/xhtml"Espaço para nome.
Você não precisa adicionar atributos de tipo aos elementos de script e estilo (eles padrão ao texto/javascript e texto/css).
Você não precisa usar um longo doctype, onde o navegador simplesmente ignora a maior parte. Você deve usaru003C!DOCTYPE html> , o que é fácil de lembrar.
Você não tem a opção de incluir ou não incluir um DTD URI no doctype e não tem escolha entre transição e rigoroso. Você só tem um documentador rigoroso que chama o modo de padrões completos. Dessa forma, você não precisa se preocupar em estar acidentalmente no modo de quase padrões ou no modo de peculiaridades.
A declaração de charset é muito mais simples. É apenasu003Cmeta charset="utf-8"> .
Se você achar confuso escrever elementos vazios comou003Cname> , você pode usaru003Cname/> , Se você quiser.
HTML5 tem um validador muito bom em http://validator.nu/. O validador não está vinculado por um DTD ruim que não pode expressar todas as regras.
Você não precisa adicionar //
Você pode usar o incorporação, se necessário.
Apenas em termos de sintaxe, quando você usa o HTML5, você acaba com mais limpo, mais fácil de ler a marcação que sempre chama o modo de padrões. Quando você usa o XHTML 1.0 (servido como texto/html), está especificando um monte de CRUD (para validar contra um DTD ruim) que o navegador fará automaticamente.
Mitos e equívocos abundam neste tópico.
XHTML 1.0 é mais antigo que HTML 5.Não pode usar nenhum vocabulário novo.Na verdade, seu principal ponto de venda é que ele usa exatamente o mesmo vocabulário do HTML 4.01.
Não haverá XHTML 1.2 – muito provavelmente.E não é necessário.XHTML 5 é a serialização XML do HTML 5.Vocabulário idêntico, regras de análise diferentes.
HTML nunca foi tratado como verdadeiro SGML nos navegadores.Nenhum navegador jamais implementou um analisador compatível com SGML.O HTML 5 tornará esse fato uma regra e a serialização do HTML seguirá o padrão de fato atual.Talvez se possa dizer que é "SGML-ish".
Como foi afirmado, o DTD serve exatamente a um propósito NOS NAVEGADORES: distinguir entre o modo de conformidade com os padrões e o modo de peculiaridades.Portanto, afeta apenas o estilo e o script.Se você estiver usando frames em uma página com um tipo de documento estrito, eles serão renderizados perfeitamente.Assim como <embed> e até mesmo <marquee> - embora o último seja uma abominação e o primeiro não esteja em nenhum padrão atual.No entanto, faz parte do HTML 5.
Vídeo e áudio podem ser usados independentemente da serialização, XML ou HTML.eles fazem parte do HTML 5 e do XHTML 5.Assim que o estágio de análise terminar, um navegador terá construído um DOM interno do documento.Esse DOM será o mesmo para todos os efeitos práticos, independentemente da serialização.E sim, o XHTML enviado com text/html ainda é html normal, independentemente do tipo de documento.
Você pode estar olhando para o problema da maneira errada, porque o relação com xhtml 1.x Seção, HTML 5 estados:
"Esta especificação visa substituir o XHTML 1.0 como a definição normativa da serialização XML do vocabulário HTML".
Agora que a linguagem é controversa (o XHTML 2 WG o contestou e o HTML WG está tentando resolver as diferenças ...), mas é aí que estamos agora.
Algumas anotações:
- Html 5 inclui uma serialização XML conhecida como xhtml 5, A especificação explica as diferenças se você gosta de detalhes nitty corajosos
- HTML não é SGML. Henri Sivonen fez uma ótima redação sobre a história da análise HTML
- A partir desse tempo (tem sido um tópico de debate várias vezes), não haverá um DTD para html/xhtml 5 - a seção Requisitos de conformidade da especificação Explica por que um DTD não é adequado para definir a linguagem HTML. o Validador HTML 5 Também contém uma riqueza de informações sobre este tópico (incluindo esquemas de relaxamento ng para html5)
Lembre -se de que os Doctypes servem apenas um propósito nos navegadores: alterne entre peculiaridades, quase padrões e modo de padrões. Portanto, usando <video>
e <audio>
trabalhará com qualquer declaração Doctype. IMO, usando um xhtml doctype é bastante inútil, pois todas as páginas você envia text/html
O tipo MIME é analisado como HTML (tag-soup) de qualquer maneira. Eu sugiro usar o html5 doctype (<!doctype html>
), pois é mais fácil lembrar e não o forçará na sintaxe XML sem um motivo.
Por que eles não apenas adicionaram essas tags ao XHTML?
Eles realmente fizeram, há uma serialização XML de HTML 5 (XHTML5). Para usar isso, você deve enviar suas páginas com um tipo MIME XML, como application/xhtml+xml
. Isso ainda não é (ainda) apoiado pelo IE, no entanto.
Qual deve ser o comportamento se eu usar uma nova tag HTML 5 em uma versão futura do Firefox, mas use o DTD para XHTML?
E se eu misturar a marcação HTML 5 com o XHTML 1.0 trans?
Se sua marcação não for implementada como parte do seu DTD escolhido - então logicamente, essa marcação não deve ser seguida. Mas as implementações do navegador nem sempre são estritamente lógicas.
Por que eles não apenas adicionaram essas tags ao XHTML? Como apoiamos o XHTML e o HTML 5?
O XHTML não é melhor que o HTML, mas é mais adequado para alguns aplicativos. Um dos principais benefícios do XHTML é que ele pode ser transformado em diferentes formatos usando o XSLT. Por exemplo, você pode usar o XSLT para transformar automaticamente o XHTML em um feed RSS ou outro formato XML.
Você não precisa suportar os dois formatos - pesa os benefícios/desvantagens para cada um com os requisitos do seu projeto. O HTML 5 provavelmente não será padrão por algum tempo.
(X) HTML5 é apenas a próxima versão. Você deve usar o XHTML1.1 até que o XHTML5 seja bem suportado.
Você provavelmente não deve usar o perfil SGML de compatibilidade com compatibilidade com o HTML5. Isso torna as coisas mais difíceis para raspadores e pequenos analisadores.
Sua Doctype dirá ao navegador se você estiver usando HTML5 ou XHTML. Você não pode simplesmente empurrar uma etiqueta de um doctype em um documento de outro doctype e espera que funcione. Sem um doctype, é tudo apenas uma sopa de etiqueta de qualquer maneira.
Não use coisas como tags de vídeo/áudio quando 99% das pessoas não conseguirem visualizá -lo corretamente em seu navegador. Para qualquer um desses dois exemplos, sugiro usar o FLV.
Quanto ao motivo pelo qual eles não o adicionam ao XHTML ... primeiro 1,0 não é a versão mais recente, o 1.1 foi lançado há um tempo.
Eventualmente, as coisas são padronizadas e veremos esses tipos de tags nos dois padrões, mas, por enquanto, basta fazer o possível para garantir que a maior quantidade de pessoas possa visualizar seu conteúdo.