aplicando transformação em xml usando xslt e xsl-fo - 3

47
Aplicando Transformações em XML usando XSLT e XSL-FO Ms Vivian Genaro Motti Profª Drª Maria da Graça Pimentel Prof Dr Rudinei Goularte Ilhéus, maio de 2009. ERBASE

Upload: vivian-motti

Post on 18-Dec-2014

308 views

Category:

Technology


1 download

DESCRIPTION

Minicurso em 4 módulos apresentado durante o ERBASE em 2009.

TRANSCRIPT

Page 1: Aplicando Transformação em XML usando XSLT e XSL-FO - 3

Aplicando Transformações em XML usando XSLT e

XSL-FO

Ms Vivian Genaro MottiProfª Drª Maria da Graça Pimentel

Prof Dr Rudinei Goularte

Ilhéus, maio de 2009.

ERBASE

Page 2: Aplicando Transformação em XML usando XSLT e XSL-FO - 3

Parte I: XML, conceitos e definições Parte II: XSD, XSL, X-PATH Parte III: CSS, XSL-T, XSL-FO Parte IV: XSL-FO (Formatting

Objects)

Page 3: Aplicando Transformação em XML usando XSLT e XSL-FO - 3

Sumário CSS XSLT XSL-FO

Introdução Definição

Page 4: Aplicando Transformação em XML usando XSLT e XSL-FO - 3

CSS

CascadingStylesheets

Page 5: Aplicando Transformação em XML usando XSLT e XSL-FO - 3

CSS São folhas de estilo

HTML: define a estrutura e o conteúdo de um documento web

CSS: define o layout e o estilo de apresentação

Recomendação da W3C Suportada por navegadores

Page 6: Aplicando Transformação em XML usando XSLT e XSL-FO - 3

Exemplop{text-align:center;color:black;font-family:arial}

Define os atributos Para parágrafos

Page 7: Aplicando Transformação em XML usando XSLT e XSL-FO - 3

XSLT

Extensible Stylesheet LanguageForTransformations

Page 8: Aplicando Transformação em XML usando XSLT e XSL-FO - 3

XSLT XSL foi desenvolvida pela W3C

Para criação de uma linguagem para folhas de estilo baseadas em XML

Folhas de Estilo XSL Consistem em um conjunto de regras

chamado template XSLT

São as transformações do XSL

Page 9: Aplicando Transformação em XML usando XSLT e XSL-FO - 3

XSLT Transforma documentos XML em

HTML Ou XHTML

XPATH É usado na XSLT para navegar pelos

elementos e atributos XSLT é uma recomendação da W3C

Page 10: Aplicando Transformação em XML usando XSLT e XSL-FO - 3

XHTML São documentos que ampliam o

HTML4 São baseados em XML

Podem ser lidos, editados, visualizados e validados por ferramentas para XML

Podem usar aplicações baseadas em HTML ou DOM

Page 11: Aplicando Transformação em XML usando XSLT e XSL-FO - 3

Aplicações da XSLT Elementos e atributos de um

documento original podem ser Removidos Adicionados Rearranjados Ordenados Testados

XSLT transforma uma árvore-fonte XML em uma árvore resultante

Page 12: Aplicando Transformação em XML usando XSLT e XSL-FO - 3

Suporte por Navegadores XML, XPATH e XSLT são suportadas

por Internet Explorer 6 Mozilla Firefox 3 Google Chrome 1 Opera 9

Page 13: Aplicando Transformação em XML usando XSLT e XSL-FO - 3

Estrutura de um documento Elemento raiz que declara um XSL

Folha de estilo XSL <xsl:stylesheet> ou <xsl:transform>

<?xml version="1.0" encoding="ISO-8859-1"?><xsl:stylesheet version="1.0"xmlns:xsl= "http://www.w3.org/1999/XSL/Transform">

Page 14: Aplicando Transformação em XML usando XSLT e XSL-FO - 3

