1.A versão oficial e original, em inglês, deste documento, encontra-se em: http://www.w3.org/TR/2002/REC-xhtml1-20020801 e os seus direitos são conforme:

2. A única versão normativa deste documento é a versão em língua inglesa que se encontra no sítio do W3C.

3. O presente documento traduzido para a língua portuguesa do Brasil, pode conter erros de tradução.

Este documento foi traduzido em 28 de novembro de 2003 por: Maurício Samy Silva e encontra-se hospedado no seu sítio "CSS para WebDesign" em http://www.maujor.com/
A traduçao para a língua portuguesa do Brasil, foi para este documento. Vale dizer, as páginas remetidas pelos links aqui indicados, estão em sua versão original em língua inglesa.
Por favor, relate erros encontrados neste documento para Maurício Samy Silva


W3C

XHTML™ 1.0 The Extensible HyperText Markup Language (Segunda Edição)

Uma reformulação do HTML 4 em XML 1.0

Recomendação W3C de 26 de janeiro de 2000, revisada em 1 de agosto de 2002

Esta versão :
http://www.w3.org/TR/2002/REC-xhtml1-20020801
Última versão:
http://www.w3.org/TR/xhtml1
Versão anterior:
http://www.w3.org/TR/2000/REC-xhtml1-20000126
Versão com marcas das modificações:
http://www.w3.org/TR/2002/REC-xhtml1-20020801/xhtml1-diff.html
Autores:
Ver agradecimentos .

Ver a listagem de erros deste documento, na qual podem ter sido incluidas algumas correções normativas. Ver também traduções.

Este documento está disponível nos seguintes formatos não normativos: arquivo XHTML multi-partes, Versão PostScript , Versão PDF, arquivo ZIP, e arquivo Gzip'd TAR.


Sumário

Esta especificação define a segunda edição do XHTML 1.0, uma reformulação do HTML 4 como aplicação XML 1.0, e as três DTDs (Definição do Tipo de Documento) correspondentes àquelas definidas em HTML 4. A interpretação semântica dos elementos e de seus atributos estão definidas nas Recomendações W3C para HTML 4 e fornecem as bases para futuras expansões do XHTML. A compatibilidade com as aplicações de usuários já existentes no HTML é possível desde que sejam observadas uma pequena série de diretrizes.

Status deste documento

Esta seção descreve o status deste documento à época da sua publicação. Outros documentos complementares futuros, sobrescreverão este documento atual. A última versão da série destes documentos encontra-se no sítio do W3C.

Este documento é a segunda edição da especificação XHTML 1.0 e incorpora as modificações constantes da errata de 1 de agosto de 2002. As alterações constantes desta versão comparada com a versão anterior, estão ressaltadas em uma versão onde foram destacadas as modificações.

Esta segunda edição não é uma nova versão de XHTML 1.0 (originalmente publicada em 26 de janeiro de 2000). As modificações neste documento refletem as correções nele introduzidas, em decorrência de comentários vindos da comunidade envolvida, bem assim como resultado de conclusões do Grupo de Trabalho do HTML. Não há mudanças de cunho significativo neste documento - somente uma adaptação aos erros detectados.

Uma listagem de erros já detectados neste documento pode ser encontrada em: http://www.w3.org/2002/08/REC-xhtml1-20020801-errata.

Por favor, detectando qualquer erro neste documento, pede-se informar a www-html-editor@w3.org (archive). Discusões abertas, sôbre as características do HTML estão disponíveis em listas de discussão em www-html@w3.org (archive).

Este documento foi produzido como parte das Atividades HTML do W3C. As metas do Grupo de Trabalho do HTML (acessíveis a membros somente) são discutidas no estatuto do Grupo de Trabalho do HTML.

À época da publicação deste documento, o grupo de trabalho acreditava não haver qualquer pendência a resolver. Uma lista de pendências a estas especificações pode ser encontrada em: página de pendências.

Uma lista das Recomendações do W3C em vigor e outros documentos técnicos está disponível em: http://www.w3.org/TR.

Índice Rápido

Índice completo

1. O que é XHTML?

Esta seção é informativa.

XHTML é uma família de módulos e documentos atuais e futuros que reproduzem, englobam e ampliam o HTML 4 [HTML4]. Os documentos da família XHTML são baseados em XML e modernamente têm sido projetados para trabalhar em conjunto com aplicações XML de usuários. Detalhes acerca desta família e da sua evolução são discutidos em: [XHTMLMOD].

XHTML 1.0 (a presente especificação) é o primeiro tipo de documento da família XHTML. É uma reformulação dos três tipos de documentos HTML 4 como aplicações de XML 1.0 [XML]. Foi concebida para ser uma linguagem de conteúdos em conformidade com XML e seguindo algumas diretrizes simples ser também compatível com aplicações de usuários em HTML 4. Desenvolvedores que migrarem seus conteúdos para XHTML 1.0 perceberão os seguintes benefícios:

A família XHTML é o próximo degrau na evolução da Internet. Migrando para XHTML os desenvolvedores de conteúdo estarão entrando no mundo XML com todos seus benefícios assegurando para seus conteúdos a compatibilidade com aplicações passadas e futuras

1.1. O que é HTML 4 ?

HTML 4 [HTML4] é uma aplicação SGML (Standard Generalized Markup Language) em conformidade com a International Standard ISO 8879, e está mundialmente reconhecida como a linguagem padrão para publicação World Wide Web.

SGML é uma linguagem para descrever linguagem de marcação, particularmente aquela linguagem utilizada para troca, gerenciamento e publicação eletrônica de documentos. HTML é um exemplo de linguagem definida em SGML.

SGML tem sido usada, desde os meados dos anos 80 e tem permanecido uma linguagem estável. Está estabilidade deve-se ao fato de SGML ser ao mesmo tempo diversificada e flexível. Contudo esta flexibilidade tem seu prêço, e o preço está no alto nível de complexidade da linguagem, o que tem inibido sua adoção em diversos ambientes, incluindo aí a World Wide Web.

