Web,ruby, Ajax ou qualquer outra coisa que me venha a cabeça (com prioridade para esta última)

23 setembro, 2006

FAQ HTML versus XHTML

Este documento é uma tradução da FAQ HTML and XHTML Frequently Answered Questions

Perguntas frequentes respondidas sobre HTML e XHTML (FAQs)

Editor: Steven Pemberton, W3C/CWI

Data da versão: 21 Julho 2004

Outras FAQs relaccionadas:

Para comentar este documento ou enviar sugestões para pergunta, por favor enviar correio electrónico para www-html-editor@w3.org, e incluir a palavra FAQ no assunto.

Tabela de Conteúdos

  1. Porque é que é necessário o XHTML? O HTML não é suficientemente bom?
  2. Quais as vantagens de usar XHTML no lugar do HTML?
  3. Posso colocar uma declaração XML no topo de documentos HTML existentes? Posso misturar documentos HTML 4.01 e XHTML?
  4. Qual a forma mais fácil de converter documentos HTML em XHTML?
  5. Porque é que os navegadores são tão picuinhas com o XML? Eram mais liberais com o HTML.
  6. Porque é que me devo preocupar com que os meus documentos tenham um HTML correcto? Os documentos são bem apresentados pelo meu navegador.
  7. Onde é que posso ir para verificar se o meu documento usa marcação correcta?
  8. Porque é que se refer a "agente utilizador" em vez de "navegador"?
  9. Porque é que tenho que usar espaços de nomeação em XHTML?
  10. Porque é que é permitido enviar documentos XHTML 1.0 como text/html?
  11. Quais são os navegadores que aceitam o tipo de media application/xhtml+xml?
  12. O Microsoft Internet Explorer aceita o tipo de media application/xhtml+xml?
  13. O CSS tem muitas regras especiais aplicáveis só a HTML. Essas regras são aplicáveis ao XHTML?
  14. document.write funciona em XHTML?
  15. Porque é que não é permitido o envio de documentos XHTML 1.1 como text/html?
  16. Porque é que o atributo target foi eliminado de XHTML 1.1?
  17. O que é a modularização do XHTML?
  18. Porque é que é necessário o XHTML2? Não chega o XHTML 1?
  19. O marcador <img> irá ser substituído pelo marcador <object> no XHTML2?
  20. Porque é que o XHTML2 não usa XLink?
  21. Porque é que o XHTML2 não é retrocompatível?
  22. Porque é que xml:space está igualado a 'preserve' em todos os elementos XHTML? Não desejo ver espaço em branco na minha saída.

Porque é que é necessário o XHTML? O HTML não é suficientemente bom?

O HTML é provavelmente a linguagem de marcação mais bem sucedida no mundo. Mas quando o XMl foi introduzido, foi organizado um workshop de dois dias onde foi discutido se uma nova versão de HTML em XML era ou não necessária. A opinião desse workshop foi um claro "Sim": com um HTML baseado em XML as outras linguagem XML poderiam incluir bocados em XHTML e os documentos XHTML poderiam incluir partes noutras linguagens de marcação. Poderiamos tirar partido da nova concepção para limpar algumas partes do HTML que necessitassem de lavagem, e adicionar alguma funcionalidade nova como melhores formulários..

Quais as vantagens de usar XHTML no lugar do HTML?

Se o seu documento for XHTML 1.0 puro só (sem incluir partes noutras linguagens de marcação) então não irá notar muita diferença. Contudo à medida que mais ferramentas XML estão disponíveis, tais como XSLT para transformação de documentos irá começar a notar vantagens na utilização de XHTML. Por exemplo XForms irá permitir alterar documentos XHTML (ou qualquer outro tipo de documento XML) de modo simples e controlável. As aplicações da Web Semântica irão poder tirar partido dos documentos XHTML.

Se o seu documento é mais do que XHTML 1.0, por exemplo incluindo MathML, SMIL, ou SVG, então as vantagens são imediatas. Não é possível fazer esse tipo de coisas com o HTML.

Posso colocar uma declaração XML no topo de documentos HTML existentes? Posso misturar documentos HTML 4.01 e XHTML?

