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
 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)
XSL-FO: Sumário
 Definição
 XSL-FO x CSS
 Vocabulário
 Ferramenta
 Exemplos
 Referências
FOP
 Aplicação Java de código aberto
 Provê vários formatos de saída: PDF,
PostScript, SVG...
 Lê FOs e os renderiza
 A área delimitada por fo:root é
renderizada pelo FOP
Processamento FOP
Arquivo XSL-FO
 Instrução padrão de processamento
de XML
<?xml version="1.0" encoding="utf-8"?>
<fo:root>
 Conjunto principal do layout
 descrição dos tipos de páginas
 sequências nas quais estes formatos de
páginas podem ocorrer
 As páginas e seus conteúdos
Layout das Páginas
Quais tipos de páginas
o documento pode ter?
3 exemplos
capa esquerda direita
Especificar:

altura

largura

margens
Layout das Páginas (I)
Layout das Páginas (II)
Layout das Páginas (III)
Resultado
Layout das Páginas
Unidades

px

pt

mm

cm

em

in
Especificação

simple-page-master
Referência

master-name
Margens

Regiões sem saída impressa
Áreas de conteúdo da página
Layout das Páginas
Direções
FO considera que uma página é composta por 2 elementos:

Elementos Block: parágrafos que começam em uma nova
linha

Elementos Inline: negrito, itálico
Block progress direction

Ordem na qual os parágrafos se posicionam na página
Independente de linguagem
Layout das Páginas
Estrutura FO

fo:root tem um fo:layout-master-set e um fo:page-
sequence

fo:layout-master-set tem fo:simple-page-master

fo:simple-page-master descreve o layout da página

master-name define o nome do layout

fo:page-sequence tem fo:flow e indica como
colocar conteúdo em um master page

master-reference indica a master page a ser
utilizada

fo:flow tem elementos fo:block (neste exemplo),
que indicam conteúdo a ser colocado na página
Layout das Páginas
 As margens do region-body devem ser
maiores ou iguais aos extents do region-
before e region-after para evitar
sobreposições do tipo:
Page Sequences
 Especificar a ordem de uso dos tipos de páginas
 Dois tipos
 Capa
 Conteúdo: alternância esquerda, direita
Page Sequences
 Documentos sem ser frente-e-verso com
restrição de páginas
 Capa
 Conteúdo: alternância esquerda, direita
 Atributo maximum-repeats também pode ser
aplicado em repeatable-page-master-alternatives
 Função: limitar o número de páginas geradas
pela sequência
Capa
 Especificar
 qual sequência de páginas será usada
 em qual região a informação deve estar
Capa
40) Especifica a sequência de páginas para o
conteúdo
41) O conteúdo seguinte vai para a área xsl-
region-body da página
42-44) Este conteúdo vai em uma nova linha
conforme especificações
45-48) Outro bloco para a mensagem de
copyright (com fonte diferente e space-after)
49) Outro bloco: informação da publicação
52-53) Fim do conteúdo desta página
Gerando o PDF
 Para renderizar a página para impressão
 Download do software da Apache FOP
(Formatting Objects Processor)
 Formatador para XSL-FO, aplicação Java que
renderiza a página gerando a saída
especificada
http://xmlgraphics.apache.org/fop
/
Gerando o PDF
 Saídas
 PDF, PS, XML, PNG, RTF, SVG, AWT, MIF,
TXT
 Vantagem do XSL-FO
• a entrada é um arquivo XML que pode ser criado
de várias fontes
 Método mais comum
 Converter XML semântico para XSL-FO
usando XSLT
Requisitos
 Java 1.1x
 Parser XML que suporte SAX ou DOM
 Parser XSLT
 Biblioteca SVG (do arquivo w3c.jar do FOP)
 Script
 Fop livro.fo livro.pdf
 Produz o arquivo PDF
 Visualizador de PDF
Adicionando Gráficos
 O comando external-graphic tem o
atributo src com a URI da imagem
Adicionando Linha e Paginação
 O objeto leader tem o
atributo leader-pattern e
leader-length com o tipo e o
tamanho
 O objeto page-number
exibe o número de página
Adicionando texto em bloco
 O objeto block tem os
atributos font-size e font-family
com o tamanho e a fonte, text-
align com o alinhamento do
texto e line-heigth e space-
after.optimum
Adicionando lista de itens
Listas
XSL-FO List Blocks
 Quatro elementos
 fo:list-block (contém a lista toda)
 fo:list-item (contém cada item da lista)
 fo:list-item-label (contém o rótulo para o
item da lista – em geral um <fo:block>
com número ou caractere)
 fo:list-item-body (com o conteúdo do item
da lista – em geral um ou mais objetos
<fo:block>)
Adicionando bordas ao bloco
 O objeto fo-block tem
os atributos para
configuração da borda
Adicionando link e cor ao fundo
 O objeto fo-block
tem os atributos para
cor de fundo e
fo:basic-link para
links
Adicionando tabela
Tabelas: fo:table-and-caption
Nove objetos do XSL-FO são usados para criar
tabelas:
 fo:table-and-caption
 fo:table
 fo:table-caption
 fo:table-column *
 fo:table-header *
 fo:table-footer *
 fo:table-body *
 fo:table-row
 fo:table-cell