HTML, foi concebida originariamente para ser uma linguagem destinada ao tráfego de documentos de caráter científico e técnico, adaptada para ser usada por não especialistas naqueles tipos de documentos. HTML contorna o problema da complexidade do SGML especificando um pequeno conjunto de tags com características estruturais e semânticas adaptadas para gerenciar documentos relativamente simples. Além de simplicar a estrutura dos documentos HTML adicionou suporte para HiperTexto. As facilidades de multi-mídia foram acrescidas posteriormente.

Em um espaço de tempo muito pequeno HTML tornou-se mundialmente popular e rapidamente ultrapassou seus propósitos iniciais. Desde os primórdios do HTML, tem sido inventados novos elementos tanto para uso com o HTML (como padrão) quanto para adaptações HTML, para atender a um mercado vertical altamente especializado. Esta proliferação de novos elementos trouxe consigo problemas de interoperabilidade dos documentos web com as diversas plataformas.

1.2. O que é XML?

XML é uma abreviação para Extensible Markup Language [XML].

XML foi concebida como uma maneira de resgatar a potencialidade e flexibilidade do SGML sem a sua complexidade. Embora sendo uma forma restrita de SGML, XML ainda assim, conserva todo o poder e riqueza das características do SGML.

XML conserva as características do SGML ao mesmo tempo que descarta aquelas mais complexas que tornavam a criação e projeto de programas adaptados, mais difícil e dispendiosa.

1.3. Qual a necessidade de XHTML?

Os benefícios da migração para XHTML 1.0 foram acima descritos. Alguns benefícios gerais a mais são:

2. Definições

Esta seção é normativa.

2.1. Terminologia

Os termos a seguir são usados nesta especificação. estes termos estendem as definições em [RFC2119] baseados em definições similares conforme as ISO/IEC 9945-1:1990 [POSIX.1]:

May (pode)
Do ponto de vista das aplicações a palavra "may" (pode) deve ser interpretada como uma facilidade opcional não obrigatória segundo esta especificação, mas que pode ser fornecida. Com respeito aos Requisitos de conformidades para documentos a palavra "may" significa que a facilidade nao deve ser usada, O termo "optional" tem o mesmo significado da "may".
Must (deve)
Nesta especificação a palavra "must" (deve) tem o significado de uma determinação obrigatória quer seja para aplicações ou para documentos "strict" conformes com a especificação, dependendo do contexto. O termo "shall" (deverá) tem o mesmo significado de "must" (deve).
Opcional
Ver "May".
Reserved (reservado)
Um valor ou comportamento não especificado e não permitido em documentos conforme e nem suportado por aplicações de usuários conformes.
Shall
Ver "Must".
Should (deveria)
Com respeito as aplicações a palavra "should" (deveria) deve ser interpretada como uma recomendação de implementação e não como um requisito. Com respeito aos documentos a palavra "should" (deveria) deve ser interpretada como uma prática de programação recomendada para documentos em geral e um requisito para documentos XHTML "strict" conformes em particular.
Supported (suportados)
Algumas facilidades nesta especificação são opcionais. Se uma facilidade é suportada por uma aplicação, ela se comporta segundo os padrões aqui especificados.
Unspecified (não especificada)
Um valor ou comportamento não está especificado, quando as especificações não definem os requisitos de portabilidade para aquela facilidade ou aplicação mesmo quando ela interage com um documento que as utilize. Um documento que requeira um comportamento específico em determinada situação ao invés de tolerar qualquer comportamento quando usar a facilidade, não é um documento XHTML "strict" conforme.
 

2.2. Termos Gerais

Attribute (atributo)
Um atributo é um parâmetro de um elemento declarado nas DTD. O tipo do atributo e sua faixa de valores, incluindo um possível valor "default" se define nas DTD.
DTD
DTD, é a sigla para "Documento Type Definition" (definição do tipo de documento), e trata-se de uma coleção de declarações de marcação XML que definem a estrutura legal dos elementos, e atributos que estão disponíveis para uso em documentos que cumpram as DTD.
documento (documento)
Um documento é um encadeamento de dados que após serem combinados com outros encadeamentos, aos quais se referenciem, resultam em uma estrutura capaz de transmitir informações contidas em elementos qua são organizados segundo especificado na correspondente DTD. Ver Requisitos de conformidades para documentos para maiores informações.
Element (elementos)
Um elemento é uma unidade estrutural de um documento, devidamente declarado nas DTD. O modêlo de conteúdo dos elementos está definido na DTD e um significado adicional pode ser definido em uma descrição comentada do elemento.
Facilities (facilidades)
Facilidades são elementos, atributos e a sintaxe associada a eles.
Implementation (implementação)
Ver User Agent (aplicação de usuário).
Parsing
Parsing (análise) é ato segundo o qual um documento é escaneado ("varrido"), e como a informação contida no documento é filtrada no contexto dos elementos através dos quais a informação foi estruturada.
Rendering
Rendering (renderização) é o ato por meio do qual é apresentada a informação contida em um documento. Esta apresentação é feita da maneira mais apropriada ao ambiente - tipo de mídia - (por exemplo, auditivamente, visualmente, para impressão).
User Agent (aplicação de usuário)
Aplicação de usuário é o sistema que processa os documentos XHTML em conformidade com estas especificações. Ver Requisitos de conformidades para aplicações de usuários para maiores informações
Validation (validação)
Validação é o processo pelo qual os documentos com base na sua Declaração de Tipo de Documento, DTD são verificados, assegurando-se que sua estrutura, elementos, e atributos são consistentes com as DTD declaradas.
Well-formed (bem formados)
Um documento diz-se bem formado quando está estruturado de acordo com as regras definidas na Seção 2.1 das Recomendações para XML 1.0 [ XML ].

3. Definições Normativas do XHTML 1.0

Esta seção é normativa.

3.1. Requisitos de conformidades para documentos

Esta versão da XHTML define as conformidades de documentos em modo XHTML 1.0 "strict", os quais estão restritos a elementos e atributos XML e XHTML 1.0 namespaces. Ver Seção 3.1.2 para informações sobre o uso de XHTML com outros modos de declaração, como seja, para incluir metadata expressadas nas RDF dos documentos XHTML.