Não. O HTML não é um formato XML. Tem que proceder às alterações necessárias para tornar o documento num documento XML correcto antes de o poder ver aceite como tal.

Qual a forma mais fácil de converter os meus documentos HTML em XHTML?

HTML Tidy dá-lhe a opção de transformar qualquer documento HTML num documento XHTML. Amaya é um navegador/editor que guarda documentos em HTML como documentos em XHTML.

Porque é que os navegadores são tão picuinhas com o XML? Eram mais liberais com o HTML.

É deliberado. Os navegadores HTML aceitam praticamente qualquer entrada, correcta ou incorrecta, e tentam fazer o que for mais adequado com ela. Esta correção de erros torna os navegadores muito difíceis de escrever em especial se se estiver à espera que se espere deles que se comportem de igual modo. Isto também significa que um grande número de documento HTML está incorrecto, porque como são correctamente apresentados num navegador o autor poderá não se aperceber de que os mesmos contenham erros. Isto torna incrivelmente difícil escrever novos agentes utilizadores para a web visto muitos documentos que reclamam ser escritos em HTML são muito pobres frequentemente.

Porque é que me devo preocupar com que os meus documentos tenham um HTML correcto? Os documentos são bem apresentados pelo meu navegador.

Todos os navegadores sabem como tratar HTML correcto. Contudo se o HTML estiver errado o navegador tem que reparar o documento e visto nem todos os navegadores corrigirem um documento do mesmo modo, isto introduz diferenças, e assim o seu documento pode ser visto de forma diferente em diferentes navegadores. Como há centenas de navegadores diferentes, e estão a sair mais a todo o momento (não só para PC, mas para PDAs, telefones móveis, televisores, impressoras e mesmo figoríficos), é impossível testar o seu documento em todos os navegadores. Se usar HTML incorrecto no seu documento poderá suceder que não possa funcionar num navegador e então a falha é sua, se o seu HTML estiver correcto e não funcionar num determinado navegador então o erro é do navegador.

Onde é que posso ir para verificar se o meu documento usa marcação correcta??

O W3C oferece um serviço em http://validator.w3.org/. O navegador/editor Amaya também verifica se a sua marcação é correcta.

Porque é que se refer a "agente utilizador" em vez de "navegador"?

embora os navegadores sejam importantes utilizadores de HTML e XHTML, há outros programas e sistemas que leem esses documentos. Os motores de busca por exemplo leem documentos mas não são navegadores. Ao usar o termo"agente utilizador" estamos a tentar lembrar as pessoas dessa diferença.

Por exemplo, quando usa o Google irá ver debaixo de alguns dos resultados da busca algo como "Esta página usa frames, mas o seu navegador não os suporta." levando a que algumas pessoas não cliquem nessa ligação. O autor do sítio web em questão não percebeu que há mais do que navegadores, e que devem incluir algo melhor do que este simples texto na secção <noframes>, de forma a não parecerem ideotas a quem faz buscas pelo respectivo sítio.

Porque é que tenho de usar os espaços de nomeação em XHTML?

Nos primórdios do HTML diferentes grupos e companhias adicionavam novos elementos e atributos ao HTML à vontade. Isto ameaçou provocar um caos de versões HTML não inter-operativas. XML (o X está no lugar de eXtensível) permite a qualquer pessoas usar elementos e elementos de difernetes linguagens, mas para que um navegador ou outro agente utilizador saiba onde cada elemento pertence a que linguagem é necessário dizer-lhe. As declarações de espaço de nomeação são só esse mecanismo.

Porque é que é permitido enviar documentos XHTML 1.0 como text/html?

XHTML é um formato XML; isto significa que falando estritamente deve ser enviado num tipo de media relativo a XML (application/xhtml+xml, application/xml, ou text/xml). Contudo o XHTML 1.0 foi concebido cuidadosamente de forma a também funcionar com agentes utilizadores HTML anteriores. Se seguir algumas directrizes simples, pode fazer com que muitos documentos XHTML 1.0 funcionem em navegadores antigos. Contudo esses navegadores só entendem o tipo de media text/html, e assim tem que usar este tipo de media para enviar aos mesmos os documentos em XHTML 1.0. Lembre-se contudo que enviar documentos XHTML aos navegadores como text/html significa que esses documentos são vistos como documentos HTML e não como XHTML por esses navegadores.