* elementos opcionais
Adicionando nota de rodapé
Adicionando coluna dupla
Formatting Objects
fo:basic-link
fo:bidi-override
fo:block
fo:block-container
fo:character
fo:color-profile
fo:conditional-page-master-reference
fo:declarations
fo:external-graphic
fo:float
fo:flow
fo:footnote
fo:footnote-body
fo:initial-property-set
fo:inline
fo:inline-container
fo:instream-foreign-object
fo:layout-master-set
fo:leader
fo:list-block
fo:list-item
fo:list-item-body
fo:list-item-label
fo:marker
fo:multi-case
fo:multi-properties
fo:multi-property-set
fo:multi-switch
fo:multi-toggle
fo:page-number
fo:page-number-citation
fo:page-sequence
fo:page-sequence-master
fo:region-after
fo:region-before
fo:region-body
fo:region-end
fo:region-start
fo:repeatable-page-master-alternatives
fo:repeatable-page-master-reference
fo:retrieve-marker
fo:root
fo:simple-page-master
fo:single-page-master-reference
fo:static-content
fo:table
fo:table-and-caption
fo:table-body
fo:table-caption
fo:table-cell
fo:table-column
fo:table-footer
fo:table-header
fo:table-row
fo:title
fo:wrapper
Considerações Importantes
 XSL-FO
 Especifica o layout de apresentação de
um documento XML
 Permite diferentes formatos de saída
 Diferenciais
 Configurar direção do texto
 Especificar modelos de layout
Considerações Finais
 XML é uma linguagem relativamente
simples
 Permite intercâmbio de dados entre
diferentes plataformas e tecnologias
 XSL-FO é um recurso para
estruturas a apresentação e gerar
aplicações XML
Referências
[AH, 1996] Antenna House. Disponível em: http://www.
antennahouse.com/
[DOM, 2005] Especificação W3C do XML DOM. Disponível
em: http://www.w3.org/DOM/
[DOM, 2009] Tutorial sobre XML DOM. Disponível em: http://
www.w3schools.com/dom/default.asp
[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
Referências
[FO, 2009] Tutorial da W3C sobre XSL-FO. Disponível em
http://www.w3schools.com/xslfo/
[FOP, 2009] Processador de FO. Disponível em: http://
xmlgraphics.apache.org/fop/
[FO W3C, 2000] Formatting Objects W3C Candidate
Recommendation. Disponível em:
http://www.w3.org/TR/2000/CR-xsl-20001121/slice6.html#fo-
section
[Goldfarb and Prescod, 1998] Goldfarb, C. and Prescod P. The
XML handbook. Prentice Hall. 1998.
[Namespaces, 2006] Namespaces in XML 1.0. Disponível em:
http://www.w3.org/TR/xml-names/
Referências
[PT, 1999] Passive Tex. Disponível em: http://www.ibiblio.org/
bosak/conf/xmldev99/rahtz/passivetex.html
[Pitts-Moultis and Kirk, 2000] Pitts-Moultis, N. and Kirk, C.
XML Black Book. Makron Books. 2000.
[RenderX, 2005] RenderX. Disponível em: http://www.renderx
.com/
[SAX, 2000] Projeto SAX. Disponível em: http://www.
saxproject.org/
[Schema, 2001] XML Schema. Disponível em:
http://www.w3.org/XML/Schema
Referências
[Schema, 2001] Tutorial sobre XML Schema. Disponível em:
http://www.w3schools.com/schema/
[SMIL, 1998] SMIL (Standard Multimedia Integration
Language), disponível em: http://www.w3.org
/TR/1998/TR/1998/PR-smil-19980409/
[Spencer, 1999] Spencer, P. XML Design and Implementation.
Wrox Press Ltda. 1999.
[XML, 2009] Tutorial sobre XML da W3C. Disponível em:
http://www.w3schools.com/xml/
[XPath, 1999] Definição de XPath disponível em: http
://www.w3.org/TR/xpath
Referências
[XPath, 2009] Tutorial sobre XPath disponível em: http
://www.w3schools.com/xpath/
[XSL, 2009] Tutorial sobre XSL da W3C. Disponível em:http
://www.w3schools.com/Xsl/xsl_languages.asp
[XSL-FO, 2001] Using XSL Formatting Objects. Disponível em:
http://www.xml.com/pub/a/2001/01/17/xsl-fo/index.html
[XSL W3C, 2009] Definição de XSL disponível em: http
://www.w3.org/Style/XSL/
[XSLT, 2009] Tutorial da W3C sobre XSLT. Disponível em:
http://www.w3schools.com/xsl/
Referências
http://www.xml.com/pub/a/2002/10/09/xslfo.html
http://www.xml.com/pub/a/2001/01/24/xsl-
fo/index.html ?page=1
http://www.w3schools.com/xslfo/xslfo_intro.asp
http://xmlgraphics.apache.org/fop/
http://www.w3.org/TR/2000/CR-
xsl-20001121/slice6.html#fo-section

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