Instruções de Processamento e Declaração XML
Tenha em atenção que as instruções de processamento são reproduzidas em alguns agentes utilizadores. Além disso, alguns agentes utilizadores interpretam a declaração XML significando que o documento é XML e não HTML, e sendo assim, podem não reproduzir o documento como esperado. Para compatibilidade com estes tipos de navegadores antigos, pode ter que evitar usar instruções de processamento e declarações XML. Lembre-se contudo que se a declaração XML não for incluída num documento, o documento só pode usar as codificações de caracteres por omissão UTF-8 ou UTF-16.
Elementos vazios
Inclua um espaço antes do traço de fracção
/
e um sinal de maior que>
, isto é,<br />
,<hr />
e<img src="logo.jpg" alt="logotipo da marca" />
. Além disso use a sintáxe dos marcadores minimizados para elementos vazios, isto é<br />
, visto a sintaxe alternativa<br></br>
permitida pelo XML dá resultados incertos em muitos agentes utilizadores existentes.Minimização de elemento e Conteúdo de elemento vazio
Dado um caso vazio de um elemento cujo modelo de conteúdo não seja
EMPTY
(por exemplo, um título vazio ou um parágrafo vazio) não usar a forma minimizada (isto é, usar<p> </p>
e não<p />
).Folhas de estilo e Scripts embebidos
Usar folhas de estilo externas se as suas folhas de estilo usarem
<
ou]]>
ou--
. Usar scripts externos se o seu script usar<
ou]]>
ou--
. Note que os analisadores XML podem remover conteúdos de comentários de modo silencioso. Assim, a prática histórica de "esconder" scripts e estilos em "comentários" para tornar os documentos retrocompatíveis é possível que não funcione como esperado em agentes utilizadores baseados em XML.Quebras de linha dentro de Valores de Atributos
Evitar quebra de linhas e vários caracteres de espaço em branco em valores de atributos. São tratados pelos agentes utilizadores de forma inconsistente.
Isindex
Não incluir mais do que um elemento
isindex
nohead
do documento. O elementoisindex
está a ficar obsoleto em relação ao elementoinput
.Os atributos
lang
exml:lang
Usar ambos os atributos
lang
exml:lang
quando especificar a língua em que um elemento esteja escrito. O valor do atributoxml:lang
tem precedência.Identificadores de Fragmento
Em XML, as referências URI [RFC2396] que terminam em identificadores de fragmentos na forma
"#qualquercoisa"
não se referem a elementos com um atributoname="qualquercoisa";
mas sim a elementos com um atributo definido como sendo do tipoID
, isto é o atributoid
em HTML 4. Muitos programas clientes HTML não suportam a utilização de atributos do tipoID
desta forma e assim sendo podem ser fornecidos valores identicos para ambos os atributos para assegurar o máximo de compatibilidade para o futuro e retrocompatibilidade (isto é,<a id="qualquercoisa" name="qualquercoisa">...</a>
).Além disso visto que o conjunto de valores legais para os atributos do tipo
ID
ser muito mais pequeno que os do tipoCDATA
, o tipo do atributoname
foi alterado paraNMTOKEN
. Este atributo está constrangido de tal modo que só pode ter os mesmos valores que os do tipoID
, ou que os do tipoName
em XML 1.0 secção 2.3, produção 5. Infelizmente, este constrangimento não pode ser expresso nos DTD 1.0 do XHTML. Devido a esta alteração é necessário ter cuidado quando se converte documentos HTML existentes. Os valores destes atributos têm que ser únicos dentro do documento, válidos, e quaisquer referências a estes identificadores de fragmento (tanto internas como externas) devem ser actualizadas no caso dos valores serem alterados durante a conversão.Note que a colecção de valores legais na produção 5 da Secção 2.3 da especificação XML 1.0 é muito maior do que aquela que é permitida ser usada nos tipos
ID
eNAME
no HTML 4. Quando se definem identificadores de fragmento para serem retrocompatíveis só devem ser usadas cadeias de caracteres de acordo com o padrão:[A-Za-z][A-Za-z0-9:_.-]*. Ver secção 6.2 do [HTML 4] para mais informação.
Finalmente, note-se que o XHTML 1.0 pede para se evitar usar o atributo
name
dos elementosa
,applet
,form
,frame
,iframe
,img
emap
, e será removido de versões subsequentes do XHTML.Codificação de caracteres
Historicamente a codificação de caracteres de um documento HTML era especificada pelo servidor web via um parâmetro de conjunto de caracteres (charset) do cabeçalho de Tipo de Conteúdo do HTTP, ou via um elemento
meta
no próprio documento. Num documento XML, a codificação dos caracteres do documento é especificada na declaração XML (isto é: <meta http-equiv="Content-type" content="text/html; charset=EUC-JP" />). Em agentes utilizadores conformes com o XHTML o valor da declaração da codificação na declaração XML toma precedência.Nota: tenha em atenção que se um documento deve incluir uma declaração de codificação de caracteres numa instrução meta http-equiv, esse documento pode ser sempre interpretado pelos servidores HTTP e/ou agentes utilizadores como sendo do tipo de media internet definido nessa declaração. Se um documento pode vir a ser servido como vários tipos de media o servidor HTTP deve ser usado para estabelecer a codificação do documento.
Atributos Booleanos
Alguns agentes utilizadores HTML não conseguem interpretar atributos booleanos quando surgem na sua forma não minimizada, como necessário ao XML 1.0. Nota: este problema não afecta agentes utilizadores conformes com HTML 4. Estão envolvidos os seguintes atributos:
compact
,nowrap
,ismap
,declare
,noshade
,checked
,disabled
,readonly
,multiple
,selected
,noresize
,defer
.
Document Object Model e XHTML
A recomendação nível 1 do [DOM] define os interfaces do modelo objecto de documento para o XML e o HTML 4. O modelo de ojecto documento do HTML 4 especifica que o elemento HTML e os nomes dos atributos retornam em maísculas. O modelo de objecto documento XML especifica que os nomes dos elementos e atributos são retornados com as letras minúsculas e maísculas com que são especificados. Em XHTML 1.0 os elementos e atributos são especificados em minúsculas. Esta diferença pode ser tratada de duas formas:
Agentes utilizadores que acedam aos documentos XHTML servidos como tipo media da internet
text/html
via DOM podem usar o HTML DOM e podem depender dos nomes de elementos e atributos serem retornados em maiúsculas a partir desses interfaces.Agentes utilizadores que acedam aos documento XHTML servidos como
text/xml
,application/xml
, ouapplication/xhtml+xml
podem usar o XML DOM. Os elementos e atributos retornam em minúsculas. Também, alguns elementos XHTML podem ou não aparecer na árvore do objecto devido a serem opcionais no modelo de conteúdo (isto é, o elementotbody
dentro detable
). Isto ocorre porque em HTML 4 alguns elementos foram permitidos ser minimizados de tal modo que tanto a etiqueta de início e a de fim do elemento são ambas omitidas (uma funcionalidade SGML). Isto não é possível em XML. Assim em vez de exigir aos autores dos documentos a inserção de elementos extra, o XHTML tornou estes elementos opcionais. Os agentes utilizadores têm que se adaptar em conformidade. Para mais informação sobre este tópico, ver [DOM2].
Utilização de e comercial em valores de atributos (e noutros locais)
Tanto em SGML como em XML o caracter e comercial ("&") declara o início de uma referência de entidade (isto é ® para um símbolo de marca registada "®"). Infelizmente, muitos agentes utilizadores de HTML tem vindo a ignorar silenciosamente o uso incorrecto do caracter e comercial em documento HTML - tratando os e comerciais que não pareçam referências de entidade como e comerciais literais. Os agentes utilizadores XML não vão tolerar este uso incorrecto e qualquer documento que usar e comercial de forma incorrecta será "inválido" e consequentemente não estará em conformidade com esta especificação. De forma a assegurar que documentos que eram compatíveis com agentes utilizadores antigos de HTML e agentes utilizadores baseados em XML, os e comerciais usados num documento que sejam para ser tratados como caracteres literais têm eles mesmo de ser uma referência de entidade (isto é, "
&
"). Por exemplo quando um atributohref
de um elementoa
se referir a um script CGI que tome parâmetros esse atributo deve ser expresso como:http://meu.sitio.dom/cgi-bin/meuscript.pl?classe=convidado&;nome=utilizador
em vez dehttp://meu.sitio.dom/cgi-bin/meuscript.pl?classe=convidado&nome=utilizador
.
Folhas de Estilo em Cascata (CSS) e XHTML
A Recomendação de nível 2 das folhas de estilo em cascata [CSS2] definem propriedades de estilo que são aplicadas à árvore de análise dos documentos HTML ou XML. As diferenças na análise irão produzir resultados visuais e/ou auditivos diferentes dependendo dos selectores usados. As pistas seguintes reduzem este efeitos em documentos que são servidos sem alterações como ambos tipos de media:
- As folhas de estilos CSS para XHTML devem usar minúsculas para nomes de elementos e atributos.
- Em tabelas, o elemento tbody será inferido pelo analisador de um agente utilizador HTML, mas não pelo analisador de um agente utilizador XML. Assim deve ser sempre explicito e adicionar o elemento tbody se o mesmo é referido num selector CSS.
- No espaço de nomeação XHTML, é de esperar que os agentes utilizadores reconheçam o atributo "id" como um atributo do tipo ID. Assim, as folhas de estilo devem ser capazes de continuar a usar o selector abrevidado "#" mesmo se o agente utilizador não ler o DTD.
- No espaço de nomeação XHTML, é de esperar que os agentes utilizadores reconheçam o atributo "class". Assim, as folhas de estilo devem ser capazes de continuar a usar a sintáxe abreviada de selectores ".".
- A CSS define regras de conformidade diferentes para documentos HTML e XML; não se esqueça que as regras HTML são aplicáveis a documentos XHTML entregues como HTML e que as regras XML são aplicáveis quando os documentos XHTML são entregues como XML.
Referir o elementos
style
quando se serve como XMLEm HTML 4 e XML o elemento
style
pode ser usado para definir as regras de estilo internas do documento. Em XML, é usada uma declaração de folha de estilo XML para definir as regras de estilo. De forma a ser compatível com esta convenção, os elementosstyle
devem ter o seu identificador de fragmento usando o atributoid
, e a declaração de folha de estilo XML deve referir-se a esse fragmento. Por exemplo:<?xml-stylesheet href="http://www.w3.org/StyleSheets/TR/W3C-REC.css" type="text/css"?> <?xml-stylesheet href="#estiloInterno" type="text/css"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt" lang="pt"> <head> <title>Um exemplo de folha de estilo interna</title> <style type="text/css" id="estiloInterno"> code { color: green; font-family: monospace; font-weight: bold; } </style> </head> <body> <p> O texto que se segue usa o nosso <code>estilo interno</code>. </p> </body> </html>
Caracteres de espaço em branco em HTML e XML
Alguns caracteres legais em documentos HTML são ilegais em documentos XML. Por exemplo, em HTML o caracter de avanço de folha (U+000C) é tratado como espaço em branco, em XHTML, devido à definição de caracteres é ilegal.
A referência de entidade com nome '
O caracter
'
(o apóstrofe, U+0027) foi introduzido no XML 1.0 mas não aparece no HTML. Os autores devem assim usar o'
em vez de'
de forma a funcionar como se espera em agentes utilizadores HTML 4.
Web,ruby, Ajax ou qualquer outra coisa que me venha a cabeça (com prioridade para esta última)
19 dezembro, 2005
Directrizes de compatibilização HTML/ XHTML
Subscrever:
Enviar feedback (Atom)
Sem comentários:
Enviar um comentário