Que navegadores aceitam o tipo de media application/xhtml+xml?

Os navegadores conhecidos incluem todos os navegadores baseados em Mozilla tal como o Netscape 5 e versão mais recente, Galeon e Firefox, assim como o Opera, Amaya, Camino, Chimera, DocZilla, iCab, Safari, e todos os navegadores de telefones móveis que aceitem WAP2. De facto qualquer navegador moderno. A maior parte aceita os documentos XHTML como application/xml também. Ver os tipos de media XHTML para detalhes.

O Microsoft Internet Explorer aceita o tipo de media application/xhtml+xml?

Não. Contudo há um truque para permitir servir documentos XHTML1.0 ao Internet Explorer como application/xml.

Incluir no topo do documento a linha a negrito:

<?xml version="1.0" encoding="iso-8859-1"?>
<?xml-stylesheet type="text/xsl" href="copy.xsl"?>
<!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">
<head>

onde copy.xsl é um ficheiro que contém o seguinte:

<stylesheet version="1.0"
     xmlns="http://www.w3.org/1999/XSL/Transform">
    <template match="/">
        <copy-of select="."/>
    </template>
</stylesheet>

Note que este ficheiro deverá encontrar-se no mesmo sítio do que o documento que se lhe refere.

Embora esteja a server o documento como XML, e seja analisado como XML, o navegador pensa que recebeu text/html, e assim o seu documento XHTML 1.0 tem que seguir algumas directrizes para servir navegadores antigos.

O seu XHTML irá continuar a funcionar nos navegadores que aceitem XHTML 1.0 como application/xml.

CSS has a lot of special rules that only apply to HTML. Do these also apply to XHTML?

No. CSS rules that apply only to HTML, apply only to documents that are delivered as text/html.

document.write funciona em XHTML?

Não. Devido à maneira como o XML foi definido não é possível usar truques como este, esta marcação é gerada por programação dinâmica enquanto o analisador está ainda a analizar a marcação recebida.

Pode ainda alcançar os mesmos efeitos, mas terá que usar o DOM para adicionar ou apagar elementos.

Porque é que não é permitido enviar documentos XHTML 1.1 como text/html?

XHTML 1.1 é XML puro, e só se pretendeu que fosse XML. Não pode ser enviado a navegadores antigos de forma fiável. Assim os documentos XHTML 1.1 têm que ser enviados com um tipo de media relativo a XML, tal como application/xhtml+xml.

Porque é que o atributo target foi eliminado de XHTML 1.1?

Não foi. O XHTML 1.0 vem em três versões: strict, transitional, e frameset. Todas foram mantidas deliberadamente tão proximas da HTML 4.01 na medida em que o XML o permite. O XHTML 1.1 é uma versão actualizada da XHTML 1.0strict, e nenhuma versão HTML strict teve um atributo target. As outras duas versões, transitional e frameset, não foram actualizadas visto não haver nada a actualizar. Se desejar usar o atributo target use XHTML 1.0 transitional.

O que é isso de usar modularização de XHTML?

A modularização XHTML não se destina aos utilizadores normais de XHTML, mas a conceptores de linguagens baseadas em XHTML. Observou-se que companhias e grupos tinham uma tendência para conceber as suas próprias versões de HTML e XHTML que eram frequentemente não interoperacionais a níveis básicos. A modularização do XHTML reparte o XHTML numa número de módulos que podem ser individualmente seleccionados quando se define uma nova linguagem; desta forma uma qualquer linguagem baseada em XHTML que use tabelas garantidamente usa a mesma definição de tabelas e não uma versão divergente. A modularização torna também claro onde é aceitável adicionar novos elementos e onde tal não é razoável.

Porque é que é necessário o XHTML2 ? O XHTML 1 não é suficientemente bom?

O HTML e o XHTML prestaram um bom serviço, mas há muias coisas que podem ser melhoradas. Áreas que receberam atenção particular incluem melhores possibilidades de estruturação, remoção de capacidades que estão duplicadas em XML, usabilidade, acessibilidade, internacionalização, independência de dispositivo, melhores formulários e reduzir necessidade de programação.