3.1.1. Requisitos de conformidades para documentos no modo "strict"

Um documento "strict" conforme com XHTML é um documento XML que atende somente as facilidades descritas como mandatórias nesta especificação. Documentos nestas condições devem satisfazer os seguintes critérios:

  1. Estar conforme com as declarações contidas em uma das três DTDs encontradas em DTDs e no Apendice B.

  2. O elemento raiz do documento deve ser html.

  3. O elemento raiz do documento deve conter uma declaração xmlns para o namespace em XHTML [XMLNS]. O namespace em XHTML é definido como: http://www.w3.org/1999/xhtml. Abaixo, um exemplo de elemento raiz:

    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    
  4. Deve haver no documento, uma declaração DOCTYPE que precede o elemento raiz do documento. A declaração de identificador público contida no DOCTYPE deve referenciar-se a uma das três DTDs encontradas em DTDs através do uso do respectivo Formal Public Identifier (Identificador Público Formal). O sistema identificador adaptar-se-a às características do sistema local.

    <!DOCTYPE html 
         PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    
    <!DOCTYPE html 
         PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <!DOCTYPE html 
         PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
    
  5. O subconjunto das DTD não deve ser usado para sobrescrever entidades parâmetros nas DTD.

Uma declaração XML não é requerida em todo documento XML, contudo recomenda-se que os autores de documentos XHTML usem a declaração XML nos seus documentos. Tal declaração é requerida quando a codificação de caracteres do documento for outra que não a a codificação default UTF-8 ou UTF-16 e nenhuma codoficação for determinada por um protocolo de nível superior. A seguir um exemplo para um documento XHTML. Neste exemplo, a declaração XML foi incluida.

<?xml version="1.0" encoding="UTF-8"?>
<!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="en" lang="en">
  <head>
    <title>Virtual Library</title>
  </head>
  <body>
    <p>Moved to <a href="http://example.org/">example.org</a>.</p>
  </body>
</html>

3.1.2. Uso de XHTML com outros modos de declaração

O namespace em XHTML pode ser usado com outro namespace XML de acordo com [XMLNS], embora tais documentos não sejam XHTML 1.0 "strict" conformes como definido acima. W3C está procurando caminhos para especificar conformidades para documentos com múltiplos namespaces. Para um exemplo, ver [XHTML+MathML].

O exemplo a seguir mostra a maneira pela qual XHTML 1.0 pode ser usado em conjunto com a recomendação MathML :

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <title>A Math Example</title>
  </head>
  <body>
    <p>The following is MathML markup:</p>
    <math xmlns="http://www.w3.org/1998/Math/MathML">
      <apply> <log/>
        <logbase>
          <cn> 3 </cn>
        </logbase>
        <ci> x </ci>
      </apply>
    </math>
  </body>
</html>

O exemplo a seguir mostra a maneira pela qual a marcação XHTML 1.0 pode ser incorporada a namespace em XML :

<?xml version="1.0" encoding="UTF-8"?>
<!-- initially, the default namespace is "books" -->
<book xmlns='urn:loc.gov:books'
    xmlns:isbn='urn:ISBN:0-395-36341-6' xml:lang="en" lang="en">
  <title>Cheaper by the Dozen</title>
  <isbn:number>1568491379</isbn:number>
  <notes>
    <!-- make HTML the default namespace for a hypertext commentary -->
    <p xmlns='http://www.w3.org/1999/xhtml'>
        This is also available <a href="http://www.w3.org/">online</a>.
    </p>
  </notes>
</book>

3.2. Requisitos de conformidades para aplicações de usuários

Abaixo uma relação de critérios de conformidade a serem observados por uma aplicação de usuário.

  1. Para ser consistente com a Recomendação para XML 1.0 [ XML ], uma aplicação de usuário deve analisar gramaticamente e avaliar o documento XHTML quanto a sua coreta formatação. Se a aplicação de usuário pretende ser uma aplicação validante, ela deve ser capaz de validar os documentos também para suas DTDs de acordo com [ XML ].
  2. Quando a aplicação de usuário pretende ser uma aplicação que suporte as facilidades definidas ou requeridas por esta especificação através das referências normativas, ela (aplicação de usuário) deve suportá-las de acordo com as definições destas especificação para aquelas facilidades.
  3. Quando uma aplicação de usuário processa um documento XHTML como XML genérico, ela deveria reconhecer tão somente atributos do tipo ID (isto é o atributo id da maioria dos elementos HTML) como identificadores de fragmentos.
  4. Se uma aplicação de usuário encontra um elemento que não reconhece, deve processar o seu conteúdo.
  5. Se uma aplicação de usuário encontra um atributo que não reconhece, ela deve ignorar toda a especificação do atributo não reconhecido (isto é, o atributo e seu valor).
  6. Se uma aplicação de usuário encontra um valor de atributo que não reconhece, ela deve usar o valor default do atributo.
  7. Se uma aplicação de usuário encontra uma referência a uma entidade (diferente daquelas entidades definidas nesta especificação ou nas Recomendações XML) para a qual ela (aplicação de usuário ) não processou qualquer declaração ( o que pode acontecer se a declaração é um subconjunto externo ao qual a aplicação não teve acesso) a entidade deve ser processada como caracteres (começando com "&" (ampersand) e terminando com ponto-e-vírgula) que compõem a referência a entidade.
  8. Quando processando conteúdos as aplicações de usuário encontrarem caracteres ou referências a entidades do tipo caracter que sejam reconhecidas mas não "renderizáveis" devem substituí-las por outras com o mesmo significado e que sejam "renderizáveis" ou devem apresentar o documento de uma forma em que fique claro para o usuário que a "renderização" deu-se de maneira incompleta.
  9. Espaços em branco devem ser de acordo com as regras abaixo. Os caracteres a seguir estão definidos em [ XML ] como caracteres de espaços em branco.

    O processador XML normaliza os diferentes sistemas de códigos de em único caracter de LINE FEED (avanço de linha), que é passado à aplicação.

    As aplicações de usuário devem extrair das CSS as informações para processamento de caracteres de espaços em branco [CSS2]. Notar que a recomendação CSS2 não explicita caracteres de espaços em branco fora do conjunto de caracteres do tipo Latin. Esta explicitação será feita em uma futura versão de CSS e nesta ocasião então será feita também a atualização na presente referência.

