XSL - extemsible Stylesheet Language Prof. Antonio Almeida de Barros Jr.
Agenda 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 2
XSL - Conceitos 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 uma recomendação da W3C; XSL-FO Vr. 1.1: Dezembro de 2006; 3
XSL - Conceitos 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; 4
XSL Transformation Language (XSLT) Prof. Antonio Almeida de Barros Jr.
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; 6
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. 7
Template simples Apresenta o elemento raiz do documento XSLT (isto é, xsl:stylesheet) e seus atributos. 8
Template simples Este elemento identifica nodos específicos do documento XML utilizando uma expressão Xpath no atributo match. 9
Template simples Quando um nodo do elemento mymessage é identificado na árvore de origem, o conteúdo do elemento template é colocado na árvore de resultado. 10
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. 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. 12
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. 13
Template simples Documento XML de entrada 14
Iteração e Classificação Exemplo 02 15
Iteração e Classificação Exemplo 02 Template XSLT que corresponde ao elemento book. 16
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. 17
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. 18
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. 19
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. 20
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. 21
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 note tem um valor maior que 500 e menor que 1200. 22
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. 23
Processamento Condicional Exemplo 03 Diferente do elemento choose, utiliza-se o elemento if para fornecer um único teste condicional, no atributo test. 24
Copiando nodos Exemplo 04 O elemento copy produz uma duplicata do nodo de contexto na árvore de resultado. 25
Copiando nodos Exemplo 04 Diferente do elemento copy, o elemento copy-of duplica todos os filhos (Isto é, texto, instruções de processamento, comentários etc) e atributos do nodo. 26
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. 27
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. 28
Estudo de caso: XSLT e XPath Exemplo 06 O caminho de localização /product seleciona todos os product filhos do nodo raiz. 29
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, 30
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. 31
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. 32
Estudo de caso: XSLT e XPath Exemplo 06 Verifica se o elemento product é antepassado do nodo cujo valor de string é XML How to Program. 33
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. 34
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. 35
XSL Práticas 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> 36
XSL - Conceitos 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> 37
XSL - Conceitos Prática 02 Exemplo: catalogo.xml 38
XSL - Conceitos Prática 02 Exemplo: catalogo.xsl 39
XSL: objetos de formatação da Extensible Stylesheeet Language Prof. Antonio Almeida de Barros Jr.
XSLFO: objetos de formatação da Extensible Stylesheeet Language 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. 41
XSLFO - Conceitos 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 um documento XML; XSL descreve como exibir documentos XML. 42
XSLFO - Conceitos Pode-se utilizar uma folha de estilo para transformar um documento XML em uma variedade de formatos. Documento XML Documento CSS Documento HTML Documento XSL Documento XML Etc. 43
XSLFO - Conceitos O documento XML é transformado em um documento XSL que marca os dados utilizando objetos de formatação; Esse documento XSL pode ser transformado em outros formatos, incluindo Portable Document Format (PDF); 44
XSLFO - Conceitos Formatting objects Usado para formatar documentos XML para apresentação; Tipicamente usado quando o resultado da transformação é para mídia impressa; livros, revistas, encartes, etc. FOP Ferramenta em Java da Apache; Transforma documentos XSL que contêm formatting objects; Download em xml.apache.org/fop. 45
XSLFO - Conceitos 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 46
Referências [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/i ndex.html [6] http://xml.apache.org/xalan-j/ 47