<xsl:template match="/"> <html> <body> <h2>Meus contatos telefônicos</h2> <table border="1"> <tr bgcolor="#9acd32"> <th align="left">Nome</th> <th align="left">Telefone</th> </tr> <xsl:for-each select="agendas/agenda"> <tr> <td><xsl:value-of select="endereco"/></td> <td><xsl:value-of select="email"/></td> </tr> </xsl:for-each> </table> </body> </html></xsl:template> </xsl:stylesheet>

Page 15: Aplicando Transformação em XML usando XSLT e XSL-FO - 3

Estrutura em detalhes Template

Elemento que serve para defini-lo Match

Atributo que associa o template a um elemento

Seu valor é uma expressão XPATH

Page 16: Aplicando Transformação em XML usando XSLT e XSL-FO - 3

Passo-a-passo 1: declaração XML (com versão e

codificação) 2: definir que é uma folha de estilos XSLT <xsl:stylesheet> (com a versão e o namespace)

3: elemento template <xsl:template> atributo match="/" associa o template ao

elemento raiz 4: código HTML interno ao elemento

template

Page 17: Aplicando Transformação em XML usando XSLT e XSL-FO - 3

Referência Para utilizar o template deve-se

adicionar ao documento XML a referência à folha de estilos

Ex:<?xml-stylesheet type="text/xsl"

href="agendas.xsl"?>

Templates têm as regras para aplicar em nós específicos

Page 18: Aplicando Transformação em XML usando XSLT e XSL-FO - 3

Elemento value-of Usado para extrair o valor de um

elemento XML e adicioná-lo à transformação de saída

<td><xsl:value-of select="agenda/nome"/></td> O valor do atributo select é uma

expressão XPATH Como em um sistema de navegação por

arquivos

Page 19: Aplicando Transformação em XML usando XSLT e XSL-FO - 3

Elemento xsl:for-each Retorna um conjunto de elementos<xsl:for-each select="agendas/agenda"> <tr> <td><xsl:value-of select="nome"/></td> <td><xsl:value-of select="telefone"/></td> </tr></xsl:for-each> Esse exemplo resulta em uma tabela com

todos os elementos

Page 20: Aplicando Transformação em XML usando XSLT e XSL-FO - 3

Filtrando elementos Expressões XPATH podem ser usadas

para seleção de elementos específicos <xsl:for-each select=”agendas/agenda[nome='Maria']”>

Retorna elementos com nome Maria Operadores

• = igual• != diferente• &lt; menor que • &gt; maior que

Page 21: Aplicando Transformação em XML usando XSLT e XSL-FO - 3

Ordenando elementos O elemento <xsl:sort>, usado após

o <xsl:for-each> ordena os elementos Pode-se especificar qual elemento deve

ser usado na ordenação Ex: por nome<xsl:sort select=”nome”>

Page 22: Aplicando Transformação em XML usando XSLT e XSL-FO - 3

Testando elementos Para incluir uma condição deve-se

usar após o <xsl:for-each> o <xsl:if><xsl:for-each select="agendas/agenda"> <xsl:if test="nome != 'Maria'"> <tr> … </tr> </xsl:if></xsl:for-each>

Page 23: Aplicando Transformação em XML usando XSLT e XSL-FO - 3

Condições Múltiplas Choose, when e otherwise<xsl:choose> <xsl:when test="nome != Maria"> <td><xsl:value-of select="nome"/></td> </xsl:when> <xsl:otherwise> <td><xsl:value-of select="nome"/></td> </xsl:otherwise> </xsl:choose>

Page 24: Aplicando Transformação em XML usando XSLT e XSL-FO - 3

XSLT Transformam documentos em

diferentes formatos JavaScript pode ser usado para adequar

as formatações aos navegadores

Page 25: Aplicando Transformação em XML usando XSLT e XSL-FO - 3

XSL-FO