O marcador <img> está a ser substituído pelo <object> em XHTML2?

Não. <img> está a ser substituído em XHTML2 mas por outra coisa ( embora possa usar <object> se desejar).

A concepção de <img> levanta vários problemas em HTML:

  • Não tem possibilidades de degradação, assim se usar uma imagem do tipo PNG por exemplo, e o navegador não poder tratar desse tipo, a única alternativa é usar o texto alternativo. Este facto limitou a adopção de imagens PNG, que em muitos casos são melhores do que as GIF e JPG, visto as pessoas terem continuado a usar o formato denominador comum de forma a assegurar que todos possam ver as imagens.
  • O texto alternativo não pode incluir marcação, e portanto se usado só se obtém texto simples.
  • É possível incluir uma ligação longdesc com uma descrição da imagem (ou sua finalidade), para ajudar pessoas que a não possam ver mas isso raramente é feito.

O que o XHTML2 diz é que todas as imagens são equivalentes a uma parte do conteúdo, fá-lo ao permitir-lhe colocar um atributo src em todos os elementos. O que isto significa é que se a imagem está disponível e o navegador a puder processar, usá-la, caso contrário usar o conteúdo do elemento, por exemplo:

<p src="mapa.png">Sair da estação, voltar à esquerda e 
seguir em frente até à <strong>Rua Direita</strong>,
   aí voltar à direita</p>

A vantagem é a de que se a imagem não estiver disponível por qualquer razão (tal como falha de rede) ou o navegador não a puder reproduzir o documento continua a ser útil. Se desejar fornecer mais do que um tipo de imagem pode:

<p src="mapa.png"><span src="mapa.gif">Sair da estação...</span></p>

embora seja melhor usar negociação de conteúdos no caso do seu servidor o suportar (e a maior parte fá-lo):

<p src="mapa">Sair da estação...</p>

o que irá negociar com o navegador que tipo de imagens aceita e qual a preferida do navegador. Se não houver imagem disponível então o conteúdo do elemento será usado. Isto tem a vantagem adicional de pode adicionar outros tipos de imagens no seu servidor e não ter que alterar a página para que esta funcione.

XLink e XHTML têm requisitos diferentes para ligações e verificou-se serem irreconciliáveis.

Porque é que o XHTML2 não é retrocompatível?

É, mas de um modo diferente das anteriores versões de HTML serem retrocompatíveis.

Visto as primeiras versões de HTML serem linguagens de finalidade específica era necessário assegurar um nível de retrocompatibilidade com novas versões de forma a que os novos documentos podessem ser utilizáveis em navegadores antigos. Por exemplo é por essa razão que o elemento <meta> tem o seu conteúdo num atributo em vez de no conteúdo do elemento, porque nesse caso iria aparecer em navegadores antigos.

Contudo graças ao XML e às folhas de estilo, tal retrocompatibilidade estrita ao nível do elemento deixou de ser necessária, visto um navegador baseado em XML, o que significa cerca de 95% dos navegadores em uso no momento de redação desta resposta, pode processar novas linguagens de marcação sem necessidade de ser actualizado. Muito do XHTML 2 funciona nos actuais navegadores, navegadires que não foram pré-programados para aceitar XHTML2. A maior parte funciona mas não tupo: quando os formulários e as tabelas foram adicionadas ao HTML as pessoas tiveram que esperar por novas versões de navegadores; de forma similar algumas partes do XHTML 2, tais como XForms e XML Events, ainda precisam que os agentes utilizadores compreendam essa funcionalidade.

Porque é que xml:space está definida como 'preserve' em todos os elementos XHTML? Não desejo ter espaço em branco extra na minha saída.

O atributo xml:space trata-se de input: isto é, controla se os espaços irão estar presentes no DOM (isto é, se a versão interna do documento dentro do navegador os inclui), nada diz de como irão surgir no ecrã. A saída de espaço em branco é controlada via a propriedade de CSS 'whitespace'. Se a propriedade tiver o valor 'pre' os espaços irão ser preservados no DOM na saída se a propriedade tiver o valor de 'normal' o espaço em branco junta-se (o CSS3 irá ter mais propriedades para permitir um maior controlo).

