Modelo de Objeto do Documento

O Document Object Model (DOM) é uma especificação de uma interface para acessar documentos HTML ou XML. É definido pelo World Wide Web Consortium.

Uma implementação que atende a esta especificação consiste em um conjunto de classes junto com seus métodos e atributos em termos de programação orientada a objetos. Permite que programas de computador alterem dinamicamente o conteúdo, estrutura e layout de um documento.

 

Designação

O termo „Document Object Model“ é na verdade um nome errado, uma vez que DOM não é definido como um modelo, mas como uma interface para o acesso de dados definidos e também é designado pelo W3C. A formulação da designação, por outro lado, enfatiza o modelo de objeto bem definido no qual a interface se baseia, cuja validade é um pré-requisito para a validade da interface construída nela. Em um nível mais elevado de abstração, uma interface também é um modelo, ou seja, para a forma como objetos ou dados são acessados.
Histórico
O DOM foi originalmente criado sob a impressão de pelo menos dois desenvolvimentos que moldaram significativamente o mundo do computador no passado recente. Ambos são baseados na necessidade de ser capaz de acessar os dados estruturados em documentos HTML e XML de forma simples e uniforme.
Em meados da década de 1990, como a World Wide Web tornou-se cada vez mais popular, a linguagem de script JavaScript foi inventada, e navegadores populares desde então têm incluído intérpretes que executam tais scripts. O JavaScript definiu maneiras rudimentares de acessar o documento HTML e lidar com eventos. Mais tarde, diferentes fabricantes de navegadores inventaram diferentes modelos de HTML dinâmico (DHTML) que permitiram uma mudança mais abrangente na estrutura e aparência do documento enquanto o documento é exibido no navegador. Os primeiros padrões DOM do W3C são, portanto, tentativas de mesclar, padronizar e, em última análise, substituir as várias técnicas proprietárias JavaScript e DHTML que surgiram durante o tempo das guerras de navegador. Isso foi bem sucedido, de modo que o DOM hoje desempenha um papel central na programação JavaScript.

Ao mesmo tempo, XML emergiu como um formato de troca geral para a representação legível por humanos de dados estruturados, seguindo o sucesso do HTML. O processamento de documentos XML requeria uma interface de programação compreensível, poderosa e cross-language. O DOM oferece isso e também define interfaces adicionais para o manuseio confortável de documentos XML.

 

Fundamentos do DOM baseados em um exemplo

O seguinte código HTML define uma tabela com o elemento tabela e vários subelementos:
<tabela>
  <thead>
    <tr>
      <th>Primeiro nome</th>
      <th>Nome</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Donald</td>
      <td>Pato</td>
    </tr>
  </tbody>
</quadro>

 

Tratamento de um documento

Na primeira etapa, um documento existente é lido pelo programa e um objeto de documento é gerado. Com base neste objeto, o conteúdo, estrutura e apresentação podem ser acessados usando os métodos da API.
Em particular, DOM permite

navegação entre os nós individuais de um documento,
Gerar, mover e apagar nós; e
ler, modificar e excluir conteúdo de texto.
No final do processamento, um novo documento XML ou HTML pode ser gerado a partir do objeto do documento pela chamada serialização.

 

Normalização do DOM

O DOM tem sido um padrão do W3C desde 1998 e tem sido atualizado e expandido várias vezes desde então. Existem várias versões (níveis) cada uma com diferentes módulos:
DOM Nível 0
Este nível nunca foi formalmente especificado. Nível 0 refere-se às técnicas de JavaScript para acessar documentos HTML. Estes foram introduzidos por navegadores como Internet Explorer e Netscape Navigator antes da padronização do DOM.

DOM Nível 1
DOM O núcleo define mover-se na árvore DOM, manipulando os nós, incluindo inserir novos elementos e definir atributos.
DOM HTML é a extensão para acessar documentos HTML. Ele padroniza e completa a prática já comum com base nas especificações JavaScript da Netscape e Microsoft JScript.
DOM Nível 2
Núcleo DOM: Inclui extensão do suporte ao espaço de nomes XML
DOM HTML: Extensão para documentos XHTML, adaptação para DOM 2 Core
DOM Estilo e DOM CSS permitem a leitura dinâmica, adição e alteração da formatação ou layout do documento através de folhas de estilo, em particular Cascading Style Sheets (CSS).
DOM Views permite o acesso a informações de tipos específicos de reprodução do documento (por exemplo, a representação gráfica no navegador web). Isto é usado principalmente em conjunto com DOM CSS para descobrir os valores reais de propriedade CSS de certos elementos (por exemplo, ‘Que cor de fundo é este cabeçalho?’).
Eventos DOM padroniza o processamento de eventos no documento, como ações do usuário. Usado principalmente em conexão com JavaScript ao exibir documentos HTML em navegadores web. Baseado nos modelos de manipulação de eventos do Netscape Navigator e Internet Explorer para documentos HTML.
DOM Traversal e DOM Range: Executar através da árvore de nós usando certos critérios de seleção, trabalhar com áreas no documento que incluem certos elementos e nós de texto
DOM Nível 3
Núcleo DOM 3: Melhoria abrangente, incluindo melhor manipulação de exceções e manipulação de códigos de caracteres
DOM 3 Carregar e salvar permite serialização de documentos ou partes de documentos, bem como a análise de documentos XML em strings em objetos de documento. Além disso, os documentos XML podem ser enviados e recuperados via HTTP, como é possível com a tecnologia XMLHttpRequest mais familiar.
DOM 3 XPath permite a seleção de nós com base em expressões XPath.
DOM 3 Eventos expande DOM 2 eventos, incluindo eventos de teclado.
A validação DOM 3 permite verificar se o documento DOM permanece válido após uma mudança dinâmica (adicionar ou remover nós).
DOM 3 Visualizações e Formatação permite que você acesse dinamicamente e altere o conteúdo, estrutura e estilo.
DOM 3 Regimes abstractos