Extensible Stylesheet Language – Formatting Objects

Page 26: Aplicando Transformação em XML usando XSLT e XSL-FO - 3

A especificação da Extensible Stylesheet Language (XSL) se divide em XSLT, uma linguagem para transformar

XML, e XSL Formatting Objects (XSL-FO), um

vocabulário XML para especificar a semântica da formatação

XPATH

Definição

Page 27: Aplicando Transformação em XML usando XSLT e XSL-FO - 3

XSL-FO é um conjunto de ferramentas para descrever a apresentação do XML Para produção de material impresso em

alta qualidade descrevendo a formatação e layout de conteúdos gerados por computador

Definição

Page 28: Aplicando Transformação em XML usando XSLT e XSL-FO - 3

XSL-FO Formatting Objects Linguagem de marcação

Para descrever a formatação dos dados XML

Permite diferentes saídas• Papel, tela, visores, áudio• PDF, PS, SVG, HTML, TXT

Editoração de documentos Recomendação da W3C

Page 29: Aplicando Transformação em XML usando XSLT e XSL-FO - 3

XSL-FO é uma linguagem de marcação baseada em XML para especificar detalhadamente a paginação, o layout e o estilo a serem aplicados a um conteúdo

A marcação XSL-FO é um pouco complexa e verbosa 56 elementos e mais de 200 atributos

A maneira prática de produzir arquivos XSL-FO é usar o XSLT para produzir um documento fonte, para ser então renderizado em um meio de saída, poucas ferramentas fazem isto

Portanto XSL-FO não se popularizou tão rapidamente quanto XSLT

Definição

Page 30: Aplicando Transformação em XML usando XSLT e XSL-FO - 3

Motivação CSS também formata a apresentação de

documentos XSL-FO é mais completo Permite formatar como livro, website, etc Inclui todos os estilos CSS2 para áudio Direciona textos Configura margens, rodapés e cabeçalhos Controla a separação de sílabas Sua aplicação é mais ampla que a Web

Page 31: Aplicando Transformação em XML usando XSLT e XSL-FO - 3

Definição O vocabulário FO descreve como a

apresentação aparecerá para o leitor Arquivos com os documentos têm

extensão .fo ou .fob ou .xml Existem 56 elementos FO, 99% iniciados por

fo Os elementos FO variam conforme sua

apresentação fo:list-item-label (marcador) fo:list-item-body (contém o texto do item)

Page 32: Aplicando Transformação em XML usando XSLT e XSL-FO - 3

Definição 4 áreas FO principais:

regiões: nível mais alto da hierarquia, contém cabeçalho, texto e rodapé, ex: fo:region-body e fo:region-after

blocos: representam um bloco de texto como um parágrafo, fo:block e fo:list-block

linhas: linha de texto dentro de um parágrafo entre-linhas: partes de linha como caracteres,

referência a rodapés ou equação matemática, ex: fo:external-graphics e fo:inline

Page 33: Aplicando Transformação em XML usando XSLT e XSL-FO - 3

Hierarquia

Page Regions

• Block areas• Line areas

• Inline areas

Page 34: Aplicando Transformação em XML usando XSLT e XSL-FO - 3

Hierarquia

Page 35: Aplicando Transformação em XML usando XSLT e XSL-FO - 3

Processamento necessário O processador XSLT recebe o documento XML e

seu stylesheet apropriado, desenvolvido para produzir outro documento XML que usa o namespace XSL-FO e é esperado pelo formatador XSL-FO

O documento resultante alimenta o formatador XSL-FO que produz então o produto final: um documento impresso, formatado para apresentação visual

Page 36: Aplicando Transformação em XML usando XSLT e XSL-FO - 3

Estrutura do Documento XSL-FO

Page 37: Aplicando Transformação em XML usando XSLT e XSL-FO - 3

Documento XSL-FO Para o layout do conteúdo, [3] layout-master-set especifica o