Notar que para produzir um documento XHTML Canônico (Canonical XHTML) as regras acima devem ser seguidas bem assim como as regras constantes de [XMLC14N] .

4. Diferenças para o HTML 4

Esta seção é informativa.

Dado ao fato de que XHTML é uma aplicação XML, certas práticas que são legais em HTML 4 baseado em SGML [HTML4] devem ser modificadas.

4.1. Os documentos devem ser bem formados

Bem formado é um conceito novo introduzido por [XML]. Em essência, isto significa que todos os elementos devem ter suas tags de fechamento ou serem escritos com uma sintaxe especial ( descrita adiante) e ainda, que todos os elementos devem estar convenientemente aninhados.

Embora "overlapping" seja ilegal em SGML, é amplamente tolerado pelos navegadores em uso.

CORRETO: elementos aninhados.

<p>aqui, um parágrafo em <em>negrito</em>.</p>

INCORRETO: elementos em "overlapping"

<p>aqui, um parágrafo em<em>negrito.</p></em>

4.2. Elementos e nomes de atributos devem ser em letras minúsculas

Documentos XHTML devem usar minúsculas para todos os elementos do HTML, bem como para nomes de atributos. Esta diferença é necessária porque XML é case-sensível (sensível ao tamanho da letra). Por exemplo, . <li> and <LI> são tags diferentes.

4.3. O uso de tags de fechamento é obrigatório

Em SGML - HTML 4 é permitido para determinados elementos, omitir-se a tag de fechamento. XML não permite omissão de qualquer tag de fechamento. Todos os elementos excetuados aqueles vazios declarados nas DTD, tem que ter tag de fechamento. Os elementos vazios declarados nas DTD podem ter tag de fechamento ou usar uma abreviação para elemento vazio (ver Elementos vazios).

CORRETO: elementos com fechamento

<p>este é um parágrafo.</p><p>este é outro parágrafo.</p>

INCORRETO: elementos sem fechamento

<p>este é um parágrafo.<p>ste é outro parágrafo.

4.4. Os valores de atributos devem estar entre aspas

Todos os valores de atributo devem ser declarados entre aspas, mesmo aqueles valores com caracteres númericos.

CORRETO: valores de atributo entre aspas

<td rowspan="3">

INCORRETO: valores de atributos sem uso de aspas

<td rowspan=3>

4.5. A sintaxe para atributos deve ser escrita por completo

XML não suporta abreviações na sintaxe para atributos. Valores de atributos devem ser escritos por completo. Nomes de atributos tais como compact e checked não podem ocorrer em elementos sem que seus respectivos valores sejam declarados.

CORRETO: atributos por extenso

<dl compact="compact">

INCORRETO: atributos abreviadamente

<dl compact>

4.6. Elementos vazios

Elementos vazios devem ter uma tag de fechamento ou a tag de abertura deve terminar com />. Como exemplo, <br/> ou <hr></hr>. Ver Diretrizes de Compatibilidade HTML para informações a respeito de compatibilidade com as aplicações de usuário no HTML 4.

CORRETO: Elementos vazios com terminação

<br/><hr/>

INCORRETO: Elementos vazios sem terminação

<br><hr>

4.7. Espaços em branco em valores de atributos

As aplicações de usuário processam os atributos de acordo com a Seção 3.3.3 do [XML]:

4.8. Os elementos script e style

Os elementos script e style em XHTML, são declarados como elementos com conteúdo #PCDATA. Como resultado, < e & será tratado como uma marcação de início e entidades tais como &lt; e &amp; serão reconhecidas pelos processadores XML como referências a entidades. Englobando o conteúdo dos elementos script ou style dentro de uma seção CDATA evita o processamento destas entidades.

<script type="text/javascript">
<![CDATA[
... unescaped script content ...
]]>
</script>

As seções CDATA são reconhecidas pelos processadores XML e aparecem como nós no DOM, ver Secão 1.3 das Recomendações Nível 1 para DOM [DOM].

Como alternativa podem ser usados documentos externos de scripts e de estilo.

4.9. Exclusões SGML

SGML proporciona ao escritor de uma DTD a possibilidade de impedir que elementos especificos sejam aninhados dentro de outros elementos. Estes impedimentos (chamados "exclusões") não são possíveis em XML.

Por exemplo, uma declaração HTML 4 Strict DTD proibe que um elemento 'a' seja aninhado dentro de outro elemento 'a' em qualquer nível de profundidade de aninhamento. Não é possível estabelecer tal proibição em XML. Ainda que este tipo de proibição não possa ser definido em uma DTD, determinados elementos não devem ser aninhados. Um sumário arrolando estes tipos de elementos bem como aqueles que não devem ser aninhados neles mesmos, pode ser consultado em: Elementos Incompatíveis.

4.10. O elemento "id" e o atributo "name"

O HTML 4 definia o atributo name para os elementos a, applet, form, frame, iframe, img, e map. HTML 4 também introduziu o atribute id. Ambos estes atributos foram projetados para serem usados como identificadores.

Em XML, os identificadores são do tipo ID, e poderá existir somente um atributo do tipo ID por elemento. Assim, em XHTML 1.0 o atributo id é definido como do tipo ID. Com o objetivo de certificar-se que os documentos XHTML 1.0 são documentos XML bem estruturados, DEVEM usar o atributo id ao definir identificadores para os elementos listados acima. Ver as Diretrizes de Compatibilidade HTML para informações de como assegurar-se de que tais âncoras sejam compatíveis quando se servirem de documentos XHTML cujo tipo de mídia seja text/html.

Notar que em XHTML 1.0, o atributo name destes elementos está formalmente em desuso e será excluido nas versões futuras de XHTML.

4.11. Atributos com conjunto de valores pré-definidos

