Вы находитесь на странице: 1из 46

CHAPTER 4

HTML e as suas razes

Um dos pilares da web originais a linguagem de marcao HTML- uma simples, cujo
objetivo principal permitir cruzar referncias de documentos atravs de hiperlinks.
Neste captulo, discutimos o HTML e as suas origens como um aplicativo de SGML.
Podemos cobrir fundamentos SGML e mostrar como o HTML definido no mbito do
SGML. Ento abordamos funcionalidades selecionadas de HTML e CSS. Tecnologias de
apresentao dinmica (incluindo o DHTML, JavaScript e AJAX) so abordadas no
Captulo 8.
O nosso objetivo neste captulo discutir os recursos do HTML e as tecnologias
relacionadas. No decorrer da nossa discusso, ns fornecemos exemplos de
documentos HTML para ilustrar facetas selecionadas do HTML como uma lngua.
Falamos sobre CSS e a sua relao com o HTML, com o objetivo de explicar o papel de
ambas as linguagens em documentos de rendering. No entanto, este captulo no
pretende ser um tutorial HTML, nem transmitir os pontos mais finos de design da pgina.

Figure 4.1 SGML, XML, e as suas aplicaes

importante saber as origens do HTML a fim de compreender o seu lugar na evoluo


global das linguagens de marcao. Reconhecidamente, SGML uma linguagem til
para um pequeno grupo de pessoas, mas certamente uma com uma extensa histria.
Assim, pode no ser do interesse de cada leitor. Acreditamos que o conhecimento de
SGML til tanto de uma perspetiva histrica como a entender melhor as vantagens do
XML e oportunidades apresentadas pelo XML e tecnologias relacionadas. No entanto,
os leitores que querem passar o material rapidamente podem saltar diretamente para
a seco 4.2, ignorando os detalhes da nossa discusso de SGML.
O eXtensible Markup Language (XML) a pedra angular de uma nova gerao de
linguagens de marcao, que so cobertos no captulo 5. O nosso objetivo imediato
entender a relao do SGML e HTML com o XML, XHTML e tecnologias relacionadas.
Ambos SGML e XML so meta-linguagens para definir linguagens de marcao
especializados. A Figura 4.1 ilustra que o XML um subconjunto do SGML (pelo menos,
era no momento da sua introduo inicial). Como se pode ver, ambos HyTime e HTML
so aplicativos SGML, enquanto WML, SOAP, SMIL e XHTML so aplicativos XML. Desde
que XML foi definido como um subconjunto do SGML, teoricamente possvel construir
especificaes SGML para estas linguagens, mas desde que so muito mais fceis definir
usando XML, no provvel encontrar especificaes SGML para eles. Voltaremos a esta
discusso no captulo 5.

4.1 Standard Generalized Markup Language

HTML no apareceu de repente. Foi definido como um aplicativo do padro SGML - uma
linguagem para definir linguagens de marcao. SGML foi criado muito antes do advento
da web. Antecessor do SGML, GML foi introduzido em 1969 num projeto de pesquisa da
IBM em sistemas integrados de informao jurdica. O seu objetivo era promover o
compartilhamento de arquivos entre sistemas de recuperao de informao e editorial.
No por acaso, GML permanece no s para Generalized Markup Language, mas
tambm para as iniciais dos sobrenomes dos seus inventores (Charles Goldfarb, Edward
Mosher e Raymond Lorie).
SGML foi criado pela ANSI para definir um padro de descrio de texto baseado em
GML. O primeiro rascunho do trabalho foi publicado pela ANSI em 1980. Demorou seis
rascunhos at ser declarada uma indstria padro em 1983. Muito tempo depois, foi
adotado por US Internal Revenue Service e Departamento de Defesa.
SGML foi projetado para definir a anotao e esquemas de digitao que eram
conjuntamente referidas como marcao. Tais regimes de marcao foram
originalmente intencionadas para determinar fontes e layouts de pgina. Mais tarde,
eles foram estendidos para cobrir todos os tipos de sequncias de controlo que so
inseridos no texto, para servir como instrues de formatao, impresso e outros tipos
de processamento.
SGML no foi a primeira tentativa de tipografia digital as pessoas estavam usando
LaTeX, troff e outros programas que produziu todos os tipos de formatos de
proprietrios incompatveis. Isto causou problemas enormes e deu nascimento a um
grande nmero de programas de converso que nunca fez o trabalho corretamente.
SGML foi a primeira tentativa de criar uma linguagem para a criao de regimes
diferentes de marcao especializados mas compatvel, o que faz o SGML como uma
linguagem de meta-marcao. Como resultado, tornou-se muito fcil converter
documentos em LaTeX e outros formatos legados para outras aplicaes de SGML e
HTML. Na verdade, to logo ficou claro que apenas alguns conversores eram
importantes e que conversores para diferentes marcaes de SGML poderiam
compartilhar cdigo, tornando-se assim mais prtico alcanar bons resultados.
Uma aplicao da SGML (por exemplo, HTML) composto por quatro partes principais,
que todos tm diferentes papis na definio de sintaxe e semntica de documentos:
a declarao de SGML, que especifica os caracteres e delimitadores que
legalmente podem aparecer no aplicativo;
o DTD, que define as construes de marcao vlida e pode incluir definies
adicionais tais como entidades de caracter numrico e de nome(por exemplo,
" ou ");
uma especificao que descreve a semntica para ser atribuda marcao e
poder impor restries de sintaxe adicional que no podem ser expresso no DTD;
instncias de documento contendo o contedo e a marcao que cada um
contm uma referncia para o DTD que deve ser usado para interpret-lo.

Nesta seo, vamos discutir elementos de aplicativos simples de SGML.

SGML foi a primeira tentativa de criar uma linguagem para a criao de regimes
diferentes de marcao especializados mas compatvel, que faz o SGML uma linguagem
de meta-marcao. Como resultado, tornou-se muito fcil converter documentos em
LaTeX e outros formatos legados para outras aplicaes de SGML e HTML. Na verdade,
to logo ficou claro que apenas alguns conversores eram importantes e que conversores
para diferentes marcaes de SGML poderiam compartilhar cdigo, tornou-se mais
prtico alcanar bons resultados.

4.1.1 SGML declaration

O papel da declarao SGML preparar a etapa para a compreenso de DTDs


que definem as construes de marcao vlida para aplicaes de SGML. A declarao
deve especificar o conjunto de caracteres, delimitadores e restries sobre o que pode
ser especificado num DTD.

Document character set

O problema da definio de um conjunto de caracteres apropriado torna-se


aparente quando enfrenta-se um ecr cheio de caracteres muito estranhos que estavam
perfeitamente legveis quando se comps o documento num outro sistema. Isso
quando se percebe que "A" no sempre um "A", mas algo incompreensvel
interpretado por um programa que tem uma conveno diferente para representar
caracteres. As duas convenes mais comumente usadas para representar o texto so
padro americano para intercmbio de informaes codificadas (ASCII) e Extended
Binary-Coded Decimal Interchange (EBCDIC). ASCII o que ests provavelmente mais
familiarizado - usado na maioria dos computadores pessoais. EBCDIC um formato
associado com sistemas mais antigos baseados em mainframe. Em ambos os sistemas,
existem muitas permutaes, que dependem do pas ou domnio de aplicativo.
O que necessrio uma maneira de associar a combinao de bits para um
determinado caracter usado no documento com o significado desse caracter. muito
detalhado para definir significados de caractere diretamente, por isso que SGML
permite que eles sejam definidos como modificaes para conjuntos de caracteres
padro. Por exemplo, o sistema de EBCDIC representa letras C e D usando combinaes
de bits B '11000011' (195 decimal) e B '11000100' (196 decimal). Supe que ns
precisamos para representar esses caracteres em codificao de 7 bits de caracteres
com padro conhecido como ISO 646. Caracteres "C" e "D" so codificados nesta Norma
usando combinaes de bits B '01000011' (67 decimal) e B '01000100' (68 decimal). A
declarao de SGML para esta associao parece-se com o exemplo mostrado na Figura
4.2.
Neste exemplo, a ISO 646 o conjunto de caracteres base. Definimos dois caracteres
adicionais que so mapeados para caracteres "C" e "D" da base definida. Alm disso,
podemos afirmar que a letra de EBCDIC "E" (197 decimal) no ocorre no documento-
abit estranho mas pode fazer sentido em algum caso bizarro.
A Figura 4.3 contm a definio de conjunto de caracteres para HTML 4. Como podemos
ver, exceto para os caracteres no utilizados, o HTML 4 conjunto mapas diretamente
para o conjunto de base definido pelo ISO. Caracteres que so mapeados para
"UNUSED" (por exemplo, dois caracteres iniciando no decimais 11 e 18 caracteres
comeando com 14 decimal) no devem ocorrer em documentos HTML 4.

Figure 4.2 An SGML character set definition for EBCDIC characters.

Figure 4.3 SGML character set definition for HTML 4.

Concrete syntax

A linguagem SGML definida usando "papis de delimitador" ao invs de caracteres