tamanho da página (simple-page-master [4]). O elemento region-body corresponde à parte principal do layout da página

[8] Para suporte à paginação complexa, o elemento page-sequence é usado. Para um layout simples de página, é necessária apenas uma definição particular de página (simple-page-master)

O elemento no page-sequence é o flow [9] que se refere à distribuição do conteúdo pelas áreas da página.

No xsl-region-body está identificada em qual região da página o texto flui. Ele diferencia o corpo da página das outras áreas (margens, cabeçalho, rodapé). O conteúdo [10], não pode ser inserido como texto simples, pois o formatador teria que adivinhar o que fazer com ele, então o conteúdo está em <fo:block>Content</fo:block> que define um bloco de texto na página

Page 38: Aplicando Transformação em XML usando XSLT e XSL-FO - 3

Stylesheet XSLT para XSL-FO

2) namespaces4) o documento de saída deve ser um XML válido5) o template raiz (esboço essencial do conteúdo)

5

Page 39: Aplicando Transformação em XML usando XSLT e XSL-FO - 3

Detalhando a estrutura Temos então um stylesheet XSLT

completo, usado pelo processador XSLT para produzir um documento XSL-FO válido

Page 40: Aplicando Transformação em XML usando XSLT e XSL-FO - 3

8) o tamanho da página é especificado em fo:simple-page-master (A4, letter)

e

11) define a margem superior

Page 41: Aplicando Transformação em XML usando XSLT e XSL-FO - 3

16) no XSLT há instrução para processar o documento de entrada

21) o processador XSLT processa o documento do arquivo de entrada XML resultando em um elemento fo:block no qual todo o conteúdo é inserido

Page 42: Aplicando Transformação em XML usando XSLT e XSL-FO - 3

26) combina o elemento do documento fonte resultando em um elemento apropriado do vocabulário XSL-FO

31) idem36) objeto de formatação inline: produz saída em itálico

Elementos Inline :contêiner com propriedades usadas para formatar o conteúdo

Page 43: Aplicando Transformação em XML usando XSLT e XSL-FO - 3

41) trata todos os elementos sem estilo definido, se a todos os elementos for aplicado um estilo, nada será processado, bom pra debug

Page 44: Aplicando Transformação em XML usando XSLT e XSL-FO - 3

Conteúdo para o documento XML

Page 45: Aplicando Transformação em XML usando XSLT e XSL-FO - 3

Aplicando propriedades ao bloco

O processador XSL-FO cria uma nova página quando encontra uma seção. Todo o conteúdo da página é processado dentro do bloco. Para destacar o cabeçalho pode-se aplicar uma fonte maior, negrito e adicionar espaço em branco após o conteúdo.

Page 46: Aplicando Transformação em XML usando XSLT e XSL-FO - 3

Conclusão O processamento tem 2 partes: dado o

documento fonte XML mais o stylesheet XSTL para um processador XSLT a saída deve ser um documento XSL-FO válido

Isto irá para o processador XSL-FO RenderX e Antenna House são comerciais

e com versão trial PassiveTeX ou FOP são gratuitos

P

Page 47: Aplicando Transformação em XML usando XSLT e XSL-FO - 3

Referências[XSL-FO, 2001] Using XSL Formatting Objects. Disponível em: http

://www.xml.com/pub/a/2001/01/17/xsl-fo/index.html [RenderX, 2005] RenderX. Disponível em: http://www.renderx.com/ [FO, 2001] Disponível em:

http://www.xml.com/pub/a/2001/01/24/xsl-fo/index.html ?page=1 [FO, 2002] Printing from XML: An Introduction to XSL-FO.

Disponível em: http://www.xml.com/pub/a/2002/10/09/xslfo.html Acesso em: 03/2009.

[FO, 2009] Tutorial da W3C sobre XSL-FO. Disponível em http://www.w3schools.com/xslfo/ Acesso em: 03/2009.