HTML 4 e XHTML ambos têm certos atributos com um conjunto pré-definido e limitado de valores (por exemplo, o atributo type do elemento input). Em SGML e XML, eles são chamados de (enumerated attributes) atributos enumerados. Emr HTML 4, estes valores são case-insensitive, (insensíveis ao tamanho de letra) desta forma, por exemplo, o valor f TEXT é equivalente ao valor text. Em XML, estes valores são case-sensitive (sensíveis ao tamanho de letra), e em XHTML 1 todos os valores são definidos com letras minúsculas.

4.12. Referências a entidades através de valores hex

Tanto SGML quanto XML permitem que se faça referência a caracteres pelo uso de valores hexadecimais. Em SGML estas referências podem ser feitas usando-se tanto &#Xnn; quanto &#xnn;.Em documentos XML você deve usar letras minúsculas (i.e. &#xnn;)

5. Itens de Compatibilidade

Esta seção é normativa.

Embora não haja qualquer exigência para que documentos XHTML 1.0 sejam compatíveis com aplicações de usuário, na prática isto é fácil de se conseguir. Diretrizes para criação de documentos compatíveis podem ser encontadas no Apendice C.

5.1. Tipos de mídia para Internet

Documentos XHTML que seguem as diretrizes arroladas no Apendice C, "Diretrizes de Compatibilidade HTML" podem ser indexados como tipo de mídia para Internet "text/html" [RFC2854], ja que são compatíveis com a maioria dos navegadores HTML. Aqueles documentos e qualquer outro documento que esteja em conformidade com esta especificação pode também ser indexado como tipo de mídia para Internet "application/xhtml+xml" como definido em [RFC3236]. Para mais informações a respeito do uso dos tipos mídia, ver a nota informativa [XHTMLMIME].

A. DTDs

Este Apendice é normativo.

Estas DTDs e o rol das entidades caracteres, constituem uma parte normativa desta especificação. Um Catálogo contendo o conjunto completo dos arquivos de DTD com declaração XML e SGML esta disponível em um arquivo zip e um arquivo gzip'd tar Usuários que desejam uma cópia DTD específica para sua locaizaçãol, deveriam fazer o donwload e usar suas cópias específicas ao invés de se utilizar das cópias constantes do Catálogo acima mencionado.

A.1. Definições do Tipo de Documento

Estas DTDs assemelhan-se às DTDs do HTML 4. W3C recomenda que você use a versão oficial destas DTDs e seus SISTEMAS de identificadores quando validar conteúdos. Se você nescessitar usar estas DTDs localmente você deverá fazer o download de um dos arquivos desta versão. Para complementação as versões normativas das DTDs foram aqui incluidas:

A.1.1. XHTML-1.0-Strict

O arquivo DTD/xhtml1-strict.dtd é uma parte normativa desta especificação. As anotações de conteúdo deste arquivo estão disponíveis em uma seção separada para complementação.

A.1.2. XHTML-1.0-Transitional

O arquivo DTD/xhtml1-transitional.dtd é parte normativa desta especificação. As anotações de conteúdo deste arquivo estão disponíveis em uma seção separada para complementação.

A.1.3. XHTML-1.0-Frameset

O arquivo DTD/xhtml1-frameset.dtd é parte normativa desta especificação. As anotações de conteúdo deste arquivo estão disponíveis em uma seção separada para complementação.

A.2. Rol das entidades caracteres

Rol das entidades caracteres, XHTML e o mesmo do HTML 4, com modificações para poderem ser validados como declarações de entidades XML 1.0. Notar que a entidade símbolo para a moeda Euro (&euro; ou &#8364; ou &#x20AC;) está definida no conjunto dos caracteres especiais.

A.2.1. Caracteres Latin-1

O arquivo DTD/xhtml-lat1.ent é parte normativa desta especificação. As anotações de conteúdo deste arquivo estão disponíveis em uma seção separada para complementação.

A.2.2. Caracteres especiais

O arquivo DTD/xhtml-special.ent é parte normativa desta especificação. As anotações de conteúdo deste arquivo estão disponíveis em uma seção separada para complementação.

A.2.3. Símbolos

O arquivo DTD/xhtml-symbol.ent é parte normativa desta especificação. As anotações complementares ao conteúdo deste arquivo pode ser lido em uma seção separada.

B. Elementos Incompatíveis

Este apêndice é normativo.

A seguir os elementos que estão proibidos de conter outros elementos (ver Exclusões SGML). Esta proibição aplica-se a qualquer nível de aninhamento, isto é, vale para qualquer grau descendente.

a
não devem conter outros elementor a
pre
não devem conter os elementos img, object, big, small, sub, ou sup
button
não devem conter os elementos input, select, textarea, label, button, form, fieldset, iframe ou o elemento isindex
label
não devem conter outros elementos label
form
não devem conter outros elementos form

C. Diretrizes de Compatibilidade HTML

Este apêndice é informativo.

Este apêndice é um sumário das diretrizes de projeto, para autores que desejarem que seus documentos XHTML renderizem corretamente em aplicações HTML de usuários. Notar que esta recomendação não define a maneira pela qual as aplicações conforme HTML de usuário devem processar os documentos HTML. Muito menos define o significado dos tipos de mídia para Internet text/html. Para estas definições, ver [HTML4] e [RFC2854] respectivamente.

C.1. Processando instruções e as declarações XML

Esteja consciente de que as instruções de processamento são executadas em algumas aplicações de usuário. Também que algumas aplicações de usuário interpretam declarações XML de uma maneira que o documento não seja reconhecido como XML preferencialmente que HTML, e assim não "renderizam" o documento da forma como era esperado. Buscando a compatibilidade com estes tipos de navegadores, você pode querer evitar o uso de instruções de processamento XML ou mesmo declarações XML. Lembre-se no entanto que quando uma declaração XML não for incluída em um documento, ele somente poderá usar a codificação default de caracteres UTF-8 or UTF-16.

C.2. Elementos vazios

Inclua um espaço antes de / > (barra-sinal de maior) nos elementos vazios. Por exemplo, <br />, <hr /> e <img src="karen.jpg" alt="Karen" />. Use a sintaxe de tag simplificada para elementos vazios. Por exemplo <br />, ao invés de <br></br> permitido em XML mas que traz resultados inesperados em certas aplicações de usuário..

C.3. Elementos abreviados e elementos vazios

Ocorrendo uma instância vazia dentro de um elemento cujo modelo de conteúdo for (não vazio) EMPTY (por exemplo, um título ou parágrafo) não use a sintaxe abreviada (por exemplo, use <p> </p> e não <p />).

C.4. Folhas de estilos incorporadas e scripts

Use folhas de estilo externas se elas contém os caracteres < ou & ou ]]> ou --. Use arquivos externos de scripts, se eles contém os caracteres < ou & ou ]]> ou--. Notar que os analizadores de XML suprimem os conteúdos de comentários. No entretanto a prática histórica de se "esconder" scripts e folhas de estilos dos navegadores mais antigos com o uso de marcas de comentário e com a finalidade de compatibilizar os documentos com aqueles navegadores, parece não funcionar como esperado em aplicações XML.