concretos. SGML refere-se sempre a delimitadores pelos seus nomes de funo. Uma
vez que se trata de definir a sintaxe concreta para uma aplicao, as funes so
associadas com sequncias de caracteres. Por exemplo, mesmo que a maioria das
aplicaticaes de SGML usa o < / sequncia de caracteres como um delimitador, esta
sequncia no parte do SGML. Na prtica, o papel de SGML "etago", indica o incio da
marca de fim e frequentemente associado com < / na sintaxe de declaraes, mas
poderia estar associado com [* [/, < [!, ou outra sequncia bizarra.
importante fazer uma distino clara entre a linguagem SGML e a sintaxe de referncia
concreta que tambm est includa na especificao do SGML. Por exemplo, enquanto
o SGML faz uso das funes de delimitador, a implementao de referncia associa essas
funes com comumente usando sequncias de caracteres (<, < / >, / >, etc.). Aplicaes
SGML podem adiar definies includas na sintaxe concreto de referncia, para sua
convenincia. Declaraes de sintaxe tambm incluem os seguintes componentes:

caracteres que no devem ser usadas em documentos ;


poucas combinaes que so mapeadas para os personagens de funo (espao);
caracteres que podem ser usados em nomes e outras regras de nomenclatura;
reservadas palavras-chave que usado dentro SGML (por exemplo, PCDATA);
restries adicionais (por exemplo, o comprimento mximo do nome).

A Figura 4.4 contm a definio de sintaxe parcial para HTML 4. Comea com a
enumerao dos cdigos binrios para caracteres que devem ser evitados em
documentos HTML. O formato das sees BASESET e DESCSET o mesmo usado na
definio de conjuntos de caracteres (ver Figura 4.3), mas aqui aplica-se aos caracteres
que podem ser utilizadas para referncias de sintaxe. A seo de FUNCTION define
combinao de bits de caracteres que indicam o incio de registo, registo final, espao e
funes de guia. A seo de NAMING no fornece para iniciar qualquer nome adicional
de caracteres (tirando o mnimo definido - letras caixa alta e baixa), mas define
caracteres adicionais (".", "-", "_", e ":") que podem ocorrer em outros lugares em
nomes. Finalmente, a seo DELIM define delimitadores adiando a implementao de
referncia com o dispositivo nico, que definido para a funo HCRO.
(HCRO um delimitador usado para abrir as referncias de caracter hexadecimal).

Figure 4.4 SGML syntax specification for HTML 4.


Feature usage

SGML oferece muita flexibilidade na definio das caractersticas de minimizao de


marcao. Por exemplo, o recurso DATATAG da declarao permite que o DTD
especifique sequncias de caracteres, que causam um fim de tag implcito. Noutras
palavras, ele permite que os dados sejam tratados como dados e marcao. Isto sem
dvida pode fornecer alguma convenincia mas complica a anlise e pode apresentar
ambiguidades. Outros exemplos incluem SHORTTAG, que torna possvel omitir tags
fechando delimitadores, e OMIT-TAG, que permite a omisso de determinados tags de
incio ou fim. Esses recursos so a prova reveladora da linhagem do SGML com biblioteca
de Cincias, que tinha prioridades diferentes propriedades computacionais.
Depois, voltamos para estes exemplos para ilustrar as diferenas de filosofia entre SGML
e XML.

4.1.2 Document Type Definition

O propsito do Document Type Definition (DTD) definir a sintaxe das construes de


marcao. Tambm pode incluir definies adicionais (por exemplo, as entidades de
caracteres numrico e nome). Nesta seo, discutimos como definir elementos,
atributos e entidades e ilustrar essas discusses usando exemplos HTML.

Entity definitions

A DTD do HTML 4 comea com definies da entidade, que podem ser consideradas
macros de texto. Agora, ns j temos a sintaxe concreta, ento no estamos definindo
entidades SGML. Pelo contrrio, estamos definindo macros que podem ser expandidas
noutro lugar no DTD ou na lngua-alvo (HTML 4). Quando macros so mencionadas,
elas so expandidas para as sequncias de caracteres que aparecem na definio de
entidade.
Na Figura 4.5, so definidas as seguintes entidades de parmetro:
%head.misc expande para a enumerao parcial dos elementos
(SCRIPT|STYLE|META|LINK) que podem ocorrer dentro do elemento HEAD.
% ttulo expande para a enumerao de elementos que indicam ttulos de seo e
bloco.
% attrs expande a sequncia de outras entidades que so expandidas
recursivamente.
Observe a diferena entre as entidades de parmetro, que so uma questo de
convenincia para a especificao de DTD em si e as entidades gerais (definidas na
ltima linha da Figura 4.5). Entidades gerais tornam-se parte da lngua que est sendo
definida por um DTD e referenciada usando o e comercial (por exemplo, &attrs;).
Entidades gerais no so importantes para HTML, mas vo aparecer quando
chegarmos ao XML.
Element definitions

Um DTD SGML define elementos que representam estruturas ou comportamentos.


importante fazer a distino entre tags e elementos. No incomum para as pessoas
erradamente se referir a elementos como tags (por exemplo, "a P tag"). Um elemento
normalmente consiste em trs partes: uma tag de incio, contedo e uma tag de fim
(por exemplo, <STRONG>teste</STRONG>). possvel para um elemento sem
contedo e para tais elementos vazios que noes de elemento e a tag coincidem
(por exemplo, a linha quebra elemento HTML, <BR>).
Uma definio de elemento tem de especificar o seu nome, a estrutura de seu
contedo (se houver), e se a tag de fim opcional ou obrigatrio. Por exemplo, o
elemento de lista ordenada definido na Figura 4.6 para ter o nome OL, para exigir
tanto a tag de incio e a tag de fim (os primeiros e segundo travesses) e para conter
pelo menos um elemento de LI como seu contedo. O elemento de quebra de linha
definido para ter o nome BR e no requer contedo nem a tag de fim.

Figure 4.5 Entity definitions.

Figure 4.6 Element definitions.

O objetivo do mecanismo de DTD especificar restries pode ser verificadas em


documentos. Para atender a esse propsito, tem que expressar relativamente
sofisticadas relaes entre diferentes elementos. Tais relaes so expressas atravs da
definio de modelos de contedo. Muito simples exemplos de tais modelos so
mostrados pelos trs primeiros exemplos na Figura 4.6: o corpo composto de um ou
mais elementos LI, o corpo vazio e o corpo que s pode conter texto do documento
(#PCDATA), mas no outros elementos. Mais geralmente, modelos de contedo tornam
possvel tambm especificar elementos proibidos ou enumerar permitidos elementos
ou texto, a sua ordem e nmero de ocorrncias.
Uma definio de elemento utiliza quantificadores para determinar quantas vezes um
elemento deve aparecer. O "?" quantificador indica que um elemento pode aparecer
exatamente 0 ou 1 vezes, o "*" quantificador indica que um elemento pode aparecer a
qualquer nmero de vezes ou no em todos, e o "+" quantificador exige que o elemento
aparece pelo menos uma vez. O ltimo exemplo na Figura 4.6 define o elemento TABLE.
Como se pode ver, nenhum texto permitido diretamente dentro de tabela, que no
quer dizer que ele no pode ser especificado num dos seus elementos contidos; o
elemento CAPTION pode ou no pode estar presente; os elementos COL e COLGROUP
podem aparecer vrias vezes; e deve haver pelo menos um elemento TBODY.

Outra observao interessante diz respeito ao agrupamento de construes * COL e


COLGROUP * usando parnteses. O | operador indica que as construes podem
aparecer em qualquer ordem e um deles pode no aparecer em tudo. O & operador
semelhante, exceto que ambas as construes tem que aparecer. Claro que, se as
construes de si so definidas usando quantificadores que permitem 0 ocorrncias
(i.e., "?" ou "*"), no h nenhuma diferena prtica entre esses operadores (por
exemplo, o COL * |COLGROUP* e COL * & COLGROUP * expresses so equivalentes).
O operador "," indica uma ordem fixa. Na Figura 4.6, o elemento CAPTION pode ou pode
no ocorrer dentro de uma TABLE (devido ao "?" quantificador) mas se isso acontecer,
tem que ocorrer primeiro, porque expresses separadas pelo operador "," impem uma
ordem fixa. A Figura 4.7 mostra duas tabelas HTML vlidas que coincidem com a
definio da TABLE na Figura 4.6 e 4.8 figura mostra uma tabela invlida.

Figure 4.7 Valid HTML tables.

Figure 4.8 Invalid HTML table (TFOOT occurs after TBODY).

Ambas as tabelas HTML na Figura 4.7 so vlidas porque fechar tags para THEAD,
TBODY e TFOOT elementos so opcionais, e assim todo o elemento TFOOT. No
entanto, a tabela na Figura 4.8 no vlida porque a ordem imposta pelo, operador no
DTD HTML (Figura 4.6) violada - o elemento TFOOT est presente e ocorre aps o
elemento TBODY.
O fato de que o fragmento HTML na Figura 4.8 invlido no significa necessariamente
que o seu navegador no exibir corretamente - navegadores desktop so projetados para
serem tolerantes com HTML pior. No entanto, escrever invlido HTML um mau
hbito que pode causar problemas quando os erros se acumulam, ou quando o teu HTML
servido por navegadores no-desktop. Alm disso, a ausncia de tags de fechamento
opcional pode causar comportamento errtico de renderizao com navegadores no-
mainstream. Tal comportamento errtico est se tornando mais comum como
navegadores mais novos que so projetados para cumprir com sintaxe XHTML (ver
captulo 5).

Attribute definitions

Um elemento pode permitir que um ou mais atributos que fornecem informaes


adicionais para processamento de agentes. Por exemplo, o atributo src do elemento
HTML SCRIPT instrui o browser para recuperar o script da URL especificada em vez
do corpo do elemento.
Uma lista de definies de atributo comea com a palavra-chave ATTLIST e seguida
pelo nome do elemento (por exemplo, a TABLE e a TH no exemplo da Figura 4.9) e as
definies de atributo atual. Uma definio de atributo comea com o nome do atributo
(por exemplo, largura) e especifica o valor padro e o tipo. Tipos de atributo de
exemplo mostrados na Figura 4.9 incluem o NUMBER, que representa inteiros, e
CDATA, que representa o texto do documento. Outros tipos usados com frequncia
incluem NAME e ID - ambos representando sequncias de caracteres que comeam
com uma letra e podem incluir letras, dgitos, hfens, vrgulas; ID representa
identificadores nicos de todo o documento.

Figure 4.9 Attribute definitions for the TABLE and TH elements.

Observa o uso de uma entidade DTD - TAlign - na definio do atributo align. Esta
entidade expande para (left|center|right);o seu uso simplesmente uma questo de
convenincia. De qualquer forma, o domnio do atributo align definido como a
enumerao de esquerda, centro e direita.
Quando um atributo definido como #IMPLIED, seu valor fornecido pelo agente de
processamento (por exemplo, o navegador). A palavra-chave #REQUIRED indica que o
atributo deve estar sempre presente com seu elemento. Alternativamente, um atributo
pode ser definido como um valor fixo, como os atributos rowspan e colspan para o
elemento de cabealho de tabela TH na Figura 4.9.
Making the Case

Observa que nos nossos exemplos DTD e HTML, usamos letras maisculas caracteres
para os nomes de elementos e minsculos caracteres para os atributos. Isto consistente
com a especificao do HTML 4.01. Deves ter notado que navegadores desktop tm
sido historicamente muito tolerantes de pginas que usam letras minsculas para nomes
de elemento ou letras maisculas para nomes de atributo (ainda mais assim do que com
a tag incorreta e sequenciamento). No entanto, estes aparentemente pequenos desvios da
especificao acumulam-se muito rapidamente e causam estragos com o processo de
validao de HTML, tornando difcil filtrarem avisos e erros ao tentar limpar os seus
documentos num esforo para faz-los trabalhar consistentemente em diferentes
navegadores.

4.2 HTML

A nossa discusso de SGML no tenta ensinar todos os detalhes da criao de aplicativos


SGML. No entanto, importante que se entenda as razes do HTML e a sua substituio,
XHTML. No captulo 5, ns olhamos para declaraes de SGML e DTDs e pensamos
sobre como fazer uso no mundo XML. Compreender essa conexo entre SGML e XML,
um pr-requisito fundamental para a compreenso da relao entre HTML, XML e
aplicativos XML.
Por agora, concentremo-nos com HTML - tanto com as restries sintticas impostas aos
documentos HTML por declaraes de HTML e DTDs e com a semntica do HTML. por
isso que usamos exemplos HTML ao longo da discusso do SGML. Falando nisso,
devemos ter notado que as declaraes de SGML e DTDs no atribuiem semntica para
tags HTML - o que feito nas especificaes de HTML. da responsabilidade dos agentes
HTML (por exemplo, navegadores desktop) para ler, entender e seguir a especificao.
Podemos discutir as construes mais interessantes de HTML, prestando especial
ateno relao entre essas construes e o protocolo HTTP.

4.2.1 Evolution of HTML

Quando saiu o HTML 4, a abstrao simples desenvolvido num mecanismo para folhas
de estilo tornou possvel para controlo de renderizao de elementos HTML. HTML 4
tambm inclui mecanismos de script, frames e incorporao de objetos. O novo
mecanismo padro oferece suporte a incorporao de objetos genricos de media e
aplicativos em documentos HTML. O elemento <OBJECT>(juntamente com seus
antecessores, <IMG>e <APPLET>) suporta a incluso de imagens, vdeo, som,
expresses matemticas e outros objetos. Finalmente fornece os autores do documento
com uma maneira consistente para definir hierarquias de renderizaes alternativas. Este
problema tem sido em torno desde Mosaic e Lynx (primeiros navegadores grficos e de
linha de comando) que precisava de formas alternativas de apresentar imagens.
Outro desenvolvimento importante que foi introduzido pela primeira vez em HTML 4
internacionalizao. Com a expanso da web, tornou-se cada vez mais importante
oferecer suporte a idiomas diferentes. As bases do HTML 4 tm o seu carter definido na
ISO / IEC:10646 padro (como te lembras, SGML d-nos o poder para definir o conjunto
de caracteres). A ISO / IEC:10646 uma norma inclusiva que oferece suporte a
representao de caracteres internacionais, direo do texto e pontuao, que so todos
cruciais no apoio da enorme variedade de lnguas do mundo.

4.2.2 Structure and syntax

Como j mencionmos algumas vezes, importante no ser enganado pela alta tolerncia
s violaes de sintaxe e estrutura HTML que caracteriza os navegadores desktop
comerciais. A especificao do HTML o nico denominador comum para diversas
ferramentas comerciais, e conformidade com esta especificao a melhor maneira de
evitar problemas durante a vida til dos seus documentos.

Figure 4.10 Document compliant with HTML 4.01

De acordo com a especificao, um documento HTML 4 deve conter uma referncia a


uma verso HTML, uma seo de cabealho que contm declaraes de todo o
documento e o corpo do documento. Figura 4.10 contm um exemplo de um documento
HTML.
Como se v, a declarao de verso nomeia o DTD que deve ser usado para validar o
documento. HTML 4.01 define trs DTDs - um que projetado para conformidade exata,
outro que suporta o conjunto de elementos agora considerado obsoleto e uma terceira que
suporta o mesmo conjunto de elementos preteridos, com exceo dos frames.

HTML header

A seo de cabealho opcional comea com o elemento <HEAD>e inclui declaraes


de todo o documento. O elemento de cabealho mais comumente usado o <TITLE>,
que remonta s primeiras verses do HTML. A maioria dos navegadores exibem o valor
deste elemento fora do corpo do documento. De certa forma, uma tentativa inicial para
especificar metadados do documento. amplamente utilizado pelos agentes de busca,
que normalmente atribuir um peso maior do que o resto do documento.
O mais recente elemento <META> oferece muito mais flexibilidade na definio de
propriedades do documento e fornecer dados para navegadores e outros agentes de
usurio. A Figura 4.11 mostra exemplos de definir as propriedades de autor e editor
usando o elemento <META>.
O elemento <META> tambm pode ser usado para especificar cabealhos HTTP. As
duas ltimas linhas na Figura 4.11 dizem ao browser para agir como se os dois
cabealhos HTTP adicionais seguintes estivessem presentes:

Figure 4.11 META elements.

Podes usar essa sintaxe para definir qualquer cabealho HTTP que quiseres, mas nem
todos eles afetam o processamento. Nenhuma surpresa aqui: certos cabealhos tm de ser
processados pelo navegador antes que o documento HTML seja analisado e, por
conseguinte, esses cabealhos no podem ser substitudos usando esse mtodo. Por
exemplo, para iniciar a anlise do documento HTML, o navegador deve ter j ter
estabelecido do cabealho Content-Type o tipo de corpo que texto/html. Assim, o tipo
de contedo no pode ser modificado usando uma instncia do elemento <META> desta
forma. O navegador no reconhece o elemento <META>at que tenha determinado que
o Content-Type text/html. Segue-se que os cabealhos Content-Type definidos atravs
do tag HTML <META>, bem como cabealhos Content-Encoding e de Transfer-
Encoding, so ignorados. Em suma, qualquer cabealho que tem de ser interpretado e
processado antes da anlise do documento HTML ignorado se definido usando este
mtodo.
H vantagens para a incorporao de cabealhos HTTP em ficheiros HTML. A principal
razo por que discutimos isso em detalhes que ilustra uma importante ligao entre
tecnologias da web diferentes. Incorporando a lgica baseada em HTTP em ficheiros
HTML pode ser inestimvel na criao de aplicaes que so muito fceis de instalar e
distribuir em plataformas de software e hardware diferentes. Sempre que desejas
empregar esse mecanismo, voc deve considerar as etapas de processamento que ocorrem
antes da anlise da marcao, para decidir se o elemento <META> teria qualquer efeito.
Esta deciso pode depender de seu agente de processamento de ou um proxy inteligente
especializado. Por exemplo, um proxy pode usar o valor do cabealho Content-Type
definido no elemento <META>para definir o Content-Type da resposta antes de
encaminh-lo para o navegador.
Outros elementos que so definidos na seo de cabealho HTML incluem <STYLE>e
<SCRIPT>. O elemento <STYLE> projetado para alterar o comportamento padro do
navegador quando feito o rendering do corpo da marcao. Na Figura 4.12, podemos
substituir o processamento padro do elemento <h1>, dizendo ao navegador para
centralizar o seu valor numa caixa com uma borda slida.
A sintaxe das instrues de estilo compatvel com a especificao de Cascading Style
Sheets (CSS). No necessrio incluir a especificao de estilo na seo de cabealho.
Na verdade, muito mais comum fazer referncia a um documento de estilo autnomo
usando o atributo src do elemento <STYLE>. Desta forma, possvel alterar a aparncia
de documentos HTML simplesmente alterando o atributo src. Voltamos para a
especificao de CSS na seo 4.3.1 e, novamente, no captulo 8.

Figure 4.12 STYLE element.

O elemento <SCRIPT>, em combinao com manipuladores de eventos que podem ser


referenciados a partir do corpo do documento, projetado para fornecer acesso a objetos
do navegador que so criados durante o processamento de respostas HTTP.A Figura 4.13
ilustra o uso do elemento <SCRIPT>para definir uma funo de JavaScript de exemplo
(discutiremos JavaScript no captulo 8), que leva um objeto de formulrio como um
argumento, define o mtodo HTTP GET para Netscape 4. x e navegadores anteriores e
HTTP POST para outros navegadores e envia a solicitao.

Figure 4.13 SCRIPT element.

HTML body

O contedo de um documento HTML includo dentro do elemento <BODY>.


Podemos encaminh-lo para a especificao do HTML e uma rica seleco de livros
didticos HTML para obter descries dos diferentes elementos de formatao. Os
elementos mais comumente usados incluem <TABLE>, rubricas (<h1>, <h2>, etc.),
ordenados e no-ordenados em listas e outros elementos projetados para controlar o
layout da tela.
Outros elementos importantes incluem ncoras que referenciam a documentos ou locais
dentro de documentos e elementos de imagem (V o <A href= ... > and <IMG src= ... >
elementos na Figure 4.14). A diferena entre estes dois elementos muito importante - a
ncora representa um hiperlink que avaliada apenas a seu pedido, enquanto as
solicitaes para carregar imagens so geradas automaticamente quando a tentativa de
processar a pgina, assumindo o agente de renderizao configurada para oferecer
suporte a imagens.

Content accessibility

Uma observao interessante sobre o elemento de <IMG> na Figura 4.14 tem a ver com
o uso do ndice de elemento e atributo ALT. O valor do atributo ALT exibido por
navegadores que suportam atualizadas especificaes de HTML mas no processam
imagens (por exemplo, de linha de comando navegadores tais como o Lynx e navegadores
para dispositivos mveis baseados em texto).
Este exemplo transmite um ponto importante que aplicvel a elementos HTML que
fazem o rendering de controlo - importante para pginas de desenho que apresentem
bem numa grande variedade de navegadores, que difiram ao seu nvel de conformidade
com as especificaes do HTML.

Figure 4.14 Simple HTML page.

HTTP requests

A maioria dos navegadores fornecem um nmero de opes para iniciar solicitaes


HTTP. As opes mais bvias so seguindo um hiperlink ou especificando um URL
(digitando-o, selecionar um marcador ou uma entrada de histrico, etc.). Uma opo
menos bvia iniciar as solicitaes atravs de cabealhos HTTP ou HTTP-EQUIV
construtores. Nesses casos, os navegadores usam a sua prpria discrio na gerao de
pedidos. Podemos encaminhar-te para o captulo 7 para os detalhes da gerao do
pedido.
Vamos tomar um rpido olhar para os controlos de gerao de pedido que esto
disponveis em HTML. Os controlos mais simples e comumente usados esto disponveis
atravs de formulrios HTML, que suportam selecionando um URL e um mtodo HTTP,
bem como a definio de alguns cabealhos HTTP, incluindo o Content-Type. O exemplo
na Figura 4.15 ilustra o uso de um formulrio HTML para transferncia de ficheiros.
Observa o uso do atributo enctype para definir o cabealho de Content-Type da
solicitao. Isto pode no ser necessrio porque os principais navegadores modernos
usam como padro multipart/form-data durante a transmisso de ficheiros. Mesmo assim,
uma boa prtica, que ajuda a manter as suas aplicaes resilientes como a tecnologia
muda.

Figure 4.15 File submission form.

No exemplo, o primeiro elemento <INPUT> faz referncia a um ficheiro - a maioria dos


navegadores apresenta-a como uma caixa de dilogo. Os segundo e terceiros elementos
<INPUT> representam pares atributo-valor para especificar o nome do ficheiro e o local
no sistema de destino. O ltimo elemento <INPUT> representa a submisso boto que,
quando pressionado, inicia a solicitao.
O navegador usa mensagens de vrias partes MIME para combinar o contedo do
ficheiro com informaes sobre o local de destino. Um pedido de transferncia de
ficheiro de exemplo mostrado na Figura 4.16. uma mensagem com vrias partes, a
primeira parte que contm o corpo do ficheiro, e a segunda parte contm informaes de
formulrio referentes ao local de destino do ficheiro enviado. Presume-se que
executvel http://www.nobody.name/sendFileis do lado do servidor (por exemplo, um
script CGI ou servlet) que capaz de analisar a mensagem para extrair o ficheiro e o seu
local de destino e para salv-lo em que localizao relativa raiz do documento.
Este exemplo ilustra os elementos HTML que controlam a formao de solicitaes
HTTP enviado pelo navegador. HTML fornece muitos outros controlos, que no so
discutidos neste livro - a parte importante entender a ideia de tais controlos.

Figure 4.16 Sample file transfer request.


4.3 HTML Rendering

Como mencionado na seo anterior, a nica maneira de modificar o rendering de


elementos HTML em navegadores mais antigos foi atravs de configuraes globais do
navegador. No entanto, cedo especificaes HTML tentaram colocar abstraes de
rendering antigamente para ser alcanado no futuro (por exemplo, a distino entre <B>
e <STRONG>). Muito poucos utilizadores HTML fazem essas distines, desde que
essas no tenham nenhum impacto imediato sobre a aparncia das suas pginas. Coisas
mudadas quando abstraes iniciais desenvolveram em folhas de estilo que tornou
possvel a exibir um controlo refinado sobre o rendering de documentos HTML.

4.3.1 Cascading Style Sheets

Cascading Style Sheets (CSS) um mecanismo para controlar o estilo (por exemplo,
fontes, cores e espaamento) para renderizao de HTML. Uma folha de estilo
composta de regras, cada um dos quais se aplica a um elemento HTML e controla um
determinado aspecto do seu rendering. Existem vrias maneiras de associar essas regras
de estilo com documentos HTML, mas o mais fcil usar o elemento HTML
<STYLE>, que colocado no cabealho do documento e contm as regras de estilo para
a pgina (consulta a seo 4.2.2).
A Figura 4.17 demonstra as regras de amostra para renderizao de fontes padro dentro
de um pargrafo (elemento <P>). Na primeira regra, propriedades de fonte so definidas
por meio do argumento da fonte, enquanto nas segunda e terceiros regras, elas so
definidas por meio do argumento de tamanho da fonte mais especfico. O argumento de
tamanho da fonte limitado a um subconjunto de propriedades que podem ser definidos
por meio do argumento de fonte.
Outra observao que a mesma propriedade de elemento pode ser definida com um
nvel de abstrao diferente. Na primeira regra, o tamanho definido em unidades
absolutas que so independentes das propriedades de navegador. Tal uma configurao
significa que tu ests dispostos a ignorar as preferncias pessoais do usurio, que
raramente uma boa ideia. Na segunda regra, o tamanho da fonte definido em termos
que dependem de propriedades do navegador, mas no no contexto do elemento. Em
outras palavras, o medium pode significar ponto de 10 ou 14 dependendo das
configuraes do navegador, mas dentro da mesma pgina e a mesma janela do
navegador, o pargrafo sempre ia ser processado exatamente da mesma forma. Da
mesma forma, a cor da fonte pode ser definida tambm, usando RGB absoluto (Red-
Green-Blue) unidades (por exemplo, #0000F0 na primeira regra) ou usando nomes
simblicos que podem mapear para diferentes combinaes de RGB.
Finalmente, na terceira regra, o tamanho da fonte definido em relao ao contexto -
maior pode traduzir-se em diferentes tamanhos absolutos dentro da mesma pgina,
dependendo o tamanho da fonte padro no contexto do elemento onde o elemento <P>
includo.
Figure 4.17 CSS rules for the <P> element.

Figure 4.18 Sample box and classification properties.

Como podes ver o nosso exemplo, as regras de CSS associam grupos de propriedades
com elementos HTML. Propriedades podem ser definidas usando regras de folha de estilo
incluem grupos de fonte, cor e texto. Propriedades de fonte incluem a famlia de fonte,
tamanho, peso, altura e estilo, enquanto Propriedades de cor descrevem fontes e imagens
de fundo. Propriedades de texto so um pouco mais complexas e controlam mesmo
simples transformaes (por exemplo, para todas as letras maisculas ou em minsculas
letras), decorao de texto (por exemplo, sublinhado) e alinhamento e recuo de palavra e
letra.

Outros grupos interessantes incluem propriedades de caixa e classificao. As trs


primeiras regras na Figura 4.18 demonstram as propriedades da caixa. A primeira regra
serve para eliminar a margem superior de uma pgina, a segunda regra define a margem
inferior de elementos <DT>a duas alturas de fonte, e a terceira descreve a fronteira para
links visitados. A quarta regra define uma propriedade de classificao da amostra. De
acordo com esta regra, pargrafos iro ser mostrados no s com as anterior e posterior
quebras de linha, mas tambm com o marcador de item de lista.

4.3.2 Associating styles with HTML documents

CSS torna possvel atingir diferentes graus de separao entre a marcao e renderizao.
Com isto em mente, podemos considerar alternativas para associar folhas de estilo e
elementos de estilo com pginas HTML e seus fragmentos.

Linked style sheet

A abordagem que fornece o mais alto grau de separao entre a marcao HTML e
renderizao baseada em estilo baseia-se na vinculao de documentos HTML com
folhas de estilo externas, que no contenham qualquer marcao HTML, somente os
comandos de estilo. A vinculao realizado atravs de mais um elemento de cabealho
HTML - <LINK>. A Figura 4.19 contm exemplos de como usar esse elemento para
definir as associaes. O atributo rel define a relao com o ficheiro associado e o atributo
type especifica o tipo MIME text/css para a folha de estilo. O atributo href faz referncia
a localizao do arquivo de folha de estilo. Finalmente, o atributo media define a
renderizao de media, o que poderia ser um navegador de desktop regular (tela), um
sintetizador de fala (fontica), uma impressora (impresso), ou outros dispositivos.
O atributo media pode ser especfico o suficiente para aplicar a apenas um tipo de
dispositivo: original iPhone diretrizes de desenvolvimento Apple, por exemplo,
recomendou a utilizao de uma folha de estilos CSS especficos iPhone especificando o
atributo media como "apenas tela e (max-dispositivo-largura: 480px)".

O atributo opcional title s est presente quando necessrio oferecer suporte a folhas de
estilo alternativo. A sua ausncia, como no primeiro exemplo, indica que substituir a folha
de estilo no suportado. Alternncia de folha de estilo pode ter diferentes formas, mas
normalmente envolve a interao do usurio. Os segundo e terceiros exemplos
representam uma folha de estilo padro que aplicada no tempo de rendering e uma
alternativa que pode ser explicitamente selecionada pelo usurio. O ltimo exemplo na
Figura 4.19 muito semelhante ao primeiro exemplo, exceto que o dispositivo de
rendering um sintetizador de voz.

Figure 4.19 Using the HTML <LINK> element to associate styles.

Embedded style sheet

A Figura 4.20 demonstra o uso de uma folha de estilos incorporado num documento
HTML. semelhante ao exemplo que usamos para ilustrar a nossa discusso dos
cabealhos HTML (Figura 4.12). Uma distino o uso da sintaxe de comentrio do
HTML, que no prejudica a navegadores que oferecem suporte a elementos de <STYLE>,
mas ajuda mais velha dos navegadores ignoram as instrues de estilo e evitar confuso.
A segunda distino o uso da declarao de importao. Uso do elemento <STYLE>
em combinao com the @import instruction equivalente ao primeiro exemplo na
Figura 4.19.
A sintaxe incorporada torna possvel substituir peas de estilos importados com
definies locais (por exemplo, a definio de local do elemento <h1> na Figura 4.20).
Esta abordagem viola o princpio da separao de marcao e renderizao, mas est no
limite aceitvel, uma vez que a especificao de estilo principal ainda vem de um arquivo
separado.

Inline style

Ainda uma outra alternativa usar o atributo de estilo que pode ser aplicado maioria
dos elementos do corpo (incluindo <BODY>, mas excluindo <SCRIPT>, <PARAM> e
<FONT>). Permite a definio de atributos de estilo para uma nica instncia de uma
marca dentro de uma pgina, mas resulta num mixing de estilo e marcao (ver Figura
4.21).

Figure 4.20 Embedded style sheet.

Figure 4.21 Inline styles.

Figure 4.22 Associating styles with portions of HTML documents.

Se sentes que tem de haver um meio-termo entre estilos de todo o documento e embutido,
tu no ests sozinho. Um meio-termo pode ser alcanado usando estilos inline com
elementos <SPAN> e <DIV>, que foram introduzidos com o propsito expresso de
associar estilos delimitado arbitrariamente por sees de documentos HTML. Enquanto
<SPAN> um elemento interno, que usado numa maneira similar ao <STRONG> e
<EM>, <DIV> pode conter blocos que incluem os pargrafos, tabelas e, recursivamente,
outros elementos de <DIV>(Figura 4.22).

5.1 Core XML

Como te podes lembrar do captulo 4, os primeiros passos na definio das aplicaes de


SGML so definir o conjunto de caracteres e a sintaxe concreta. A sintaxe XML
relativamente rgida - o conjunto de caracteres fixo e h um nmero limitado de
delimitadores de tags ( <, >, / >, e < /). Consequentemente, no h necessidade de definir
a sintaxe concreta, desde que XML alvo um conjunto muito mais estreito de aplicaes
do que SGML e no pode haver uma aplicao de XML sem os suportes de ngulo
familiares.
O DTD que define a marcao construes ainda necessria. No entanto, as
especificaes XML DTD precisa ser menos expressivos do que os SGML DTDs, para
tornar impossvel definir estruturas de elemento que violam restries no assentamento
de elemento.

XML Schemas so a prxima gerao de DTDs: eles fornecem maior flexibilidade na


definio de restries do documento. Ao contrrio de DTDs de XML, a linguagem
XML Schema definida como uma aplicao de XML, para que os desenvolvedores no
precisam usar diferentes sintaxes diferentes ferramentas (e) para a criao de documentos
e para a definio de restries do documento.
Outro conceito muito importante a de um namespace, o que torna possvel a utilizao
de nomes qualificados para distinguir entre elementos que pertencem a diferentes
aplicaes XML e podem ter diferentes semntica. Curiosamente, h uma estreita relao
entre namespaces e XML Schemas.

5.1.1 XML documents

Documentos XML so compostos de declaraes, elementos, tags, comentrios,


referncias de caracteres e instrues de processamento. Cada documento tem um
elemento de raiz nica, para que nem a sua marca de incio nem a sua marca de fim sejam
no contexto de outro elemento; todos os outros elementos tm de ser devidamente
aninhados uns dentro dos outros. Entidades XML so sintaticamente muito semelhantes
s sequncias de escape HTML; existem entidades internas (por exemplo, &lt;&gt;,,
&amp;, ', e "), mas tambm possvel definir novas entidades usando um DTD ou um
XML Schema. Um documento XML bem formado, se inclui uma declarao de
documento, satisfaz elemento de aninhamento e outras restries sintticas e no inclui
entidades indefinidas. Um documento XML bem formado vlido se ele satisfaz as
restries especificadas no DTD associado ou no schema. Claro, s um documento bem
formado vlido.
O documento XML na Figura 5.1 comea com uma declarao XML, que seguida por
um comentrio, a referncia DTD e uma combinao de tags e sequncias de caracteres
que satisfazem as restries para documentos XML bem formados.
Sintaxe de comentrio XML semelhante aos comentrios do HTML. Comentrios s
podem aparecer aps a declarao XML. Eles no podem ser colocados dentro de uma
tag, mas podem ser usados para cercar e ocultar tags individuais e fragmentos XML que
no contm comentrios (por exemplo, o segundo <book> element).

Figure 5.1 Sample XML document.


Alm de comentrios, XML possui um mecanismo ainda mais forte para ocultar
fragmentos de no-conformidade - sees CDATA. Sees CDATA excluem texto de
anlise de XML fechado- todo o texto interpretado como dados de caracteres. til
para ocultar fragmentos de documentos que contm comentrios, citaes, "&" caracteres
ou simplesmente qualquer bloco de texto que so invlidos quando interpretado como
XML. Por exemplo, a seo CDATA na Figura 5.1 esconde o comentrio formatado de
modo inadequado e duas tags XML do analisador XML. A sequncia de caracteres nico
que no pode ocorrer numa anlise de seco CDATA ]] >, que indica o fecho da seo.
Como podes ver da Figura 5.1, elementos XML podem ser representados com dois tipos
de tags. Elementos no vazios usam a abertura e fecho de marcas que tm a mesma sintaxe
como tags HTML (por exemplo, <book>...</book> e <summary>...</summary>).
Elementos vazios so representados por tags nicos que terminam com o
/>sequence(e.g., <page... /> e < price... / >). Um elemento pode ou no ter atributos que,
para elementos no-vazios, devem ser includos em tags abertos (para elementos vazios,
h apenas uma tag, ento no h muita escolha).
O documento na Figura 5.1 contm entidades no corpo do segundo elemento <book>.
Ambos &lt; e &gt; so referncias a entidades internas que so anlogas ao escape de
sequncias em HTML. Desde que o HTML uma aplicao SGML, j tem um DTD, e
no podemos alterar as sequncias de escape existentes ou adicionar novos. XML um
subconjunto do SGML, portanto, possvel definir novas entidades usando um XML
DTD. Um exemplo de uma referncia a uma entidade recm-definido &jw; .
Desde que o jw no uma entidade interna, devem ser definida nos books. Observe que
o &lt; sequncia de caracteres que ocorre dentro da seo CDATA no uma referncia
de entidade - como discutimos, sees CDATA excluem o texto fechado a partir de
anlise de XML.

Figura 5.2 uma representao grfica do documento XML na Figura 5.1. Aqui, ns
internos representam elementos, bordas slidas representam a relao de conteno,
bordas tracejadas representam a relao de atributo, e ns folha so atributos ou contedo
do elemento. Por exemplo, o elemento <info> representado como a combinao de
elementos <pages>, <price>e <publication>, enquanto elementos <title>e <subtitle>so
representados pelo seu contedo de carcter. Nomes de atributo e valores so mostrados
entre parnteses, e bordas de valor de atributo so indicadas por sinais de igualdade (por
exemplo, [firstName = "Leon"]).
Processamento de documentos XML geralmente envolve percorrer uma rvore de
elemento, que comumente referido como a rvore de Document Object Model (DOM)
que uma especificao especial para os caminhos de passagem, que discutida na seo
5.4.1.

5.1.2 XML DTD

O significado de tags XML est nos olhos de quem v. Mesmo que estando a olhar para
o documento de amostra e dizendo a mesmo que faz sentido, apenas por causa da
semntica implcita associada com nomes em ingls dos elementos e atributos.
A semntica de linguagem , naturalmente, inacessvel aos analisadores XML. O
problema imediato para analisadores XML validao. Uma pessoa diria que o mais
provvel que o valor do atributo do elemento <price> de usd o preo do livro em dlares.
Isso viria como uma surpresa se, para um dos livros, o valor desse atributo o nmero
1000 ou a palavra "table". Novamente, esta surpresa seria baseada em semntica de
linguagem e no em qualquer especificao formal que pode ser usada para executar a
validao automatizada.

Figure 5.2 XML element tree for the document in Figure 5.1.

O segundo problema ainda mais complexo. Como fazer documentos XML til para
aplicaes de destino? fcil com HTML - cada tag tem um significado bem definido
que est embutida nos processamentos de navegador e nos mdulos de renderizao.
Elementos XML no tm significado atribudo, embora uma aplicao XML especfica
(e.g., XHTML) pode ter um significado predefinido para elementos individuais.
A sintaxe de XML DTD para definies de elemento na Figura 5.3 mais simples do que
a sintaxe SGML similar (ver fragmento SGML DTD na Figure 5.4). Figura 5.4). Se
fssemos para adicionar mais definies do elemento para o exemplo na Figura 5.4, todos
eles teria pares de traos indicando que tanto uma tag de abertura e uma tag de fecho so
necessrios. No h nenhuma razo para manter essa parte da sintaxe SGML DTD - todos
os elementos XML requerem sempre tags de abertura e fecho.
Da mesma forma, nos exemplos de SGML DTD no captulo 4, a especificao de XML
DTD na Figura 5.3 define o aninhamento e recorrncia de elementos individuais. O
elemento raiz definido para conter pelo menos um <book>, que, por sua vez, contm
exatamente um <title>, pelo menos um <author>e pode ou no pode conter <subtitle>,
<info>e <summary>elementos.
XML DTDs fornecem mecanismos simples para a definio de novas entidades, que so
muito semelhantes dos SGML DTDs. Na Figura 5.3, o entidade jw, usado no documento
de exemplo na Figura 5.1, definido para expandir-se para "John Wiley e filhos, Ltd.".
Uma razo bvia para definir o nome de uma editora como uma entidade que ele se
aplica a vrias entradas de livro. Outro exemplo na Figura 5.3 a entidade JWCopyright,
que definido como uma referncia a um recurso HTTP.
Figure 5.3 XML DTD for the document in Figure 5.1.

Figure 5.4 Fragment of an SGML DTD for the document in Figure 5.1.

DTDs no fornecem uma maneira fcil de definir restries que vo alm da recorrncia
e assentamento do elemento. Enquanto fcil de associar atributos a elementos e definir
restries bsicas sobre tipos de atributo, tentar definir restries mais complexas so
muitas vezes um exerccio de futilidade. E claro, DTDs no ajudam na definio
semntica.

5.1.3 XML Schema

XML Schema uma especificao de World Wide Web Consortium (W3C). Foi
desenvolvido aps a introduo do XML e no tem um anlogo do mundo da SGML. Ele
foi projetado como uma alternativa ao mecanismo de DTD, fornecendo tipagem forte
e utilizando a sintaxe XML. Ele contm construes adicionais que o tornam muito mais
fcil para definir restries de sofisticado.
XML Schema oferece suporte a tipos chamados de "simples" e "complexos". Tipos
simples so definidos atravs da imposio de restries adicionais em tipos internos,
enquanto os tipos complexos so compostos por recursivamente outros tipos simples e
complexos. Tipos internos disponveis no XML Schema so muito mais ricos e mais
flexvel do que os disponveis no contexto DTD. Isto muito importante porque significa
que o XML Schema torna possvel expressar restries sofisticadas sem recorrer lgica
do aplicativo, que precisaria ser codificado usando uma linguagem procedural (por
exemplo, Java) e seria muito mais caro para manter.
A sintaxe XML para fazer referncia a schemas mostrado na Figura 5.5. No fornece
uma especificao de XML Schema para definir as entidades, para que as definies de
entidade tenham que usar a sintaxe DTD.

Na Figura 5.6, demonstramos a abordagem de fora bruta para a definio de um esquema


XML.. Aqui, cada tipo definido no lugar, no h nenhuma reutilizao e o esquema
resultante relativamente difcil de ler. No entanto, um bom ponto de partida para a
nossa anlise.
Comeamos com definir o elemento <books>, associando-o com o tipo complexo que
definido usando o compositor de sequncia. Compositores de sequncia impem uma
ordem sequencial; Eles so equivalentes s vrgulas ao definir restries de aninhamento
de elemento na sintaxe de DTD. Outros compositores incluem tudo, que no impe uma
ordem desde que cada elemento enumerado (ou grupo de elementos) est presente em
conformidade com as restries de ocorrncia e escolha, que exige a presena de
exatamente um elemento ou grupo de elementos. Aqui, o tipo complexo para o elemento
<books> definido como a sequncia de elementos <book> e <notes>. Neste projeto,
tipos so definidos de forma a depht-first, e muitas vezes difcil ver todos os elementos
da sequncia ao ler a esquema. O elemento <book> , por sua vez, associado com um tipo
complexo que tambm definido como uma sequncia, etc.
A sintaxe do XML Schema para a definio de quantificadores elemento (o nmero de
ocorrncias de um elemento) difere da sintaxe DTD, mas ambos implementam os mesmos
conceitos. Por exemplo, o nmero de ocorrncias para o elemento <author> definido
para ser pelo menos um, que o mesmo como "+" na sintaxe do DTD; o elemento
<subtitle> definido como opcionais (zero ou um ocorrncias), que o mesmo como "?"
na sintaxe do DTD. Assim como em DTDs, o nmero de ocorrncias, se no for
especificado, o padro exatamente um.

Figure 5.5 Schema-based validation for the XML document in Figure 5.1.
Figure 5.6 XML Schema for the sample document in Figure 5.1.

Atributos podem ser definidos apenas para tipos complexos. um grande alvio que
schemas, ao contrrio de DTDs, suportam os mesmos tipos built-in para atributos como
eles fazem para elementos. Por padro, atributos so opcionais, mas elas podem ser feitas
necessrias, como no caso do atributo usd para o elemento <price>.
Podemos melhorar o design na Figura 5.6. O novo schema na Figura 5.7 usos chamado
types para fazer a schema mais legvel e fcil de manter. Em vez de definir tipos
complexos no lugar, como na Figura 5.6, comeamos definindo tipos complexos que
podem ser compostos de tipos simples e definies de atributo e proceder para definir
tipos cada vez mais complexos.
Por exemplo, os tipos complexos authorType e infoType so primeiramente definidos e
ento referenciados pelo nome na definio de bookType. O resultado um XML schema
composto de simples definies reutilizveis.
O objetivo principal do esquema apoiar a validao de documentos. Remanesce ser
visto se podemos melhorar a validao definindo restries adicionais. Ns fizemos o
nosso trabalho na definio de quantificadores de elementos e restries de nidificao.
No entanto, seria muito til para impor restries personalizadas sobre tipos simples.Por
exemplo, podemos assumir que um nome no deve ser mais de 32 caracteres, e que o
preo de um livro deve ser na faixa de 0,01 a 999,99, se estamos usando dlares, libras
ou euros. Na Figura 5.8, definimos dois novos tipos simples - nameBaseType e
priceBaseType - atravs da imposio de restries sobre o tipo de seqncia de base. No
primeiro caso, a nova restrio um comprimento mximo, enquanto o segundo o
padro - de um a trs dgitos, possivelmente seguidos por ponto decimal e um outro de
dois dgitos. Claro, temos que voltar para o esquema na Figura 5.7 e fazer alteraes para
as referncias de tipo a fim de tirar proveito dessas novas restries (ver Figura 5.9).
XML schemas fornecem amplas capacidades para definir tipos personalizados e utiliz-
las na validao do documento. Alm disso, XML schemas so documentos XML e
podem ser validadas, que serve como uma boa base para a construo de ferramentas
avanadas. No entanto, a validao avanada no uma soluo para associar elementos
XML, a semntica, que continua a ser um problema muito difcil. Uma soluo parcial
para este problema fornecida pelo XSL, que discutiremos na seo 5.4.
Figure 5.7 Improved schema design for the sample document in Figure 5.1.

Figure 5.8 Defining constraints on simple types.


Figure 5.9 Using defined simple types in the XML schema from Figure 5.7.

5.2 XHTML
Como discutimos no Captulo 4, a estrutura de documentos HTML definido de maneira
pouco rigorosa e relativamente sem restries quando comparado com XML. Por
exemplo, as tags de fecho para muitos elementos HTML so opcionais e so
frequentemente omitidos.
XHTML 1.0 uma reformulao do HTML 4.01 (originalmente concebido como a ltima
especificao HTML) como uma aplicao XML. A migrao para XHTML torna
possvel no s para impor restries estruturais rgidas, mas tambm para eliminar o
suporte legado para a m sintaxe. Mesmo browsers comerciais no tm que apresentar
tolerncia ao validar documentos que pretendem implementar a especificao XHTML.

Figure 5.10 XHTML document.

Diferenas entre o documento HTML de exemplo na Figura 4.10 e o documento XHTML


de amostra na Figura 5.10 incluem o uso de nomes de elemento minscula e a presena
do tag </p>. Alm da declarao de documento, o documento na Figura 5.10 ambo
XHTML vlido e HTML vlido. Muitas restries XHTML, incluindo a exigncia para
fechar tags e colocar os valores de atributos entre aspas, no quebram a validao HTML.
Infelizmente, isto no verdadeiro para todas as construes XHTML que ocorrem nos
documentos reais.
Por exemplo, adicionando a tag <br>aps as palavras "Eu tenho que fechar" no afetaria
a validao HTML mas constituiria uma violao sinttica para XHTML. Substituindo a
tag <br> com a tag <br/> produziria o efeito inverso. No entanto, usando o <br> </br> a
construo no quebraria a validao HTML ou XHTML (Figura 5.11).
No h diferena entre as sequncias de escape HTML e o uso de XHTML
referncias a entidades pr-definidas, mas a histria real mais complicada. A
natureza do processamento de XML reconhecer e processar as referncias de entidade
no contedo do #PCDATA. Elementos que so definidos para ter contedo #PCDATA
(por exemplo, <style>e <script>) so vulnerveis presena de referncias de entidade.
Por exemplo, &lt; seria resolvido para < sign e considerado o incio da marcao. Para
evitar esse problema, em XHTML, elemento de corpos <script>e <style> devem ser
includos nas sees CDATA (ver Figura 5.12). Claro, a sintaxe CDATA quebra a
validao de HTML e a nica soluo a utilizao de documentos externos de script e
estilo (naquelas ocasies quando este problema se levanta).
Como j mencionamos, XHTML a reformulao do HTML como aplicao XML.
Elementos XHTML tm a mesma semntica bem definida como os elementos HTML
correspondentes. Semntica do elemento parte integrante da especificao XHTML e
codificados em mdulos de apresentao de navegadores que oferecem suporte a
XHTML.

Figure 5.11 Examples of valid HTML and XHTML

Figure 5.12 XHTML script syntax.

5.2.1 HTML 5

HTML 4.01 uma especificao preterida que era suposto para ser a ltima verso do
HTML. Com o lanamento de novas verses de XHTML, diferenas entre HTML e
XHTML eram propensos a acumular. Em algum momento, ele teria se tornado impossvel
gerar XHTML vlido que tambm vlido de acordo com a ltima especificao HTML.
Com XHTML 2 falhando, tornou-se aparente que a compatibilidade com o HTML
muito importante. Esta infeliz situao deu origem ao esforo de HTML 5, que visa
unificar as especificaes de HTML e XHTML.
A especificao HTML 5 pretende oferecer suporte a sintaxe HTML e XHTML. Embora
variaes de HTML e XHTML de documentos HTML 5 devem para ser documentos
XML bem formados, o tratamento de erros muito diferente.
Historicamente, diferentes navegadores aplicaram a sua prpria lgica proprietria para
inferir rvores DOM para documentos mal formados, resultando em renderizao
inconsistente entre navegadores. Com o HTML 5, documentos HTML mal-formados
ainda falharam testes de conformidade, alertando aos usurios ferramentas de autoria
problemticos. No entanto, os navegadores poderam usar a mesma lgica bem definida
para traduzir "tag soup" em documentos conformes e utilizar esses documentos
compatveis como a base para a renderizao.
HTML 5 tambm define as alteraes incrementais para HTML 4.01 e XHTML 1.0,
incluindo alteraes de elementos existentes e a introduo de novos elementos. Alguns
dos novos elementos representam um passo significativo na evoluo do suporte ao
navegador de documentos de processamento para aplicaes de streaming. Um exemplo
o elemento <canvas>, que permite a renderizao de grficos dinmicos em tempo real.
muito difcil de prever o futuro de qualquer padro, particularmente no espao web.
Ainda assim, a natureza muito pragmtica da especificao do HTML 5 faz a sua ampla
adoo muito provvel.

5.2.2 XHTML MP

XHTML Mobile Profile (XHTML-MP) uma verso simplificada do XHTML que foi
definido para oferecer suporte a aplicativos sem fio. um substituto para WML, que era
a linguagem de marcao anterior para dispositivos mveis, especificado pelo WAP
Frum. WML contem estruturas de pgina que foram bastante diferentes do XHTML.
Dispositivos que fazem uso do XHTML MP so restringidos pela sua memria limitada,
tamanho de exibio e baixa largura de banda de transmisso. Seria um desperdcio exigir
o dispositivo para fazer vrias solicitaes para pequenos pedaos de dados. Sem
construes especiais, que estavam disponveis em WML, developers XHTML MP tm
que usar links de ncora em documento para fazer referncia a screens menores
individuais dentro de um nico documento. XHTML MP est em conformidade com o
DTD mantida pelo Frum WAP (ver a definio DOCTYPE na Figura 5.13).
Figure 5.13 XHTML MP document.

Figure 5.14 Screen captures for the XHTML MP document in Figure 5.13.
O exemplo de documento XHTML MP na Figura 5.13 contm trs ncoras, identificadas
como temas, webarch e xmlcore, respectivamente. A primeira ncora faz referncia a lista
de temas, o segundo aponta para livros na arquitetura web e o terceiro para livros no
ncleo de tecnologia XML (consulte a Figura 5.14). Observa que o id de ncora serve
como o endereo dentro do documento (por exemplo, <a id = "subjects">). Percursos
dentro do documento so executados por links que faz referncia no documento local -
selecionando os links ou usando atalhos de chave, se eles so definidos na sequncia (por
exemplo, <a accesskey="5" href="#subjects">).

XHTML MP uma grande partida de WML. No h nenhuma construo sem fio


especfico - apenas um subconjunto da especificao XHTML. WAP CSS (uma verso
simplificada do CSS) a especificao do companheiro. O objetivo do XHTML MP
reunir as tecnologias para dispositivos mveis e de desktop navegao na Internet, que
a maneira tradicional de acessar a web.

5.3 Web Services

Web Services so aplicaes web distribudas que fornecem funcionalidade discreta e


expem-as de uma forma bem definida atravs de protocolos de Internet padro para
outros aplicativos da web. Em outras palavras, eles so aplicativos web que se encaixam
no paradigma cliente-servidor, exceto que os clientes no so pessoas mas outros
aplicativos da web.

5.3.1 SOAP

O Simple Object Access Protocol (mais conhecida pela sigla SOAP) uma aplicao de
XML que diferente de aplicativos XML que discutimos at agora. Documentos SOAP
no so para renderizao de contedo, mas sim para invocar e passar informaes de e
para aplicativos da web. O SOAP melhor descrito como um protocolo baseado em
XML, aplicativo-camada para construir e processar solicitaes de servio web e
respostas. Ele pode usar uma variedade de outros protocolos (por exemplo, protocolos de
mensagens tais como JMS e MQ/MSMQ) para transporte de solicitaes e respostas,
SMTP e HTTP.
A Figura 5.15 mostra um exemplo de uma solicitao SOAP simples com vrios
parmetros. No exemplo, o servio da web retorna informaes sobre o clima local. A
inteno da solicitao para recuperar informaes sobre Nova York. Para isso, deves
fornecer a longitude e a latitude da regio, bem como informaes de localidade (por
exemplo, en/us), que determina no s a lngua, mas tambm o formato para a temperatura
(Celsius ou Fahrenheit) e velocidade do vento (mph ou km/h).
Observa os espaos para nome diferentes, que fornecem o contexto semntico e o
mecanismo sinttico para separao de elementos. Os namespaces so usados para
remover a ambigidade de elementos do envelope SOAP, referncias a tipos de dados
XML e elementos de servio especficos. O envelope SOAP contm um elemento Body,
que por sua vez, contm um nico elemento definindo uma chamada de procedimento
remoto, especificando um mtodo (getWeather) e seus argumentos (degreeslong,
degreeslat e locale).
Figure 5.15 A SOAP request with multiple parameters.

Figure 5.16 The SOAP request from Figure 5.15 transmitted over HTTP.

O envelope transportado para um servidor SOAP por um protocolo como HTTP ou


SMTP. No caso do HTTP, o envelope constitudo pelo corpo da solicitao HTTP, que
segue a linha de pedido (i.e., "POST/servios HTTP/1.1") e associado aos cabealhos,
como mostrado na Figura 5.16. Aps receber a solicitao, o servidor SOAP invoca o
mtodo especificado com os argumentos fornecidos e gera uma resposta para a
transmisso de volta para o aplicativo solicitante. Na Figura 5.17, a resposta contm
valores para os elementos de resposta pr-definidas, que informe o solicitante que a
temperatura em Nova Iorque 25 (Fahrenheit), as condies so parcialmente nubladas, e
o vento vem de sudoeste a 5 km/h. Desde que a resposta transmitida para o solicitante
sobre HTTP, que inclui os cabealhos HTTP apropriados.
Um cliente SOAP pode traduzir esta resposta em um formato legvel usando um dos
SOAP APIs de ferramentas (por exemplo, o Microsoft SOAP Toolkit, JAXM/SAAJ) ou
transformando o corpo de resposta usando o XSLT em XHTML XHTML MP ou
VoiceXML, conforme descrito na seo 5.4.
Web Services Definition Language (WSDL)

A definio de um servio web baseado em SOAP apenas um passo parcial em direo


a verdadeira interoperabilidade. Construindo uma solicitao SOAP requer conhecimento
sobre o servio - o nome do mtodo a ser invocado, os seus argumentos e os seus tipos
de dados, bem como a semntica de resposta. Este conhecimento pode estar disponvel
atravs de documentao legvel, mas isto fica aqum do objetivo da verdadeira
interoperabilidade. Desde que os servios web so significados ser mquina-
compreensvel, a sua semntica (e at mesmo a sua existncia) devem ser expostos a
aplicativos da web, para que eles possam descobrir e fazer uso deles, sem interveno
humana.

Web Services Definition Language (WSDL) e Universal Description, Discovery, and


Integration (UDDI) so projetados para fechar a lacuna interoperabilidade. WSDL
fornece uma linguagem comum para a definio de um servio web e comunicao
semntica. UDDI serve como um mecanismo para registrar e publicar servios web.
Vamos examinar a definio de servio web na Figura 5.18 de baixo para cima. O
elemento <service> contm um elemento <documentation> (para dar o servio de uma
descrio legvel) e um elemento <port>.
O elemento <port> ligado ao elemento <binding> acima com o nome
WeatherServiceBinding, que, por sua vez, faz referncia o elemento <portType> com o
nome WeatherServicePortType. O elemento <port> tambm contm <soap:address> cujo
atributo location define a URL que pode ser usada para invocar o servio.
O elemento <binding> define o mecanismo de transporte (SOAP sobre HTTP) e os nomes
das operaes que podem ser executadas usando o servio. Neste caso, h apenas um
elemento de <operation>, getWeather. Especificaes para o formato de codificao para
os corpos de entrada e sados esto includas aqui.
O elemento <portType> tambm lista os nomes de operaes como elementos
<operation>. O nico elemento de <operation> aqui contm elementos <input>e
<output>, que por sua vez se referem aos elementos < message> (getWeatherInput e
getWeatherOutput). Os elementos de <message> especificam referncias a tipos de dados
complexos, weatherRequest e weatherResponse. As definies de tipos complexos
especificam componentes para ambos (pedidos) de mensagens de entrada e sada
(respostas).
Isto pode parecer um exagero para um servio web simples e, de fato, . H um nmero
de maneiras de simplificar esta definio. O nosso exemplo evita atalhos para mencionar
alguns dos aspetos mais complexos da WSDL e demonstrar as opes disponveis.
Figure 5.17 The response to the SOAP request in Figure 5.16.
Figure 5.18 A WSDL definition for the weather service in Figure 5.15.

Universal Description, Discovery, and Integration (UDDI)

Enquanto WSDL fornece um padro comum para a definio semntica de servios web,
UDDI fornece a ltima pea do quebra-cabea interoperabilidade atravs dos seus
mecanismos de registo e de servios de publicidade na web.
Servidores de UDDI fornecem duas funes: investigao e publicao. Inqurito permite
aos usurios procurar por servios da web que se encaixam em categorias especficas e
correspondem aos critrios de pesquisa especificados. O pedido de inqurito na Figura
5.19 uma consulta para as empresas cujos nomes contenham a palavra "weather".
V-se que este pedido UDDI tambm uma solicitao SOAP (embora um pouco mais
simples do que encontrado em nosso exemplo de servio da web original).
Os resultados de tais inquritos (naturalmente) so respostas SOAP (como mostrado na
Figura 5.20). Clientes SOAP podem analisar estas respostas para derivar informaes
sobre servios web disponveis que correspondam aos critrios de pesquisa fornecido. Os
clientes podem escolher um servio web (aqueles situados atravs do inqurito), acessar
a sua definio WSDL e invoc-lo. Observa que, para simplificar, ns omitimos os
atributos businessKey e serviceKey.

Figure 5.19 A UDDI request from a SOAP client.

5.3.2 Representational State Transfer (REST)

Por um tempo, a noo de servios da web era sinnimo de SOAP. Nas mentes dos
desenvolvedores, servios web veio a ser identificado com um mecanismo bem definido,
mas um pouco tendencioso. A sobrecarga associada processando mensagens feito com
SOAP foi impraticvel para uso com sites da web de alto trfego. Havia uma necessidade
expressa de uma forma mais leve para expor a funcionalidade do aplicativo discreto na
Internet.

Figure 5.21 A request to publish a web service in a UDDI registry.


Representational State Transfer (REST) um padro arquitetnico, que ganhou
popularidade como uma alternativa ao SOAP. baseado em considerar os itens de
interesse na web (identificado pelos seus URLs) como recursos. Um item considerado
REST compatvel se ele identificado exclusivamente por um URL que no contm uma
cadeia de parmetro ou uma string de consulta. REST no estritamente vinculado ao
XML, mas XML o formato comum para representaes REST.
Outros recursos no so pginas estticas, mas chamadas para aplicativos da web. Na
Figura 5.22, um URL compatvel com o REST passa informaes de latitude e longitude
para o tempo de aplicao de monitoramento. Quando acessado, tais recursos retornam a
sua representao. Uma representao pode ser pensada como o estado do navegador.
Dentro deste formalismo, seguindo um link resultaria em recuperar uma representao
diferente e pode ser considerada uma transio de estado. Observa que todas as
informaes de estado devem ser transmitidas com o pedido, desde que as solicitaes de
servio de REST no podem tirar vantagem de contexto do servidor.

Figure 5.22 A REST-compliant URL.

Figure 5.23 A representation of a REST resource.

Um aspeto crtico de SOAP foi que solicitaes devem fornecer informaes suficientes
explcitas para receber uma resposta especfica e detalhada. Solicitao SOAP para uma
atualizao do tempo na Figura 5.15 inclui todas as informaes (longitude, latitude e
localidade) necessrias para produzir um boletim meteorolgico. A resposta SOAP
contm informaes detalhadas em ingls (a localidade especificada) sobre o clima no
local selecionado. Uma representao equivalente do REST pode exigir vrias
solicitaes e transies de estado. Em contraste, a pedido de REST de exemplo mostrada
na Figura 5.22 inclui informaes sobre a longitude e latitude, mas no a localidade.
A resposta mostrada na Figura 5.23 a representao do recurso solicitado. Esta
representao contm links para recursos mais especficos que correspondem as
localidades nos idiomas ingls e francs.
Selecionar ingls resulta na transio de estado para a representao do seguinte recurso:

A representao deste recurso na Figura 5.24 contm detalhes, em ingls, sobre o tempo
no local selecionado. verificvel e equivalente a previso contida na resposta SOAP na
Figura 5.17.
Os diversos mtodos de solicitao HTTP tm papis diferentes no padro de REST, mais
ou menos anlogo ao criar - ler - atualizar - apagar (CRUD) funcionalidade. J vimos
como o mtodo GET usado para recuperar a representao do REST de um recurso.
(Nota que solicitaes GET neste contexto no devem produzir efeitos colaterais). Da
mesma forma, o mtodo POST geralmente usado para criar novos recursos, o mtodo
PUT para modificar recursos existentes e o mtodo DELETE para remover os recursos
existentes. Para o POST e colocar, o corpo da solicitao deve conter uma representao
de um recurso, tendo o mesmo formato como uma representao obtida atravs de uma
solicitao GET.

Figure 5.24 Representation of the weather report.

No incomum para aplicativos para dar suporte a SOAP e servios REST. Amazon.com,
por exemplo, fornece verses tanto o sabo e o resto dos seus servios de web API.
Servios SOAP tem uma infra-estrutura bem estabelecida, fornecem maior flexibilidade
na especificao de parmetros e no necessitam de mltiplas solicitaes e transies de
estado. Por outro lado, servios REST evitam a sobrecarga de processamento associada a
anlise de mensagens SOAP. A sua simplicidade e eficincia fornece uma grande atrao
para os usurios desses servios. A natureza dos pedidos de REST torna mais fcil para
inserir proxies de cache e a autorizao para fornecer desempenho e segurana.
Assim como WSDL fornece um mecanismo robusto para a definio de servios SOAP,
WADL, que significa Web Application Description Language, fornece um vocabulrio
XML descrevendo servios de Web baseados em REST. Atualmente, no h analgico
verdadeiro REST para o Registo UDDI, que auxilia na busca e descoberta de servios
Web baseados em SOAP, mas como o nmero de servios Web baseados em REST
cresce, algo ao longo das linhas de UDDI provvel que surjam.

5.4 XSL

XHTML uma reformulao baseado em XML de um aplicativo existente de SGML


(HTML) com uma semntica bem definida. XHTML MP , por sua vez, uma
reformulao do XHTML para dispositivos mveis, tambm com uma semntica bem
definida. Quanto a outras aplicaes de XML? DTDs e XML Schemas so timos para
validao do documento, mas tambm no pode trazer o significado de elementos XML.
por isso que existem tantos diferentes padres de aplicao de XML. Quando
aplicativos relacionados usam os mesmos elementos XML, torna-se possvel codificar
semntica do elemento nas bibliotecas de aplicativos compartilhados. Isso semelhante
ao embutir semntica XHTML mdulos de processamento de navegador.
No uma perspectiva atraente, ter que mudar a lgica do aplicativo, toda vez adicionar,
alterar ou excluir elementos XML. Precisamos de uma abstrao para permitir
transformaes entre documentos XML que estejam em conformidade com diferentes
esquemas. Desta forma, tendo implementado a lgica do aplicativo para um conjunto de
elementos, podemos usar as transformaes e evitar ter que re-implementar a lgica do
aplicativo para outras esquemas relacionadas.
O Extensible Stylesheet Language (XSL) serve o duplo objectivo de transformar
documentos XML e de expor o controlo sobre o processamento do documento. Como
esquemas XML, programas XSL so documentos XML bem formados e vlidos.

5.4.1 XSLT

O componente de transformao de XSL, chamado XSLT, torna possvel selecionar


fragmentos de documentos XML baseados em padres de caminho na hierarquia de
elemento e aplicar as operaes de transformao para esses fragmentos.
A folha de estilos XSLT na Figura 5.25 apresenta uma viso particular do documento
XML na Figura 5.1. Este modo de exibio contm uma simples tabela de entradas de
livro com apenas algumas das propriedades definidas no documento XML original (ver
Figura 5.26).

Figure 5.25 XSLT style sheet.


Figure 5.26 Result of applying the transformation in Figure 5.25 to the document in Figure
5.1.

Podes ver que a folha de estilo na Figura 5.25 composta de trs elementos de
<template>. Um modelo XSL anlogo a uma funo, embora o mecanismo de
invocao bastante diferente. O mecanismo usado no exemplo baseado em padres de
correspondncia contra elementos na hierarquia do documento. O primeiro modelo
invocado quando o processador XSL encontra o elemento <books>no documento XML
na Figura 5.1. Quando aplicado, o modelo mantm todos os elementos exceto para
aqueles com o prefixo "xsl:" . Os ltimos so directivas XSLT definidas no XSL schema.
A transformao de XSL ocorre sempre no contexto do n do elemento atual. Ao entrar
o primeiro modelo, o n de elemento atual livros, ento < xsl: value-de
select="@status"/ > retorna o valor do atributo status do n de livros. O < xsl: selecione
aplicar-modelos = "livro" / > instrui o intrprete XSL para localizar o modelo definido
para corresponder ao padro do livro (o segundo modelo na Figura 5.25) e avali-lo
repetidamente para cada elemento de <book>filho. Desde que o documento XML contm
apenas um elemento de <book>, o intrprete avalia o segundo modelo de apenas uma vez.
The <xsl:value-of select=title/> instruction no segundo modelo avaliada para o
contedo do elemento do documento XML, que o descendente direto do <book>de
<title>. A avaliao de < xsl: value-de select="info/publication/@source"/ > e < xsl:
value-de select="info/publication/@year"/ > executada por percorrer o elemento de
rvore do elemento atual <book> at <info> e, em seguida, ainda mais para baixo para
<publication>e, atravs de bordas de atributo, para a fonte de atributos e o ano.
Da mesma forma, o < xsl: selecione aplicar-modelos = "autor" / > instrui o intrprete para
localizar o modelo definido para coincidir com o autor (o terceiro modelo na Figura 5.25)
e avali-lo para cada elemento de <author> acessvel atravs da borda de filho do
elemento atual do <book>. Uma vez que existem duas ocorrncias de <author>, o
intrprete avalia o terceiro modelo duas vezes e gera a sada para ambos os autores (Figura
5,26).

Traversal expresses usadas em instrues de XSLT (por exemplo, title,


info/publication/@year) conformadas com a especificao do XPath - ainda outro
relacionadas ao XML padro. XPath uma consulta simples e linguagem de travessia
para rvores de elemento XML. Como podes deduzir dos nossos exemplos, cada "/"
representa uma vantagem (o primeiro "/" est implcito). Por padro, uma borda leva para
um elemento filho com o nome especificado, mas pode levar a outros tipos de ns. Por
exemplo, o "@" entrar .../@year denota o atributo ano do n de elemento alcanado
percorrendo a parte anterior da expresso XPath.

5.4.2 XSL Formatting Objects

XSL Formatting Objects (XSL-FO) uma linguagem de marcao que descreve o


vocabulrio de renderizao, projetado para oferecer suporte a paginao. A
especificao XSL-FO o descendente de CSS usado por navegadores da web para
controlo de renderizao. Define objetos genricos processamento associados com
elementos do vocabulrio XSL-FO, incluindo <block>, <inline>, <page-sequence> e
<footnote>, bem como objetos de estilo (por exemplo, <font>). Folhas de estilo XSL-FO
Amarrem os objetos de processamento genrico para formatao e paginao.

XSL-FO fornece um superconjunto da funcionalidade CSS, mas, enquanto o propsito da


CSS oferecer suporte a renderizao do navegador, XSL-FO projetada para oferecer
suporte a layouts de impresso. Semanticamente, controles para renderizar componentes
individuais so muito semelhantes, mas a variao na sintaxe significativa. Como
discutimos no captulo anterior, o CSS tem sua prpria sintaxe:

enquanto XSL-FO uma aplicao de XML:

Figure 5.27 Using a CSS style sheet to render HTML and XHTML documents.

Figure 5.28 One way of using an XSL style sheet to print an XML document.
Figure 5.29 Another way of using XSL style sheets to print XML documents.

Alm de produzir uma representao alternativa do XML, processadores XSLT podem


tirar proveito de styling e paginao informaes fornecidas pelos objetos de formatao
para gerar PDF, Postscript ou outra forma de impresso-orientado a sada. Figuras 5.28 e
5.29 ilustram dois caminhos diferentes para a criao de representaes de impresso.
Crculos cinzento denotam o processador XSLT e crculos pretos indicam o processador
de XSL-FO. Dado que o alvo da transformao XSL o vocabulrio de XSL-FO, a sada
do processador XSLT pode servir como entrada para o processador de XSL-FO.
A soluo bvia para a criao de uma apresentao de impresso implementar uma
transformao XSL do formato XML desejado para aquele baseado no vocabulrio de
XSL-FO. necessrio definir objetos de formatao para a paginao desejada, layout e
renderizao (Figura 5.28).

Desde que o XHTML omnipresente, j existem bibliotecas de fcil-para-parametrizar


transformaes XSL de XHTML para PDF, o que significa que ns podemos renderizar
para imprimir com muito pouco trabalho (Figura 5.29).

5.4.3 What is so important about XSL?

A especificao XSL teve muitas voltas e se transforma em sua histria relativamente


curta, mas agitada. Neste momento, uma combinao dos dois componentes bem
definidos - XSLT e XSL-FO. O primeiro a linguagem de transformao que permite
tradues entre documentos XML que satisfazem diferentes esquemas, e o ltimo a
linguagem de estilo que oferea suporte a layouts de pgina. H uma infinidade de
linguagens de estilo compatvel com XHTML (por exemplo, CSS e CSS2), mas eles no
so parte integral do XSL, mesmo que o XHTML uma aplicao de XML.
Mais voltas e reviravoltas ainda podem estar frente de ns. Seria timo para navegadores
fornecer o suporte integrado para XSL-FO, que pode ser suficiente para preterir outras
linguagens do estilo. Uma vez que prtico expressar semntica XHTML usando o
vocabulrio de XSL-FO, o antigo se tornaria no mais do que uma notao de atalho. Tal
desenvolvimento pode ser muito propcio para ferramentas de construo avanada e
componentes de apresentao simplificadoras.

XSLT agora a tecnologia de escolha para construir aplicaes que se destinam a vrios
dispositivos de usurio final e formatos de apresentao. Permite uma representao
XML "cru" de um documento que pode ser personalizado e transformado em vrios
formatos de destino (por exemplo, XHTML, WML, SMIL).
XSL-FO amplia a lista de dispositivos e formatos de incluir aqueles que exigem a
paginao. Essa extenso tem o potencial de racionalizao arquitetura de aplicativo e
simplificar o desenvolvimento e a manuteno. XSL-FO continua a ganhar mpeto desde
o seu lanamento inicial, como uma recomendao W3C em 2002.

Вам также может понравиться