Anotação Estrutural de Documentos e sua Semântica | ||
---|---|---|
Prev | Apêndice D. Futuras normas relacionadas com SGML | Next |
Neste momento, há duas linguagens de especificação de estilo para documentos XML em desenvolvimento: Cascading Style Sheets (CSS) e Extensible Stylesheet Language (XSL). Ambas serão descritas em mais detalhe nas próximas secções.
Neste momento, uma questão poderia ser levantada: porquê desenvolver duas linguagens e não apenas uma? O quadro seguinte fornece a resposta.
Tabela D-2. CSS versus XSL
CSS | XSL | |
---|---|---|
Pode ser usada com HTML? | sim | não |
Pode ser usada com XML? | sim | sim |
Pode transformar documentos? | não | sim |
Sintaxe | CSS | XSL |
Da análise do quadro, pode-se concluir que o CSS pode ser usado para formatar documentos XML e HTML, no entanto, não pode ser usado para transformar documentos. Por outro lado, o XSL apenas pode ser usado para formatar XML e pode transformar documentos. Podemos agora perguntar: quando usar CSS e quando usar XSL?
Sempre que o documento final for uma versão estilizada do documento original, devemos usar o CSS. Quando o documento final resultar de uma transformação do documento original (construção de índices, listas de nomes, ...), deve ser usado o XSL.
O CSS é uma linguagem declarativa muito simples que permite, a autores e utilizadores, associar informação de estilo a documentos estruturados XML ou HTML.
O estilo de um elemento especifica-se associando-lhe propriedades e valores.
Exemplo D-3. Especificação de estilo para um elemento
H1 { font-size: 16pt; font-weight: bold; color: blue; }
Neste exemplo, está-se a declarar que os elementos H1 devem ter o texto em 16 pontos, letra carregada e de côr azul.
As outras propriedades do CSS permitem especificar tudo desde o tamanho de letra de um parágrafo até margens, espaçamento de linhas e texturas de fundo.
O CSS tem dois níveis de especificação suportados em duas implementações diferentes:
O CSS1 é uma linguagem de fácil leitura e permite expressar o estilo numa terminologia comum a sistemas normais de publicação. Como o nome indica, várias especificações de estilo podem ser aninhadas para produzir o resultado final.
O CSS2 define um nível de abstracção acima do CSS1 - dá um maior controlo ao utilizador na disposição dos objectos na página. Com poucas excepções, todas as especificações CSS1 são especificações CSS2. Na secção seguinte descreve-se melhor o CSS2.
O CSS pode ser usado com qualquer documento estruturado. Vamos ver, por exemplo, a sua aplicação ao XML.
Exemplo D-4. Documento XML
<?xml version="1.0"?> <CURSO> <TITULO>XML, uma promessa?... </TITULO> <AUTOR>José Carlos Ramalho</AUTOR> <RESUMO> <PARA>Durante este curso, faremos uma travessia do universo <ACRON>XML</ACRON> ... </PARA> ... </RESUMO> ... </CURSO>
Para formatar este documento recorrendo ao CSS2 temos de fazer duas coisas:
Criar uma especificação de estilo
Associar essa especificação de estilo ao documento XML
A especificação de estilo é simplesmente um ficheiro de texto com estensão ".css". Para este exemplo criou-se o ficheiro "curso.css".
Exemplo D-5. curso.css
ACRON {display: inline} CURSO, TITULO, AUTOR, RESUMO, PARA {display: block} TITULO {font-size: 16pt} AUTOR {font-style: italic} CURSO, TITULO, AUTOR, RESUMO, PARA {margin: 2cm}
As primeiras duas linhas especificam se os elementos são "inline" (devem ser colocados na mesma linha que os caracteres que os precedem e antecedem), ou "block" (há uma quebra de linha no início do elemento e outra no fim).
As outras linhas alteram o valor de algumas propriedades dos elementos a que se referem (tamanho de letra, postura, margens).
Neste momento, a maneira de associar uma especificação de estilo a um documento XML é inserir no início do documento uma instrução de processamento com um determinado formato:
<?xml version="1.0"?> <?xml:stylesheet type="text/css" href="curso.css"?> ... Resto do documento ...
O CSS é uma boa opção para a especificação do estilo sempre que os elementos (parágrafos, listas, cabeçalhos, imagens, tabelas, ...) sejam formatados e apareçam no documento resultado na mesma ordem em que se encontram no documento original.
Mas, nem sempre é assim. Há situações em que se pretende reordenar estruturalmente o conteúdo de um documento. Pode-se, por exemplo, querer gerar uma síntese do documento original, ou uma tabela de referências. Este tipo de operações requer uma transformação do documento original. O XSL permite especificá-las.
O XSL adoptou a sintaxe do XML. No entanto, encontra-se ainda em fase de desenvolvimento, podendo ser alterado a qualquer momento. Este facto não assustou, por exemplo a Microsoft que já integrou no seu browser ("Internet Explorer") a possibilidade de processar estilos especificados em XSL.
O XSL resultou da fusão de algumas características de duas outras linguagens de especificação de estilo: do DSSSL (Secção 6.2) e do já descrito CSS.
O XSL combina parte das potencialidades do DSSSL com o CSS e adiciona uma linguagem de programação para ligá-las, o ECMAScript, uma versão normalizada de Javascript.
Para construir um determinado resultado partindo da informação guardada num documento XML, um processador XSL irá utilizar uma especificação de estilo para fazer uma travessia ao documento e produzir o produto final desejado.
Até ao momento, os processadores XSL disponíveis geram apenas resultados em HTML, mas em teoria poderiam gerar qualquer outro formato (à semelhança do DSSSL): RTF, ASCII, PDF, TEX, etc.
Num futuro muito próximo, o XSL (na versão corrente ou com alterações) será suportado directamente nos browsers, de momento isso não acontece.
Em XSL, a associação de uma folha de estilo a um documento XML é feita da mesma maneira que em CSS, através da inclusão da linha:
<?xml-stylesheet type="text/xsl" href="curso.xsl"?>
Eis o conceito mais importante subjacente ao XSL: o XSL não manipula elementos, manipula objectos gráficos ("flow objects"). Mais especificamente, transforma fragmentos de um documento XML em objectos gráficos.
Surge então a questão: O que são de facto estes objectos gráficos?
Um objecto gráfico é uma unidade no resultado final de uma versão impressa ou colocada na Internet. Por exemplo, quando se formata um parágrafo com um determinado tipo de letra, ou quando se coloca uma imagem num determinado ponto do écran, não estamos a tratar individualmente nem os caracteres do parágrafo nem os pixeis da imagem.
Um aspecto interessante destes objectos é que podem ser agrupados numa hierarquia de objectos gráficos: uma caixa ("box") pode conter um ou mais parágrafos ("paragraph"). Este aninhamento de objectos começa a parecer familiar, parece mesmo a estrutura de um documento XML. Parece mas não é; um objecto gráfico é a representação pictórica de um componente lógico do documento.
Basicamente, uma folha de estilo XSL é composta por um conjunto de regras de construção. Cada regra tem duas partes, um padrão e um conjunto de acções. Sempre que um elemento do documento original XML corresponder ao padrão especificado numa regra, o correspondente bloco de acções é executado.
Exemplo D-6. Esqueleto de uma folha de estilo XSL
<xsl> <rule> [regra de construção 1] [regra de construção 2] ... </rule> <rule> [regra de construção 3] ... </rule> </xsl>
Voltamos ao exemplo do curso e das aulas para demonstrar o que é uma regra de construção.
Exemplo D-7. Regra de construção
<rule> <target-element type='Aula'/> <DIV font-size='12pt' font-family='sans-serif' font-style='italic'> <children/> </DIV> </rule>
As folhas de estilo em XSL podem ser muito simples ou muito complexas. Para mais informações o leitor encontrará no último capítulo dedicado à bibliografia as referências necessárias.