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:
- estrutura��o de documentos,
- apresenta��o visual de documentos em um navegador ("browser")
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:
- introdu��o de "Folhas de Estilo"
("Cascading Style Sheets")
permitindo especificar a apresenta��o desejada
para cada elemento de um documento, separadamente da sua marca��o HTML,
- especifica��o da linguagem XHTML,
sucessora de HTML 4.01,
seguindo o padr�o da nova meta-linguagem de marca��o XML da www.org.
XML � voltada para o interc�mbio de documentos via Web de forma independente
da sua apresenta��o final e � um subconjunto restrito da linguagem pioneira de
marca��o, SGML.
� 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:
- "tag inicial", no formato:
<nome-do-elemento atributos(opcional) >
- "tag final", no formato: </nome-do-elemento>
Conte�do de um elemento:
- usualmente texto entre o tag inicial e o tag final,
- tamb�m pode conter outros elementos, de forma que a hierarquia dos
elementos � uma �rvore
- a raiz do documento � sempre o elemento <html>
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:
< > & "
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:
- a marca��o de um documento deve descrever a estrutura do documento e outros
atributos do mesmo, em vez de especificar o processamento a ser feito no
mesmo,
- a marca��o deve ser definida rigorosamente, de forma que sistemas
formais como programas possam ser usados para processar o documento
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:
- prover o interc�mbio de documentos atrav�s da Web de forma independente de
sistemas operacionais ou formatos de arquivos,
- suportar uma grande gama de aplica��es, permitindo a defini��o de
elementos pelo usu�rio (ou aplica��o) para estruturar o documento,
- facilitar a an�lise de documentos XML por programas,
- documentos XML devem ser leg�veis por humanos,
- economia de tags de marca��o n�o � importante,
- ter uma especifica��o formal para a marca��o de documentos
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):
- elementos,
- atributos,
- Coment�rios, no mesmo formato de HTML e XHTML:
<!-- isto � um coment�rio -->
- Entidades: em XML s�o utilizadas para representar caracteres especiais de
marca��o (<, &, >, " ),
para texto usado com freq�encia no
documento e tamb�m para incluir conte�do proveniente de arquivos externos.
HTML, como vimos, s� suporta o primeiro tipo de entidade. Entidades s�o
declaradas no DTD.
- Instru��es para processamento (Processing Instructions, ou PI)
com o formato:
<?nome dados ?>
.
As informa��es em dados devem ser passadas
a uma aplica��o identificada por nome.
A primeira marca��o de um documento XML � justamente uma PI
que identifica a vers�o de XML e o conjunto de caracteres do documento
como em :
<?xml version="1.0" encoding="iso-8859-1"?>
- Se��es CDATA: delimitam conte�do que deve ser ignorado pelo analisador
sint�tico do documento (caracteres especiais de marca��o n�o s�o interpretados
como tais).A sintaxe �:
<![CDATA[ texto qualquer finalizado por: ]]>
Exceto pela seq�encia ]]> quaisquer caracteres podem aparecer
em texto.
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
- Strict: segue completamente a sintaxe de documentos XHTML, n�o permitindo
o uso de elementos descontinuados (deprecated) ou de frames.
- Transitional: permite o uso de elementos descontinuados
mas n�o o de frames
- Frameset: permite o uso de elementos descontinuados e o de frames
Elementos descontinuados do padr�o XHTML:
- applet
- basefont
- center
- dir
- font
- isindex
- menu
- s
- strike
- u