Академический Документы
Профессиональный Документы
Культура Документы
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.
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.
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.
Concrete syntax
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).
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
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
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
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.
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.
HTML header
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.
HTML body
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.
HTTP requests
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.
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.
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.
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.
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).
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).
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.
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.
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.
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.
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.
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">).
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.
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.
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.
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.
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
5.4.1 XSLT
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).
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.
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.