C.5. Quebras de linhas em declarações de valores de atributos

Evite quebras de linha bem como múltiplos espaços em branco dentro dos valores de atributos. Eles são processados de maneira inconsistente pelas aplicações de usuário.

C.6. O elemento isindex

Não inclua mais que um elemento isindex dentro da tag head do documento. O elemento isindex está em desuso a favor do elemento input.

C.7. Os atributos lang e xml:lang

Use ambos os atributos lang e xml:lang para especificar o idioma de um documento. O valor do atributo xml:lang tem a precedência.

C.8. Identificadores de fragmentos

Em XML, URI [RFC2396] que terminam com identificadores de fragmento da forma "#foo" não se referem a elementos com o atributo name="foo"; ao contrário eles se referem a elementos com atributo do tipo ID. Por exemplo, o atributo id do HTML 4. Muitos clientes HTML atuais não suportam o uso de atributo do tipo ID desta maneira, assim deve-se atribuir valores idênticos a ambos os atributos para assegurar total compatibilidade com o passado e com o futuro (por exemplo, <a id="foo" name="foo">...</a>).

Ainda mais. Como o conjunto de valores legais para atributos do tipo ID é muito menor do que o conjunto para os do tipo CDATA, o tipo do atributo name foi mudado para NMTOKEN. Este atributo está limitado de uma tal maneira que só pode assumir os mesmos valores que os para os do tipo ID, ou do tipo Name produzidos em XML 1.0 Section 2.3, produção 5. Lamentavelmente esta limitação não pode ser expressa nas DTDs dos XHTML 1.0. Devido a esta limitação é preciso cuidado quanto corverter-se documentos HTML existentes para XHTML 1.0. Os valores destes atributos devem ser únicos no documento, válidos e sem qualquer referência a estes identificadores de fragmento (tanto interna quanto externa) devem atualizar-se durante a conversão.

Notar que a coletânea de valores legais em XML 1.0 Seção 2.3, produção 5 é muito maior do que aquelas de uso permitido em tipos de ID e de NAME definidos no HTML 4. Quando definir-se identificadores de fragmento para serem compatíveis com aplicações passadas, usar somente cadeias de caracteres pertencentes aos conjuntos[A-Za-z][A-Za-z0-9:_.-]*. Ver Seção 6.2 do [HTML4] para maiores informações.

Finalmente notar que XHTML 1.0 tende a colocar em desuso o atributo name dos elementos a, applet, form, frame, iframe, img, e map e ele (atributo name) será excluido das futuras versões da XHTML.

C.9. Codificação de caracteres

Historicamente a codificação de caracteres dos documentos HTML é tanto especificada por um servidor web através do parâmetro identificador de caracter em Content-Type no cabeçalho do HTTP como via um meta elemento dentro do próprio documento. Em um documento XML, a codificação de caracteres do documento é especificada na declaração XML (por exemplo, <?xml version="1.0" encoding="EUC-JP"?>). Com fins de portabilidade para a apresentação de documentos com codificação de caracteres específica, o melhor caminho é o de assegurar-se de que o servidor web fornece suporte com cabeçalhos corretos. Se isto não for possível o documento que pretenda uma maneira explícita de codificar seus caracteres deve incluir tanto declarações XML quanto declarações de codificação e mais uma meta http-equiv statement (por exemplo, <meta http-equiv="Content-type" content="text/html; charset=EUC-JP" />).Nas aplicações de usuários em conformidade com XHTML o valor de declaração codificada do XML tem precedência.

Nota: Certifique-se de que se um documento deve incluir uma declaração de codificação de caracteres na meta http-equiv statement, tal documento deve ser interpretado por servidores HTTP e/ou aplicações de usuários, como sendo para tipos de mídia para Internet conforme ali definido. Se um documento é para ser usado por váriados tipos de mídia, a interpretação da codificação do documento deve ser via servidor HTTP.

C.10. Atributos booleanos

Algumas aplicações de usuário não são capazes de interpretar atributos booleanos, quando estes são apresentados em sua forma extendida (não abreviada) como requerido por XML 1.0. Notar que este problema não afeta aplicações de usuário compatíveis com HTML 4. Os seguintes atributos enquadram-se neste caso:compact, nowrap, ismap, declare, noshade, checked, disabled, readonly, multiple, selected, noresize, defer.

C.11. O DOM (Modelo Objeto de Documento) e XHTML

