close

Introdu��o a Linguagens de Marca��o: HTML, XHTML, SGML, XML

Prof. C�lio Guimar�es
Instituto de Computa��o - Unicamp

Atualizado em 06-Jun-05.

O objetivo deste resumo � apresentar alguns conceitos b�sicos  e a terminologia comum  usados na descri��o dessas quatro importantes linguagens de marca��o , a fim de facilitar ao leitor o estudo mais detalhado dos �timos tutoriais que existem na Internet e inclu�dos na p�gina da disciplina.

HTML (Hypertext Markup Language)  � uma Linguagem de Marca��o ("Markup Language")  voltada para:

HTML � derivada da linguagem pioneira de marca��o   SGML (Standard Generalized Markup Language) e foi criada por Tim Berners Lee (o idealizador da WWW) espec�ficamente para a composi��o e apresenta��o de documentos na Web. A evolu��o cronol�gica dessas linguagens foi a seguinte:

SGML → HTML 1.0 → HTML xx → XML → HTML 4.01 → XHTML.

Um documento estruturado  � composto por conte�do (texto, figuras, etc) e informa��o sobre o papel do conte�do no documento, ou seja, como �le est� estruturado. Por exemplo: um artigo t�cnico � usualmente composto por um "t�tulo", "autores", "resumo", diversas "se��es" e uma "bibliografia", nesta ordem. Cada um dos componentes (ou "elementos") indicados entre aspas acima, representa uma  parte estrutural do documento.

Um documento estruturado  pode ser apresentado ao usu�rio de diferentes formas, por exemplo, numa impress�o em papel, na tela de um navegador com janelas gr�ficas (Windows, XWindows, etc), na tela simplificada de um notebook ou de um telefone celular ou at� em algum equipamento multim�dia. Pode tamb�m ser enviado para processamento por algum software especializado como um Gerenciador de Banco de Dados.

Os requisitos para estrutura��o de um documento s�o ortogonais aos requisitos necess�rios para sua apresenta��o. Este � um dos principais problemas da linguagem HTML onde ambos est�o misturados e que recentemente foi atacado em duas frentes:

� importante lembrar que HTML, XHTML, XML e SGML s�o padr�es internacionais originados na www.org, sancionados pelas organiza��es ANSI e ISO, e, portanto, independentes de fabricantes de hardware ou software.

Estrutura de documentos HTML

Um documento HTML � um conjunto (mais precisamente uma hierarquia) de   elementos :
Um elemento � demarcado (usualmente) por 2 tags:

Conte�do de um elemento: Elementos sem conte�do e sem tag final s�o ditos "elementos vazios". Por exemplo: <br>, <hr>, <img>
Tais elementos tornam complexa a an�lise sint�tica de um documento HTML por parte do browser. Por esta raz�o em XHTML �les devem conter o tag final seja na forma compacta: <br /> ou expl�citamente: <br></br>.

Atributo: um atributo define uma caracter�stica ou propriedade de um elemento; � sempre inclu�do no tag inicial de um elemento, usando a sintaxe: nome_do_ atributo="valor".
Um elemento pode ter v�rios atributos, separados por espa�o(s) em branco. Ao contr�rio de HTML, em XHTML todo atributo deve ter um valor, mesmo que seja vazio ("") e o valor deve ser sempre delimitado por aspas duplas. Por exemplo:

<img src="sun.jpg" alt="sunburst graphic" width="32" height="21" align="left">

Entidade: uma entidade � um nome associado a alguma parte do documento (ou de um outro documento).

Uma entidade tem papel semelhante a uma macro que quando "referenciada" tem o seu nome substitu�do pelo texto que a define.
A "refer�ncia a uma entidade" ("entity reference") obedece � nota��o:  &nome-da-entidade;

Entidades podem ser "internas" ou "externas" ao documento. HTML s� suporta entidades internas predefinidas. Elas servem para nomear caracteres especiais, geralmente usados para marca��o no texto HTML como:

"<",  ">",  "&",  "
e que s�o inseridos como conte�do respectivamente, pelas refer�ncias:
&lt;  &gt;  &amp;  &quot;   

H� v�rias outras entidades em HTML.
As adapta��es necess�rias para transformar um documento em HTML 4.01 para um documento XHTML s�o pequenas e podem ser vistas neste guia sucinto para XHTML.

Hist�rico da linguagem SGML

SGML foi criada no final da d�cada de 60 pelos pesquisadores da IBM C. Goldfarb, E. Mosher e R. Lorie, com o objetivo de construir um sistema port�vel (i.�, independente de sistema operacional, formatos de arquivos, etc) para o interc�mbio e manipula��o de documentos. Eles optaram por um sistema de "Marca��o Generalizada" (Generalized Markup), com dois objetivos b�sicos:

Em outras palavras, "marca��o generalizada n�o restringe documentos a uma �nica aplica��o, estilo de formata��o ou sistema de processamento". Esta quota��o foi retirada diretamente da citada refer�ncia, "Introduction to Generalized Markup". Desde a sua concep��o, portanto, SGML foi uma evolu��o sobre os sistemas vigentes de editora��o eletr�nica com fun��es de processamento complexas embutidas na marca��o do documento (e que foram denominados por Goldfarb de sistemas de marca��o procedural; o exemplo cl�ssico de um sistema desse tipo � o sistema de prepara��o de textos matem�ticos TeX, desenvolvido por D. Knuth no final da d�cada de 70).

� interessante observar que SGML surgiu aproximadamente na mesma �poca da Internet e do sistema Unix, e, portanto, muito antes do uso generalizado dessas duas tecnologias.

Goldfarb provou em 1974 que um analisador sint�tico (parser) � capaz de validar um documento SGML sem realmente process�-lo. Em 1986 SGML tornou-se um padr�o internacional e foi adotada por v�rias empresas de porte como padr�o para interc�mbio e armazenamento de documentos. Duas linguagens de marca��o baseadas em SGML e largamente utilizadas s�o: DocBook (projetada para marca��o de documenta��o t�cnica) e TEI - Text Encoding Initiative (projetada para marca��o de textos liter�rios).

Como SGML n�o possui um conjunto pre-definido de tags e de elementos, ela � na verdade uma meta-linguagem para descrever (mais precisamente especificar) linguagens de marca��o. Ela n�o possui uma sem�ntica pre-definida.

A sintaxe de uma linguagem espec�fica de marca��o definida atrav�s de SGML � especificada atrav�s de constru��es coletadas num documento denominado DTD (Document Type Definition)(ou inclu�das diretamente no documento SGML), onde aparecem "declara��es de elementos", que especificam para cada elemento da linguagem todas as possiveis marca��es v�lidas para o elemento, como por exemplo, a ordem e obrigatoriedade de elementos num documento, quantidade,etc, e declara��es de atributos, que especificam, por exemplo, tipos de valores de atributos, valores default, etc.

O DTD define, portanto, uma gram�tica para a linguagem de marca��o do documento. A declara��o de um elemento e de seus atributos no DTD utiliza a nota��o gramatical EBNF  (Extended Backus-Naur Form) que � bastante cr�ptica para n�o especialistas em linguagens de programa��o e compiladores.

Uma curiosidade hist�rica:

Embora a defini��o de um documento usando tags iniciais e finais para cada elemento seja uma forma rigorosa e direta de compor um documento como uma herarquia de elementos (�rvore), no trabalho citado,Goldfarb comenta: "caso o usu�rio tenha que digitar todos os tags, o pre�o seria totalmente inaceit�vel, pois, conhecendo a estrutura do documento (formalmente definida atrav�s do DTD), � possivel eliminar um grande n�mero de tags finais". "Ele (usu�rio) relutaria em incorrer no trabalho e custo de entrar um tag final expl�cito para cada elemento, simplesmente para compartilhar seu conhecimento com o sistema"
O trabalho cita como exemplo, a descri��o de um elemento  figura, composto dos elementos corpo da figura e t�tulo (caption) da figura que poderia ser expressa em SGML assim:

<fig id=angelfig>
  <figbody>
    <artwork depth=24p>
    </artwork>
  </figbody>
  <figcap>Three Angels Dancing
  </figcap>
</fig>
Ap�s a apresenta��o do DTD para este documento, o trabalho prop�e a seguinte descri��o para o elemento figura, "com 40% de redu��o na marca��o":
<fig id=angelfig>
  <figbody>
    <artwork depth=24p>
  <figcap>Three Angels Dancing
</fig>
N�o � de estranhar portanto, que HTML, diretamente inspirada em SGML, tenha exclu�do tags finais de um n�mero razo�vel de seus elementos.

Todo documento SGML deve possuir um DTD (que define a sua gram�tica) de forma que o documento possa ser validado por um analisador sint�tico (parser). Um documento SGML � dito "v�lido" quando obedece �s regras do seu DTD (esta defini��o se estendeu posteriormente para XML). DTDs ser�o exemplificados a seguir quando descrevermos XML.

XML - origem, objetivos, conceitos b�sicos

XML (Extensible Markup Language) � uma meta-linguagem de marca��o criada a partir de SGML (� uma forma restrita de SGML), com os seguintes objetivos b�sicos: XML n�o possui um conjunto pre-definido de tags ou elementos. Por isto, como SGML, XML � uma meta-linguagem para descri��o de linguagens de marca��o: num documento XML, tags (mais precisamente elementos), para definir o significado dos dados, podem ser definidos livremente de acordo com o dom�nio dos dados e da aplica��o.
XML n�o prov� mecanismos para apresenta��o de dados nem para liga��o entre documentos. Tais recursos s�o disponibilizados por outras especifica��es de linguagens como, por exemplo, XSL (Extensible Style Language) para estilos, e Xlink para especifica��o de links entre documentos.
XML tornou-se um padr�o internacional em 1998. Desde ent�o v�rias linguagens de marca��o seguindo o padr�o XML foram criadas e est�o sendo padronizadas no �mbito da w3.org. Recentemente, pequenas adapta��es a HTML 4.01 para seguir os requisitos de XML, deram origem � linguagem XHTML.

