aplicando transformação em xml usando xslt e xsl-fo - 3
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](https://reader033.vdocuments.site/reader033/viewer/2022052315/5496d18fac7959482e8b5137/html5/thumbnails/1.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052315/5496d18fac7959482e8b5137/html5/thumbnails/2.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052315/5496d18fac7959482e8b5137/html5/thumbnails/3.jpg)
Sumário CSS XSLT XSL-FO
Introdução Definição
![Page 4: Aplicando Transformação em XML usando XSLT e XSL-FO - 3](https://reader033.vdocuments.site/reader033/viewer/2022052315/5496d18fac7959482e8b5137/html5/thumbnails/4.jpg)
CSS
CascadingStylesheets
![Page 5: Aplicando Transformação em XML usando XSLT e XSL-FO - 3](https://reader033.vdocuments.site/reader033/viewer/2022052315/5496d18fac7959482e8b5137/html5/thumbnails/5.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052315/5496d18fac7959482e8b5137/html5/thumbnails/6.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052315/5496d18fac7959482e8b5137/html5/thumbnails/7.jpg)
XSLT
Extensible Stylesheet LanguageForTransformations
![Page 8: Aplicando Transformação em XML usando XSLT e XSL-FO - 3](https://reader033.vdocuments.site/reader033/viewer/2022052315/5496d18fac7959482e8b5137/html5/thumbnails/8.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052315/5496d18fac7959482e8b5137/html5/thumbnails/9.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052315/5496d18fac7959482e8b5137/html5/thumbnails/10.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052315/5496d18fac7959482e8b5137/html5/thumbnails/11.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052315/5496d18fac7959482e8b5137/html5/thumbnails/12.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052315/5496d18fac7959482e8b5137/html5/thumbnails/13.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052315/5496d18fac7959482e8b5137/html5/thumbnails/14.jpg)
<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](https://reader033.vdocuments.site/reader033/viewer/2022052315/5496d18fac7959482e8b5137/html5/thumbnails/15.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052315/5496d18fac7959482e8b5137/html5/thumbnails/16.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052315/5496d18fac7959482e8b5137/html5/thumbnails/17.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052315/5496d18fac7959482e8b5137/html5/thumbnails/18.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052315/5496d18fac7959482e8b5137/html5/thumbnails/19.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052315/5496d18fac7959482e8b5137/html5/thumbnails/20.jpg)
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• < menor que • > maior que
![Page 21: Aplicando Transformação em XML usando XSLT e XSL-FO - 3](https://reader033.vdocuments.site/reader033/viewer/2022052315/5496d18fac7959482e8b5137/html5/thumbnails/21.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052315/5496d18fac7959482e8b5137/html5/thumbnails/22.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052315/5496d18fac7959482e8b5137/html5/thumbnails/23.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052315/5496d18fac7959482e8b5137/html5/thumbnails/24.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052315/5496d18fac7959482e8b5137/html5/thumbnails/25.jpg)
XSL-FO
Extensible Stylesheet Language – Formatting Objects
![Page 26: Aplicando Transformação em XML usando XSLT e XSL-FO - 3](https://reader033.vdocuments.site/reader033/viewer/2022052315/5496d18fac7959482e8b5137/html5/thumbnails/26.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052315/5496d18fac7959482e8b5137/html5/thumbnails/27.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052315/5496d18fac7959482e8b5137/html5/thumbnails/28.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052315/5496d18fac7959482e8b5137/html5/thumbnails/29.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052315/5496d18fac7959482e8b5137/html5/thumbnails/30.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052315/5496d18fac7959482e8b5137/html5/thumbnails/31.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052315/5496d18fac7959482e8b5137/html5/thumbnails/32.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052315/5496d18fac7959482e8b5137/html5/thumbnails/33.jpg)
Hierarquia
Page Regions
• Block areas• Line areas
• Inline areas
![Page 34: Aplicando Transformação em XML usando XSLT e XSL-FO - 3](https://reader033.vdocuments.site/reader033/viewer/2022052315/5496d18fac7959482e8b5137/html5/thumbnails/34.jpg)
Hierarquia
![Page 35: Aplicando Transformação em XML usando XSLT e XSL-FO - 3](https://reader033.vdocuments.site/reader033/viewer/2022052315/5496d18fac7959482e8b5137/html5/thumbnails/35.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052315/5496d18fac7959482e8b5137/html5/thumbnails/36.jpg)
Estrutura do Documento XSL-FO
![Page 37: Aplicando Transformação em XML usando XSLT e XSL-FO - 3](https://reader033.vdocuments.site/reader033/viewer/2022052315/5496d18fac7959482e8b5137/html5/thumbnails/37.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052315/5496d18fac7959482e8b5137/html5/thumbnails/38.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052315/5496d18fac7959482e8b5137/html5/thumbnails/39.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052315/5496d18fac7959482e8b5137/html5/thumbnails/40.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052315/5496d18fac7959482e8b5137/html5/thumbnails/41.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052315/5496d18fac7959482e8b5137/html5/thumbnails/42.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052315/5496d18fac7959482e8b5137/html5/thumbnails/43.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052315/5496d18fac7959482e8b5137/html5/thumbnails/44.jpg)
Conteúdo para o documento XML
![Page 45: Aplicando Transformação em XML usando XSLT e XSL-FO - 3](https://reader033.vdocuments.site/reader033/viewer/2022052315/5496d18fac7959482e8b5137/html5/thumbnails/45.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052315/5496d18fac7959482e8b5137/html5/thumbnails/46.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052315/5496d18fac7959482e8b5137/html5/thumbnails/47.jpg)
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.