A Recomendação para o Modelo Objeto de Documento Nível 1 [DOM] define a interface do Modelo Objeto de Documento para XML e HTML 4. Em HTML 4 o Modelo Objeto de Documento especifica que elementos e nomes de atributos retornem em letras maiúsculas. Em XML o Modelo Objeto de Documento especifica que elementos e nomes de atributos retornem da mesma maneira que foram especificados. In XHTML 1.0, o Modelo Objeto de Documento especifica que elementos e nomes de atributos retornem em letras minúsculas. Esta aparente diferença pode ser vista de dois modos:

  1. Aplicações de usuários que acessam documentos XHTML servidos como tipos de mídia para Internet text/html via DOM podem usar o HTML DOM, e confiar em elementos e nomes de atributos sendo retornados em maiúsculas naquelas interfaces.
  2. Aplicações de usuários que acessam documentos XHTML servidos como tipos de mídia para Internet text/xml, application/xml, or application/xhtml+xml podem tambem usar o XML DOM. Elementos e atributos retornarão em minúsculas. Também alguns elementos XHTML podem ou não aparecer no objeto (tree) árvore porque eles são opcionais do modelo de conteúdo.(por exemplo, o elemento tbody dentro de table). Isto ocorre porque em HTML 4 é permitida a forma abreviada para alguns elementos tal como suas tag's inicial e final (uma característica SGML). Isto não é possível em XML. Melhor do que requerer aos autores de documentosa inserção de elementos estranhos, XHTML tornou esses elementos opcionais. As aplicações de usuários precisam se adaptar a isso. Para maiores informações sôbre este topico, ver [ DOM2 ]

C.12. Usando "&" em valores de atributos ( e em outras definições)

Em ambos SGML e XML, o caracter "ampersand" ( e-comercial) ("&") declara o início de uma referência a entidade (por exemplo, &reg; para marca registrada, cujo símbolo é: "®"). Lamentavelmente muitas aplicações de usuário em HTML, ignoram o uso incorreto deste caracter em documentos HTML - tratando o "&" que não lhes parecem uma referência a entidade, literalmente como se fossem um e-comercial (&). Aplicações de usuário XML não toleram o uso incorreto deste caracter e em consequência, documentos com tal tipo de incorreção não são válidos e consequentemente não conformes com esta especificação. Com o fim de certificar-se que os documentos são compatíveis com aplicações de usuário históricas do HTML e também com aquelas do XML o e-comercial (&) deve ser ele mesmo referenciado como uma entidade caracter (por exemplo,"&amp;"). Por exemplo, quando o artributo href do elemento a se refere a um script CGI que colhe parâmetros, ele deve ser expresso como:http://my.site.dom/cgi-bin/myscript.pl?class=guest&amp;name=user ao invés de http://my.site.dom/cgi-bin/myscript.pl?class=guest&name=user.

C.13. As Folhas de Estilo em Cascata (CSS) e XHTML

As recomendações para Folhas de Estilo em Cascata Nível 2 [CSS2] definem as propriedades de estilo que são aplicáveis a árvore de análises do documento HTML ou XML. Diferenças no modo de análise produzirão resultados visuais ou auditívos distintos dependendo do seletor utilizado. As seguintes dicas reduzirão estes efeitos em documentos os quais são apresentados sem modificação em ambos tipos de mídia:

  1. Folhas de Estilo CSS para XHTML devem usar letras minúsculas para elementos e nomes de atributos.
  2. Em tabelas o elemento tbody será devidamente inferido pelo analisador de uma aplicação de usuário HTML, mas não o será para uma aplicação de usuário XML. Assim você deverá sempre adicionar explicitamente um elemento tbody se ele for refenciado em uma folha de estilo CSS.
  3. Dentro do namespace da XHTML, espera-se que as aplicações de usuário reconheçam o atributo "id" como um atributo do tipo ID. Contudo, as folhas de estilo deverão estar habilitadas a continuar usando a abreviação "#" para sintaxe de seletor, mesmo que a aplicação de usuário não leia a DTD.
  4. Dentro do namespace da XHTML, espera-se que as aplicações de usuário reconheçam o atributo"class" . Contudo, as folhas de estilo deverão estar habilitadas a continuar usando a abreviação "." para sintaxe de seletor
  5. CSS define diferentes regras de conformidade para documentos HTML e XML; certifique-se de que as regras do HTML aplicadas aos documentos XHTML sejam remetidas como HTML e que as regras do XML aplicadas aos documentos XHTML sejam remetidas como XML.

C.14. Referências a elementos de estilo usando XML

Em HTML 4 e XHTML, o elemento style pode ser usado para definir regras de estilo, internamente no documento.. Em XML, uma declaração de folha de estilo XML é usada para definir regras de estilo. Com o propósito de ser compatível com esta convenção, o elemento style deve ter seu identificador de fragmento escrito, com o uso do atributo id e uma declaração de folha de estilo XML deve referenciar-se a este fragmento. Por exemplo:

<?xml-stylesheet href="http://www.w3.org/StyleSheets/TR/W3C-REC.css" 
type="text/css"?>
<?xml-stylesheet href="#internalStyle" 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="en" lang="en">
<head>
<title>An internal stylesheet example</title>
<style type="text/css" id="internalStyle">
  code {
    color: green;
    font-family: monospace;
    font-weight: bold;
  }
</style>
</head>
<body>
<p>
  This is text that uses our 
  <code>internal stylesheet</code>.
</p>
</body>
</html>

C.15. Uso de espaços em branco em HTML vs. XML

Alguns caracteres que são legais em documentos HTML, são ilegais em documentos XML. Por exemplo, em HTML, o caracter "Formfeed" (U+000C) é tratado como espaço em branco em XHTML, dado ao fato de que em XMLesta definição de caracter é ilegal.

C.16. O caracter de referência &apos;

O caracter de referência &apos; (o apóstrofe, U+0027) foi introduzido em XML 1.0 mas não consta do HTML. Deve-se contudo usar &#39; ao invès de &apos; para funcionar corretamente nas aplicaações de usuário do HTML 4.

D. Agradecimentos

Este apêndice é informativo.

Esta especificação foi escrita com a participação dos membros do Grupo de Trabalho da W3C HTML.

À época da publicação desta segunda edição os membros eram:

Steven Pemberton, CWI/W3C (HTML Working Group Chair)
Daniel Austin, Grainger
Jonny Axelsson, Opera Software
Tantek Çelik, Microsoft
Doug Dominiak, Openwave Systems
Herman Elenbaas, Philips Electronics
Beth Epperson, Netscape/AOL
Masayasu Ishikawa, W3C (HTML Activity Lead)
Shin'ichi Matsui, Panasonic
Shane McCarron, Applied Testing and Technology
Ann Navarro, WebGeek, Inc.
Subramanian Peruvemba, Oracle
Rob Relyea, Microsoft
Sebastian Schnitzenbaumer, SAP
Peter Stark, Sony Ericsson