Ao contr�rio de SGML, XML n�o requer um DTD para cada documento (embora seja altamente desej�vel, j� que o DTD define uma gram�tica para os elementos e atributos do documento). A an�lise sint�tica para valida��o de documentos SGML pode ser muito complexa e foi uma das principais raz�es para XML adotar e exigir a forma mais simples e verbosa de aninhamento completo e expl�cito de todos os elementos de um documento XML, al�m de requisitos r�gidos para defini��o de valores de atributos, etc. Nesse caso o documento � dito "bem formado" (well formed) e requisitos para isto est�o detalhados na especifica��o XML 1.0 e um resumo pode ser visto no documento anexo sobre XHTML.
Se o documento XML possui um DTD associado (ou inclu�do no pr�prio documento, conforme veremos) e segue a gram�tica especificada pelo DTD, ent�o �le � dito v�lido. A valida��o de um documento garante que os dados esejam completos, colocados na ordem correta no documento e com os valores apropriados dos atributos. V�rios pacotes de software livres est�o sendo disponibilizados para verificar a boa forma��o e a "valida��o" de documentos XML.

Composi��o de um documento XML

Um documento XML � composto pelos seguintes tipos de marca��o (a maioria deles tamb�m � suportada por HTML e XHTML):

Um exemplo de documento XML com seu DTD embutido

Este exemplo foi adaptado deste tutorial XML da IBM e descreve um documento para um "livro de endere�os" (AddressBook) que cont�m um ou mais elementos "pessoa" (person), onde cada pessoa possui um nome (name) e um endere�o de correio eletr�nico (email). Por sua vez o nome da pessoa � composto do sobrenome (family) e do pre-nome (given).
Observe que o DTD do documento come�a com a marca��o <!DOCTYPE e termina com a marca��o ]>. Este DTD poderia estar num arquivo externo, digamos,"ab.dtd" (pode inclusive ser referenciado atrav�s de uma URL) e neste caso o DOCTYPE seria inclu�do logo ap�s a primeira linha com o formato:
<!DOCTYPE addressBook SYSTEM "ab.dtd" >  ou, por exemplo:
<!DOCTYPE addressBook SYSTEM "http://www.networking.ibm.com/xml/ab.dtd">
A raiz do documento � o elemento: <addressBook>
As linhas iniciais est�o numeradas apenas para facilitar a explica��o a seguir.


1.<?xml version="1.0" encoding="iso-8859-1"?>
2.<!DOCTYPE addressBook [
3.<!ELEMENT addressBook (person)+>
4.<!ELEMENT person (name,email*)>
5.<!ATTLIST person gender (male|female) #IMPLIED>
6.<!ELEMENT name (family,given)>
7.<!ELEMENT family (#PCDATA)>
8.<!ELEMENT given (#PCDATA)>
9.<!ELEMENT email (#PCDATA)>
10.]>
<addressBook>
  <person gender="male">
    <name>
      <family>Wallace</family> <given>Bob</given>
    </name>
    <email>bwallace@megacorp.com</email>
  </person>

  <person gender="female">
    <name>
      <family>Tuttle</family> <given>Claire</given>
    </name>
    <email>ctuttle@megacorp.com</email>
  </person>
</addressBook>
A parte XML do documento � auto-explicativa e mostra o aninhamento apropriado dos elementos. Observe que a indenta��o aumenta a legibilidade do documento. Vamos explicar agora o DTD correspondente (maiores detalhes podem ser vistos no tutorial recomendado. V. pode inclusive validar seus documentos XML nesse "site").
linha 2:
o nome ap�s DOCTYPE deve ser o nome do elemento raiz, no caso, addressBook.
linha 3:
o elemento addressBook deve conter um ou mais sublementos person (indicado pelo s�mbolo +)
linha 4:
o elemento person deve ter um subelemento name e zero ou mais subelementos email (indicado pelo *), nesta ordem.
linha 5:
o atributo gender do elemento person deve ter um dos dois valores male ou female. #IMPLIED significa que o atributo � opcional. Se fosse obrigat�rio deveriamos colocar: #REQUIRED. � possivel especificar tamb�m que o atributo tem um valor fixo: #FIXED 'valor' ou um valor default.
linha 6:
o elemento name deve ter os dois atributos family e given, nesta ordem;
linhas 7,8 e 9:
os elementos family, given e email s�o cadeias de caracteres do conjunto de caracteres especificados para o documento.
linha 10:
marca��o para fim do DTD.
Observe que entre as linhas 2 e 10 n�o � seguida a sintaxe de elementos XML mas sim a de documentos DTD, que est�o no formato EBNF (Extended Backus Naur Form)


Guia sucinto para escrever documentos em XHTML

Abaixo um exemplo de documento minimal seguindo o padr�o XHTML. Observe que o elemento raiz html cont�m os elementos head e body e o elemento head deve obrigatoriamente conter um elemento title:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "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://vlib.org/">vlib.org</a>.</p>
</body>
</html>

As tr�s classes de documentos XHTML

Elementos descontinuados do padr�o XHTML:

Valid XHTML 1.0!