47
XSL - eXtemsible Stylesheet Language Prof. Antonio Almeida de Barros Jr.

XSL - eXtemsible Stylesheet Languagefiles.antoniojr.webnode.com.br/200000115-62a16639bb/WEB-Aula07-XSL.pdf · • Primeira proposta formal em 1997 pela W3C (já ... XSL-FO é uma

  • Upload
    doanbao

  • View
    216

  • Download
    0

Embed Size (px)

Citation preview

Page 1: XSL - eXtemsible Stylesheet Languagefiles.antoniojr.webnode.com.br/200000115-62a16639bb/WEB-Aula07-XSL.pdf · • Primeira proposta formal em 1997 pela W3C (já ... XSL-FO é uma

XSL - eXtemsibleStylesheet LanguageProf. Antonio Almeida de Barros Jr.

Page 2: XSL - eXtemsible Stylesheet Languagefiles.antoniojr.webnode.com.br/200000115-62a16639bb/WEB-Aula07-XSL.pdf · • Primeira proposta formal em 1997 pela W3C (já ... XSL-FO é uma

Agenda

2

• Conceitos

• XSLT - XSL Transformations

• Iteração e Classificação

• Processamento Condicional

• Copiando Nodos

• Variáveis

• Estude de Caso: XSLT e Xpath

• Práticas

• XSL-FO

• Conceitos

Page 3: XSL - eXtemsible Stylesheet Languagefiles.antoniojr.webnode.com.br/200000115-62a16639bb/WEB-Aula07-XSL.pdf · • Primeira proposta formal em 1997 pela W3C (já ... XSL-FO é uma

XSL - Conceitos

3

• XML derivada de SGML;

• Padronizada pelo W3C;

• XSL derivada de DSSSL (Document Style Semantics and

Specification Language);

• Primeira proposta formal em 1997 pela W3C (jácontinha conceitos de XSLT, como uso de templates)

• Novembro de 1999 XSLT tornou-se umarecomendação da W3C;

• XSL-FO Vr. 1.1: Dezembro de 2006;

Page 4: XSL - eXtemsible Stylesheet Languagefiles.antoniojr.webnode.com.br/200000115-62a16639bb/WEB-Aula07-XSL.pdf · • Primeira proposta formal em 1997 pela W3C (já ... XSL-FO é uma

XSL - Conceitos

4

• Utiliza-se a Extensible StyleSheet Language (XSL) para formatar documentos XML;

• A XSL é dividida em duas partes:

1. XSL Transformation Language (XSLT)• Utiliza-se a XSLT para mudar a forma de um

documento XML;

• Utiliza X-Path para identificar nodos;

2. XSL-FO é uma linguagem para descrever folhas de estilo para documentos XML • Fornece uma alternativa às CSS para formatar um

documento de XML;

Page 5: XSL - eXtemsible Stylesheet Languagefiles.antoniojr.webnode.com.br/200000115-62a16639bb/WEB-Aula07-XSL.pdf · • Primeira proposta formal em 1997 pela W3C (já ... XSL-FO é uma

XSL TransformationLanguage (XSLT)Prof. Antonio Almeida de Barros Jr.

Page 6: XSL - eXtemsible Stylesheet Languagefiles.antoniojr.webnode.com.br/200000115-62a16639bb/WEB-Aula07-XSL.pdf · • Primeira proposta formal em 1997 pela W3C (já ... XSL-FO é uma

XSLT - XSL Transformation Language

6

• XSL usa XSLT para transformar uma árvore XML em outra;

• XSLT permite:

• transformar XML em XHTML;

• filtrar e ordenar componentes de XML;

• formatar um componente de XML com base no seu valor;

• formatar XML para exibição na tela, impressão ou saída em áudio;

Page 7: XSL - eXtemsible Stylesheet Languagefiles.antoniojr.webnode.com.br/200000115-62a16639bb/WEB-Aula07-XSL.pdf · • Primeira proposta formal em 1997 pela W3C (já ... XSL-FO é uma

XSLT - XSL Transformation Language

7

• O documento XSLT é um documento XML com um elemento raiz stylesheet;

• Em uma transformação XSL, há duas árvores de nodos:

• Árvore de origem• Os nodos nessa árvore correspondem ao documento

XML original ao qual a transformação é aplicada.

• Árvore de resultados• Contém todos os nodos produzidos pela transformação

XSL;

• Apresenta o documento produzido pela transformação.

Page 8: XSL - eXtemsible Stylesheet Languagefiles.antoniojr.webnode.com.br/200000115-62a16639bb/WEB-Aula07-XSL.pdf · • Primeira proposta formal em 1997 pela W3C (já ... XSL-FO é uma

XSLT - XSL Transformation Language

8

• Template simples

Apresenta o elemento raiz do documento XSLT (isto é, xsl:stylesheet) e seus atributos.

Page 9: XSL - eXtemsible Stylesheet Languagefiles.antoniojr.webnode.com.br/200000115-62a16639bb/WEB-Aula07-XSL.pdf · • Primeira proposta formal em 1997 pela W3C (já ... XSL-FO é uma

XSLT - XSL Transformation Language

9

• Template simples

Este elemento identifica nodos específicos do documento XML utilizando uma expressão Xpath

no atributo match.

Page 10: XSL - eXtemsible Stylesheet Languagefiles.antoniojr.webnode.com.br/200000115-62a16639bb/WEB-Aula07-XSL.pdf · • Primeira proposta formal em 1997 pela W3C (já ... XSL-FO é uma

XSLT - XSL Transformation Language

10

• Template simples

Quando um nodo do elemento myMessage é identificado na árvore de origem, o conteúdo do

elemento template é colocado na árvore de resultado.

Page 11: XSL - eXtemsible Stylesheet Languagefiles.antoniojr.webnode.com.br/200000115-62a16639bb/WEB-Aula07-XSL.pdf · • Primeira proposta formal em 1997 pela W3C (já ... XSL-FO é uma

XSLT - XSL Transformation Language

11

• Template simples

Utilizando o elemento value-of e uma expressão XPath no atributo select, o conteúdo do conjunto

de nodos retornado pela expressão XPath é colocado na árvore de resultado.

Page 12: XSL - eXtemsible Stylesheet Languagefiles.antoniojr.webnode.com.br/200000115-62a16639bb/WEB-Aula07-XSL.pdf · • Primeira proposta formal em 1997 pela W3C (já ... XSL-FO é uma

XSLT - XSL Transformation Language

12

• Template simples

Utilizando o elemento value-of e uma expressão XPath no atributo select, o conteúdo do conjunto

de nodos retornado pela expressão XPath é colocado na árvore de resultado.

Page 13: XSL - eXtemsible Stylesheet Languagefiles.antoniojr.webnode.com.br/200000115-62a16639bb/WEB-Aula07-XSL.pdf · • Primeira proposta formal em 1997 pela W3C (já ... XSL-FO é uma

XSLT - XSL Transformation Language

13

• Template simples• Documento XML de entrada

Uso do stylesheet para anexar uma folha de estilo a um documento XML. O atributo type define o

tipo de arquivo que está sendo anexado.

Page 14: XSL - eXtemsible Stylesheet Languagefiles.antoniojr.webnode.com.br/200000115-62a16639bb/WEB-Aula07-XSL.pdf · • Primeira proposta formal em 1997 pela W3C (já ... XSL-FO é uma

XSLT - XSL Transformation Language

14

• Template simples• Documento XML de entrada

Page 15: XSL - eXtemsible Stylesheet Languagefiles.antoniojr.webnode.com.br/200000115-62a16639bb/WEB-Aula07-XSL.pdf · • Primeira proposta formal em 1997 pela W3C (já ... XSL-FO é uma

XSLT - XSL Transformation Language

15

• Iteração e Classificação Exemplo 02

Page 16: XSL - eXtemsible Stylesheet Languagefiles.antoniojr.webnode.com.br/200000115-62a16639bb/WEB-Aula07-XSL.pdf · • Primeira proposta formal em 1997 pela W3C (já ... XSL-FO é uma

XSLT - XSL Transformation Language

16

• Iteração e Classificação Exemplo 02

Template XSLT que corresponde ao elemento book.

Page 17: XSL - eXtemsible Stylesheet Languagefiles.antoniojr.webnode.com.br/200000115-62a16639bb/WEB-Aula07-XSL.pdf · • Primeira proposta formal em 1997 pela W3C (já ... XSL-FO é uma

XSLT - XSL Transformation Language

17

• Iteração e Classificação Exemplo 02

Cria o título para o documento HTML. Foi utilizado o ISBN do livro a partir do atributo isbn e também o conteúdo do elemento title para criar

o string de título.

Page 18: XSL - eXtemsible Stylesheet Languagefiles.antoniojr.webnode.com.br/200000115-62a16639bb/WEB-Aula07-XSL.pdf · • Primeira proposta formal em 1997 pela W3C (já ... XSL-FO é uma

XSLT - XSL Transformation Language

18

• Iteração e Classificação Exemplo 02

Cria o um elemento header (cabeçalho) com o título do livro, selecionado a partir do elemento

title.

Page 19: XSL - eXtemsible Stylesheet Languagefiles.antoniojr.webnode.com.br/200000115-62a16639bb/WEB-Aula07-XSL.pdf · • Primeira proposta formal em 1997 pela W3C (já ... XSL-FO é uma

XSLT - XSL Transformation Language

19

• Iteração e Classificação Exemplo 02

Cria outro elemento header, exibindo o autor do livro. Utiliza-se a expressão Xpath

author/lastName para selecionar o sobrenome do autor.

Page 20: XSL - eXtemsible Stylesheet Languagefiles.antoniojr.webnode.com.br/200000115-62a16639bb/WEB-Aula07-XSL.pdf · • Primeira proposta formal em 1997 pela W3C (já ... XSL-FO é uma

XSLT - XSL Transformation Language

20

• Iteração e Classificação Exemplo 02

Mostra o elemento for-each de XSLT, que aplica o conteúdo do elemento a cada um dos nodos

selecionados pelo atributo select. Neste caso, foram selecionados todos os

elementos preface do elemento chapters.

Page 21: XSL - eXtemsible Stylesheet Languagefiles.antoniojr.webnode.com.br/200000115-62a16639bb/WEB-Aula07-XSL.pdf · • Primeira proposta formal em 1997 pela W3C (já ... XSL-FO é uma

XSLT - XSL Transformation Language

21

• Iteração e Classificação Exemplo 02

O elemento sort de XSLT, classifica os nodos selecionados pelo elemento for-each pelo campo

no atributo select, na ordem especificada no atributo order.

Page 22: XSL - eXtemsible Stylesheet Languagefiles.antoniojr.webnode.com.br/200000115-62a16639bb/WEB-Aula07-XSL.pdf · • Primeira proposta formal em 1997 pela W3C (já ... XSL-FO é uma

XSLT - XSL Transformation Language

22

• Processamento Condicional Exemplo 03

Mostra um condicional when do elemento choose. O atributo test fornece a instrução condicional a ser testada. Neste elemento,

testamos se o atributo time do elemento notetem um valor maior que 500 e menor que 1200.

Page 23: XSL - eXtemsible Stylesheet Languagefiles.antoniojr.webnode.com.br/200000115-62a16639bb/WEB-Aula07-XSL.pdf · • Primeira proposta formal em 1997 pela W3C (já ... XSL-FO é uma

XSLT - XSL Transformation Language

23

• Processamento Condicional Exemplo 03

O elemento otherwise é opcional, mas, se incluído, deve aparecer somente uma vez, depois

de todos os elementos when. Esse elemento é utilizado se nenhum elemento wen for

correspondido.

Page 24: XSL - eXtemsible Stylesheet Languagefiles.antoniojr.webnode.com.br/200000115-62a16639bb/WEB-Aula07-XSL.pdf · • Primeira proposta formal em 1997 pela W3C (já ... XSL-FO é uma

XSLT - XSL Transformation Language

24

• Processamento Condicional Exemplo 03

Diferente do elemento choose, utiliza-se o elemento if para fornecer um único teste

condicional, no atributo test.

Page 25: XSL - eXtemsible Stylesheet Languagefiles.antoniojr.webnode.com.br/200000115-62a16639bb/WEB-Aula07-XSL.pdf · • Primeira proposta formal em 1997 pela W3C (já ... XSL-FO é uma

XSLT - XSL Transformation Language

25

• Copiando nodos Exemplo 04

O elemento copy produz uma duplicata do nodo de contexto na árvore de resultado.

Page 26: XSL - eXtemsible Stylesheet Languagefiles.antoniojr.webnode.com.br/200000115-62a16639bb/WEB-Aula07-XSL.pdf · • Primeira proposta formal em 1997 pela W3C (já ... XSL-FO é uma

XSLT - XSL Transformation Language

26

• Copiando nodos Exemplo 04

Diferente do elemento copy, o elemento copy-ofduplica todos os filhos (Isto é, texto, instruções de processamento, comentários etc) e atributos do

nodo.

Page 27: XSL - eXtemsible Stylesheet Languagefiles.antoniojr.webnode.com.br/200000115-62a16639bb/WEB-Aula07-XSL.pdf · • Primeira proposta formal em 1997 pela W3C (já ... XSL-FO é uma

XSLT - XSL Transformation Language

27

• Variáveis Exemplo 05

Cria o elemento variable com o atributo name de sum, para armazenar a soma do número de

páginas no livro.

Page 28: XSL - eXtemsible Stylesheet Languagefiles.antoniojr.webnode.com.br/200000115-62a16639bb/WEB-Aula07-XSL.pdf · • Primeira proposta formal em 1997 pela W3C (já ... XSL-FO é uma

XSLT - XSL Transformation Language

28

• Variáveis Exemplo 05

O elemento value-of envia para a saída a variável sum que usa o sinal de cifrão ($) para fazer

referência à variável.

Page 29: XSL - eXtemsible Stylesheet Languagefiles.antoniojr.webnode.com.br/200000115-62a16639bb/WEB-Aula07-XSL.pdf · • Primeira proposta formal em 1997 pela W3C (já ... XSL-FO é uma

XSLT - XSL Transformation Language

29

• Estudo de caso: XSLT e XPath Exemplo 06

O caminho de localização /product seleciona todos os product filhos do nodo raiz.

Page 30: XSL - eXtemsible Stylesheet Languagefiles.antoniojr.webnode.com.br/200000115-62a16639bb/WEB-Aula07-XSL.pdf · • Primeira proposta formal em 1997 pela W3C (já ... XSL-FO é uma

XSLT - XSL Transformation Language

30

• Estudo de caso: XSLT e XPath Exemplo 06

Este elemento contém o caminho de localização completeTrainingCourses//node() em seu

atributo select. O caminho de localização seleciona o conjunto de

todos os nodos que são descendentes dos elementos completeTrainingCourses,

Page 31: XSL - eXtemsible Stylesheet Languagefiles.antoniojr.webnode.com.br/200000115-62a16639bb/WEB-Aula07-XSL.pdf · • Primeira proposta formal em 1997 pela W3C (já ... XSL-FO é uma

XSLT - XSL Transformation Language

31

• Estudo de caso: XSLT e XPath Exemplo 06

O elemento xsl:value-of com o caminho de localização recuperam o nodo pai de qualquer nodo no documento XML cujo valor de string é

igual ao string “C How to Program”.

Page 32: XSL - eXtemsible Stylesheet Languagefiles.antoniojr.webnode.com.br/200000115-62a16639bb/WEB-Aula07-XSL.pdf · • Primeira proposta formal em 1997 pela W3C (já ... XSL-FO é uma

XSLT - XSL Transformation Language

32

• Estudo de caso: XSLT e XPath Exemplo 06

Seleciona o nodo de elemento title do segundo elemento completeTrainingCourse no documento

e adiciona seu valor de string ao documento HTML.

Page 33: XSL - eXtemsible Stylesheet Languagefiles.antoniojr.webnode.com.br/200000115-62a16639bb/WEB-Aula07-XSL.pdf · • Primeira proposta formal em 1997 pela W3C (já ... XSL-FO é uma

XSLT - XSL Transformation Language

33

• Estudo de caso: XSLT e XPath Exemplo 06

Verifica se o elemento product é antepassado do nodo cujo valor de string é XML How to Program.

Page 34: XSL - eXtemsible Stylesheet Languagefiles.antoniojr.webnode.com.br/200000115-62a16639bb/WEB-Aula07-XSL.pdf · • Primeira proposta formal em 1997 pela W3C (já ... XSL-FO é uma

XSLT - XSL Transformation Language

34

• Estudo de caso: XSLT e XPath Exemplo 06

Neste exemplo, foi utilizado o caminho de localização para adicionar o valor de string do

elemento subject.1º. Seleciona o elemento subject com o valor de

string Programming COM+ with Visual Basic.2º. Utiliza o eixo preceding-sibling para selecionar

o elemento subject do primeiro irmão que é o eixo inverso, assim os nodos que ele seleciona

estão na ordem inversa do documento.

Page 35: XSL - eXtemsible Stylesheet Languagefiles.antoniojr.webnode.com.br/200000115-62a16639bb/WEB-Aula07-XSL.pdf · • Primeira proposta formal em 1997 pela W3C (já ... XSL-FO é uma

XSLT - XSL Transformation Language

35

• Estudo de caso: XSLT e XPath Exemplo 06

1º. Seleciona o nodo do elemento subject cujo valor de string é Introduction to Java

programming.

2º. Seleciona o primeiro elemento subject na ordem do documento no eixo following-sibling.

Page 36: XSL - eXtemsible Stylesheet Languagefiles.antoniojr.webnode.com.br/200000115-62a16639bb/WEB-Aula07-XSL.pdf · • Primeira proposta formal em 1997 pela W3C (já ... XSL-FO é uma

XSL – Práticas

36

• Prática 01

• Exemplo “Oi Mundo”: arquivo oi.xml

<?xml version="1.0"?>

<?xml-stylesheet href="oi.xsl" type="text/xsl" ?>

<oi>

Olá todos.

</oi>

Page 37: XSL - eXtemsible Stylesheet Languagefiles.antoniojr.webnode.com.br/200000115-62a16639bb/WEB-Aula07-XSL.pdf · • Primeira proposta formal em 1997 pela W3C (já ... XSL-FO é uma

XSL - Conceitos

37

• Prática 01

• Exemplo “Oi Mundo”: arquivo oi.xsl

<?xml version="1.0" encoding="ISO-8859-1" ?>

<xsl:stylesheet version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output method="html"/>

<xsl:template match="/">

<html>

<body>

<h1> <xsl:value-of select="." /> </h1>

</body>

</html>

</xsl:template>

</xsl:stylesheet>

Page 38: XSL - eXtemsible Stylesheet Languagefiles.antoniojr.webnode.com.br/200000115-62a16639bb/WEB-Aula07-XSL.pdf · • Primeira proposta formal em 1997 pela W3C (já ... XSL-FO é uma

XSL - Conceitos

38

• Prática 02

• Exemplo: catalogo.xml

Page 39: XSL - eXtemsible Stylesheet Languagefiles.antoniojr.webnode.com.br/200000115-62a16639bb/WEB-Aula07-XSL.pdf · • Primeira proposta formal em 1997 pela W3C (já ... XSL-FO é uma

XSL - Conceitos

39

• Prática 02

• Exemplo: catalogo.xsl

Page 40: XSL - eXtemsible Stylesheet Languagefiles.antoniojr.webnode.com.br/200000115-62a16639bb/WEB-Aula07-XSL.pdf · • Primeira proposta formal em 1997 pela W3C (já ... XSL-FO é uma

XSL: objetos de formatação da Extensible StylesheeetLanguage

Prof. Antonio Almeida de Barros Jr.

Page 41: XSL - eXtemsible Stylesheet Languagefiles.antoniojr.webnode.com.br/200000115-62a16639bb/WEB-Aula07-XSL.pdf · • Primeira proposta formal em 1997 pela W3C (já ... XSL-FO é uma

XSLFO: objetos de formatação da ExtensibleStylesheeet Language

41

• Vantagens de separar apresentação de conteúdo:• Múltiplos formatos de saída: tamanhos diferentes, mídias

diferentes (papel, online), dispositivos diferentes (PDA,celular, PC);

• Interface voltada para usuário (ex.: acessabilidade), cores,fontes, etc;

• Uso de estilos padrões;

• Liberdade do autor não se preocupar com apresentação,que será tratada depois por um profissional.

Page 42: XSL - eXtemsible Stylesheet Languagefiles.antoniojr.webnode.com.br/200000115-62a16639bb/WEB-Aula07-XSL.pdf · • Primeira proposta formal em 1997 pela W3C (já ... XSL-FO é uma

XSLFO - Conceitos

42

• CSS versus XSL:

– CSS - Style Sheet para HTML• tags em HTML com sintaxe e semântica pré-definidas;

• CSS descreve como formatar tags de HTML.

– XSL - Style Sheet para XML• tags em XML não são pré-definidas;

• browser não tem informação para formatar umdocumento XML;

• XSL descreve como exibir documentos XML.

Page 43: XSL - eXtemsible Stylesheet Languagefiles.antoniojr.webnode.com.br/200000115-62a16639bb/WEB-Aula07-XSL.pdf · • Primeira proposta formal em 1997 pela W3C (já ... XSL-FO é uma

XSLFO - Conceitos

43

• Pode-se utilizar uma folha de estilo para transformar um documento XML em uma variedade de formatos.

Documento

XML

Documento

CSSDocumento

HTMLDocumento

XSLDocumento

XMLEtc.

Page 44: XSL - eXtemsible Stylesheet Languagefiles.antoniojr.webnode.com.br/200000115-62a16639bb/WEB-Aula07-XSL.pdf · • Primeira proposta formal em 1997 pela W3C (já ... XSL-FO é uma

XSLFO - Conceitos

44

• O documento XML é transformado em umdocumento XSL que marca os dados utilizandoobjetos de formatação;

• Esse documento XSL pode ser transformado emoutros formatos, incluindo Portable DocumentFormat (PDF);

Page 45: XSL - eXtemsible Stylesheet Languagefiles.antoniojr.webnode.com.br/200000115-62a16639bb/WEB-Aula07-XSL.pdf · • Primeira proposta formal em 1997 pela W3C (já ... XSL-FO é uma

XSLFO - Conceitos

45

• Formatting objects

• Usado para formatar documentos XML paraapresentação;

• Tipicamente usado quando o resultado datransformação é para mídia impressa;• livros, revistas, encartes, etc.

• FOP

• Ferramenta em Java da Apache;

• Transforma documentos XSL que contêmformatting objects;

• Download em xml.apache.org/fop.

Page 46: XSL - eXtemsible Stylesheet Languagefiles.antoniojr.webnode.com.br/200000115-62a16639bb/WEB-Aula07-XSL.pdf · • Primeira proposta formal em 1997 pela W3C (já ... XSL-FO é uma

XSLFO - Conceitos

46

• Exemplos de ferramentas:• http://xml.apache.org/fop - FOP para PDF

• http://www.unicorn-enterprises.com/ - TeX para PDF

• http://www.jfor.org/ - XSLFO para RTF

• http://www.xsmiles.org/ - browser XML que usa FOP

Page 47: XSL - eXtemsible Stylesheet Languagefiles.antoniojr.webnode.com.br/200000115-62a16639bb/WEB-Aula07-XSL.pdf · • Primeira proposta formal em 1997 pela W3C (já ... XSL-FO é uma

Referências

47

[1] Deitel, H. M.; Deitel, P. J.; Nieto, R.; XML: Como Programar. Ed. Bookman, 2003. ISBN: 8536301473.

[2] Casanova, M.A.; Processamento de documentos XML – XSL

(Tecnologias de Banco de Dados para a Web Semântica)

[3] Hübner, J.F.; Folhas de estilo (XSL e XPath).

[4] http://www.macoratti.net/xml.htm

[5]http://www.dsc.ufcg.edu.br/~jacques/cursos/daca/html/xsl/index.html

[6] http://xml.apache.org/xalan-j/