Esta é a razão pela qual todos os elementos têm xml:space="preserve" em XHTML2, caso contrário a propriedade CSS 'whitespace' não teria efeito e não teria controlo sobre o espaço em branco visível. A folha de estilo por omissão irá tratar de dar o valor a 'whitespace' de 'normal' para todos os elementos com a excepção de <pre>, mas será livre de os alterar.


The Radiant Vista

A web para mim em 1995 era essencialmente um mundo para a palavra. Claro que já havia aqueles sítios que achavam indispensável bombardiar-nos com textos a piscar, a moverem-se e claro já havia muitas imagens. O sítio a que hoje me estou a referir é um sítio que leva a imagem a sério: The Radiant Vista.

The Radiant Vista é constituído por uma série de secções das quais desejava destacar a crítica diária onde são apresentadas e criticadas imagens em vídeos relativamente breves, à volta dos 5 minutos ou menos, o laboratório de photoshop onde são apresentadas técnicas para melhoria de imagens em laboratório digital, quatro secções dedicadas a recursos, podcast, Guias em Vídeo, Guias em PDF, Artigos e claro uma secção para Workshops de fotografia.

As secções que apelidei de recursos, vão desde temas apropriados para principiantes até artigos com profundidade para profissionais ou amadores muito sérios. Salvo a secção de guias PDF as restantes apoiam-se fortemente em screencast's.

07 setembro, 2006

Boas Práticas - II

Um dos assuntos que me tem levado a escrever é a aplicação de boas práticasna produção de sítios web. Em novembro de 2005 esbocei uma linhas sobre o assunto, tenho vindo a tocar no assunto algumas vezes. Eis mais uma:

  1. Validar as páginas web!

    É impossível infatizar isto de mais. Todos os sítios de ministérios que revi nos últimos dias são ou estão inválidos. Como é que é possível esperar que o CSS ou o Javascript baseado no DOM funcione de forma fiável com um códig (x)html inválido?. Conteúdo válido poderá evitar muitas horas de procura de erros em CSS ou DOM. Os que mais se aproximavam de um sítio válido eram os do ministério da justica com um erro ao incluir o erro div align="left" style="padding:0px" (não há atributo align) e o do ministério das finanças com o mesmo erro, repetido, de não efectuar o escape de um e comercial (&) nos comunicados à imprensa, em referências a URL, em quatro sítios na página inicial (existem nessa mesma página referências correctas). Não vou aqui fazer os comentários que pessoas mais abalizadas fazem quando vêem coisas destas.

    Tantek diz que o erro das finanças também o atinge de tempos a tempos.

    Tantek lista os erros mais comuns de validação.

  2. Eliminar tabelas de layout e gifs espaçadores

  3. Não usar <meta>s

  4. Melhorar os nomes das classes

  5. Não usar grandes blocos de linhas em branco

  6. Usar 'rel' e 'hreflang' para traduções

  7. Limpar os comentários no servidor

  8. Usar hcard para indicar contactos

notas de navegação - II

Elly Thompson recentemente formada em Arquitectura (daquela em concreto) apresenta as suas teorias de similitude e dissemilhança entre a construção de um site na web e a construção de um edifício. Além disso dá a sua opinião cívica como por exemplo sobre a obrigação das mulheres se manterem saudáveis.

Dean Edwards explora o método forEach.

Rachel Andrew em junho apresenta as suas ideias sobre selecção de técnicas CSS quando estamos a desenvolver projectos para os quais existe mais do que uma técnica para obtenção do mesmo resultado final. Em particular chama a atenção para aquilo que temos de ter em conta por exemplo quando necessitamos de libertar elementos flutuados (clear). O método recomendado por ela é mesmo o de adicionar a div suplementar, sem significado semântico, que tem como alternativa usar truques de CSS só para a evitar.

Roger Johansson revisitou a construção de pseudo-frames em css.

Richard Rutter continua a sua coleção de artigos sobre tipografia para a web, com base nos Elementos de Estilo Tipográfico de Robert Bringhurst. Uma delícia para os olhos.