À época da publicação da primeira edição os membros eram:

Steven Pemberton, CWI (HTML Working Group Chair)
Murray Altheim, Sun Microsystems
Daniel Austin, AskJeeves (CNET: The Computer Network through July 1999)
Frank Boumphrey, HTML Writers Guild
John Burger, Mitre
Andrew W. Donoho, IBM
Sam Dooley, IBM
Klaus Hofrichter, GMD
Philipp Hoschka, W3C
Masayasu Ishikawa, W3C
Warner ten Kate, Philips Electronics
Peter King, Phone.com
Paula Klante, JetForm
Shin'ichi Matsui, Panasonic (W3C visiting engineer through September 1999)
Shane McCarron, Applied Testing and Technology (The Open Group through August 1999)
Ann Navarro, HTML Writers Guild
Zach Nies, Quark
Dave Raggett, W3C/HP (HTML Activity Lead)
Patrick Schmitz, Microsoft
Sebastian Schnitzenbaumer, Stack Overflow
Peter Stark, Phone.com
Chris Wilson, Microsoft
Ted Wugofski, Gateway 2000
Dan Zigmond, WebTV Networks

E. Referências

Este apêndice é informativo.

[CSS2]
" Cascading Style Sheets, level 2 (CSS2) Specification ", B. Bos, H. W. Lie, C. Lilley, I. Jacobs, 12 May 1998.
Última versão disponível em: http://www.w3.org/TR/REC-CSS2
[DOM]
" Document Object Model (DOM) Level 1 Specification ", Lauren Wood et al., 1 October 1998.
Última versão disponível em: http://www.w3.org/TR/REC-DOM-Level-1
[DOM2]
" Document Object Model (DOM) Level 2 Core Specification ", A. Le Hors, et al., 13 November 2000.
Última versão disponível em: http://www.w3.org/TR/DOM-Level-2-Core
[HTML]
" HTML 4.01 Specification ", D. Raggett, A. Le Hors, I. Jacobs, 24 December 1999.
Última versão disponível em: http://www.w3.org/TR/html401
[POSIX.1]
"ISO/IEC 9945-1:1990 Information Technology - Portable Operating System Interface (POSIX) - Part 1: System Application Program Interface (API) [C Language]", Institute of Electrical and Electronics Engineers, Inc, 1990.
[RFC2045]
" Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies ", N. Freed and N. Borenstein, November 1996. Note that this RFC obsoletes RFC1521, RFC1522, and RFC1590.
[RFC2046]
" RFC2046: Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types ", N. Freed and N. Borenstein, November 1996.
Available at http://www.ietf.org/rfc/rfc2046.txt . Note that this RFC obsoletes RFC1521, RFC1522, and RFC1590.
[RFC2119]
" RFC2119: Key words for use in RFCs to Indicate Requirement Levels ", S. Bradner, March 1997.
Disponível em: http://www.ietf.org/rfc/rfc2119.txt
[RFC2376]
" RFC2376: XML Media Types ", E. Whitehead, M. Murata, July 1998.
This documento is obsoleted by [ RFC3023 ].
Disponível em: http://www.ietf.org/rfc/rfc2376.txt
[RFC2396]
" RFC2396: Uniform Resource Identifiers (URI): Generic Syntax ", T. Berners-Lee, R. Fielding, L. Masinter, August 1998.
This documento updates RFC1738 and RFC1808.
Disponível em:: http://www.ietf.org/rfc/rfc2396.txt
[RFC2854]
" RFC2854: The text/html Media Type ", D. Conolly, L. Masinter, June 2000.
Available at: http://www.ietf.org/rfc/rfc2854.txt
[RFC3023]
" RFC3023: XML Media Types ", M. Murata, S. St.Laurent, D. Kohn, January 2001.
This documento obsoletes [ RFC2376 ].
Disponível em: http://www.ietf.org/rfc/rfc3023.txt
[RFC3066]
" Tags for the Identification of Languages ", H. Alvestrand, January 2001.
Disponível em: http://www.ietf.org/rfc/rfc3066.txt
[RFC3236]
" The 'application/xhtml+xml' Media Type ", M. Baker, P. Stark, January 2002.
Disponível em:: http://www.ietf.org/rfc/rfc3236.txt
[XHTML+MathML]
" XHTML plus Math 1.1 DTD ", "A.2 MathML as a DTD Module", Mathematical Markup Language (MathML) Version 2.0. Disponível em:: http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd
[XHTMLMIME]
" XHTML Media Types ", Masayasu Ishikawa, 1 August 2002.
Última versão disponível em: http://www.w3.org/TR/xhtml-media-types
[XHTMLMOD]
" Modularization of XHTML ", M. Altheim et al., 10 April 2001.
Última versão disponível em: http://www.w3.org/TR/xhtml-modularization
[XML]
" Extensible Markup Language (XML) 1.0 Specification (Second Edition) ", T. Bray, J. Paoli, C. M. Sperberg-McQueen, E. Maler, 6 October 2000.
Última versão disponível em:: http://www.w3.org/TR/REC-xml
[XMLNS]
" Namespaces in XML ", T. Bray, D. Hollander, A. Layman, 14 January 1999.
XML namespaces proporciona um método simples para qualificar os nomes usados em documentos XML associando-os aos provide a simple method for qualifying names used in XML documentos by associating them with namespaces identified by URI.
Última versão disponível em:: http://www.w3.org/TR/REC-xml-names
[XMLC14N]
" Canonical XML Version 1.0 ", J. Boyer, 15 March 2001.
Este documento descreve um método para gerar uma representação física, forma canônica, de um documento XML
Última versão disponível em: http://www.w3.org/TR/xml-c14n

Level Triple-A conformance icon, W3C-WAI Web Content Accessibility Guidelines 1.0