No blogue da SimpleBits aparece um texto Educated onde se fala de um curso universitário da Universidade de Boston onde os novos métodos de produção de web sites são enfatizados. Quando Há pouco tempo estive a ver os trabalhos de alunos de mestrado da Universidade Nova de Lisboa fiquei estarrecido pois todos usavam essa maravilhosa técnica de produzirem sítios com ... FrontPage ... o que é que acham da diferença.

Drew McLellan diz-nos por onde tem passado nos últimos tempos, o Barcamp de Londres e o d.Construct que começa na próxima semana. Fala ainda de ferramentas para microformatos que anda a conceber.

06 setembro, 2006

Web standards em Portugal Revisitado

A Imprensa

Em 5 de Outubro de 2005 efectuei uma primeira abordagem à utilização de web standards em Portugal, tendo-me focado na imprensa na altura. Até hoje tanto quanto me é dado a ver passou a haver mais dois sites com declaração de tipo de documento só que continuam a não honrar o que aí dizem (só lá está para inglês ver, como se dizia quando eu era pequeno.)

Esses dois sítios são:

  • Diário digital já tem DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  • e
  • Jornal de Notícias já tem !DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd".

technorati tags:,

Blogged with Flock

Notas de navegação

Na Caixas e Setas de 23 de agosto, Shiv Singh apresenta as suas ideias sobre a aplicação em ambiente empresarial dos aspectos humanos da Web 2.0, no mesmo número da Boxes and Arrows é apresentado o desenvolvimento do design do sítio da Volkswagen da África do Sul.

Na entrada de 30/07/2006 do arkitrave.log é apresentado código CSS para estilizar uma lista de pares nome valores (listas de definições) onde o nome (chave) e o descritivo são apresentados um ao lado do outro. O método aqui apresentado permite ser usado com o IE.

Ara Pehlivanian no seu artigo Semântica - necessitamos mesmo dela apresenta as suas dúvidas sobre se por vezes não somos excessivamente levados pelos aspectos técnicas das tecnologias que aplicamos na web.

O excelente informatian aesthetics - form follows data - data visualization & visual design hoje, 5 de setembro mostra como é que o 11 de setembro afectou o número de passageiros a bordo de aviões. De facto chama a atenção para um artigo da BBC.

No User Interface Engineering Joshua Porter apresentou em Abril de 2006 um artigo sobre Folksonomies Uma maneira de organizar conteúdos orientada pelo utilizador.

Vanderwal apresenta um artigo sobre nomes de URL mais humanos e também com mais significado para motores de busca ou escavadores de dados (scrappers). O artigo chama-seO Domínio do Design Digital Inclui Cadeias de Caracteres.

O número de agosto de 2006 do JUS - Journal of usavility studies apresenta 1 artigo sobre o Dia Mundial da Usabilidade, assinado por Elizabeth Rosenweig (artigo convidado) e 3 artigos revistos:

  1. Cultura e Avaliações de Usabilidade: Os efeitos da cultura em entrevistas estruturadas, de Ravi Vatrapu e Manuel A. Pérez-Quiñones,
  2. A revisitação da likebility das personagens animadas: O caso da TV interactiva, de Konstantinos Chorianopoulos,
  3. O sistema da escala de usabilidade em falantes de inglês não nativos, de Kraig Finstad.

Os artigos estão disponíveis em sumários e na sua totalidade. A maior parte dos artigos trata de assuntos ligados a aspectos multiculturais e internacionais. Não esquecer que a periodicidade desta publicação é de cerca de 3 meses.

Croco[Lyle] participou num podcast em conjunto com jared spool. A transcrição desse podcast está presente na User Interface Engineering. Quem ler este artigo deverá ler também o artigo do Ivo Gomes sobre prototipagem em papel.

RawDiz-nos que Chris Messina (um dos autores do Flock) escreveu uma carta aberta ao Blogger para que ele venha a introduzir maior suporte a microformatos no maior motor de blogues. Já agora eu também estou o o chris.

technorati tags:, ,

Blogged with Flock

01 setembro, 2006

Bar Camp Coimbra

Barcamp - Coimbra de 2 e 3 de Setembro, com um alinhamento muito interessante que inclui a gente da WeBrakeStuff.