A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

1 XSL - eXtensible Stylesheet Language. 2 XSL - Motivação Vantagens de separar apresentação de conteúdo: Múltiplos formatos de saída: tamanhos diferentes,

Apresentações semelhantes


Apresentação em tema: "1 XSL - eXtensible Stylesheet Language. 2 XSL - Motivação Vantagens de separar apresentação de conteúdo: Múltiplos formatos de saída: tamanhos diferentes,"— Transcrição da apresentação:

1 1 XSL - eXtensible Stylesheet Language

2 2 XSL - Motivação 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.

3 3 Opções para mostrar XML

4 4 O que faz uma folha de estilo? Especifica a apresentação de XML em duas categorias: Uma transformação opcional do documento de entrada em outra estrutura Uma descrição de como apresentar a informação transformada

5 5 O que faz um folha de estilo? geração de texto supressão de conteúdo mover texto duplicar texto ordenação transformações mais complexas que computam nova informação baseada na informação existente.

6 6 Revisão de CSS CSS - Cascade Style Sheet Define o estilo de um documento para apresentação Pode ser inline ou externa ao documento Precedência de estilos: Autor > Usuário > Web Browser

7 7 External Style Sheets Contidas num arquivo.css Único style sheet usado por múltiplas páginas Usado com o elemento link

8 8 Exemplo de um CSS /* styles.css */ /* An external stylesheet */ a { text-decoration: underline; color: red; background-color: #ccffcc } li em { color: red; font-weight: bold} ul { margin-left: 2cm } Exemplo de CSS <link rel = "stylesheet" type = "text/css” href = "styles.css">

9 9 XSL - Princípios gerais Como CSS, funcionamento a base de regras CSS não modifica a estrutura de um documento, XSL sim XSL utiliza a sintaxe XML

10 10 XSL - Histórico 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 Última versão de XSL: Outubro de 2001 (incluindo XSL-FO)

11 11 Componentes de XSL XSL consiste logicamente de 3 componentes: XPath: XML Path Language-- linguagem para referenciar partes específicas de um documento XML XSLT: XSL Transformations-- linguagem para descrever como transformar um documento XML (representado como uma árvore) em outro XSL-FO: uma descrição de um conjunto de Formatting Objects e Formatting Properties

12 12 XSLT - Características Linguagem declarativa Descreve a transformação desejada, ao invés de prover uma sequência de instruções procedurais XSLT é essencialmente uma “ferramenta” para transformar documentos XML XSLT manipula árvores Uso de XSL Namespaces - O W3C provê um namespace para tags XSL

13 13 XSLT - Características Processadores XSLT Aplicam um stylesheet XSLT a um documento origem XML e produz um documento resultado. Tratam árvores Exemplos de processadores: Saxon, xt, MSXML3, Xalan (Apache) Web browsers já trazem tal processador sobretudo IE 6.0 e Netscape 6.0

14 14 XSLT - Estrutura de uma folha XSL Uma folha XSL é um conjunto de regras Uma regra associa um seletor a uma forma ou modelo O seletor define a estrutura a qual pode-se aplicar esta regra A forma define a estrutura da sub-árvore gerada quando da ativação da regra Se várias regras se aplicam a um elemento, a mais específica é executada

15 15 XSLT - Características Elemento raiz de um documento XSL é ou <xsl:stylesheet version=“1.0” xmlns:xsl=http://www.w3.org/1999/XSL/Transform> corpo do template … corpo do template Documento XSL: Cabeçalho XML + ou + Conjunto de regras de template

16 16 XSLT - Características O corpo das regras de template é constituído por: Expressões XPath Elementos XSLT Funções XSLT e XPath Permite manipular partes de um documento Duas formas de utilizar um arquivo xsl: Através de uma linha de comando, que referencia os documentos envolvidos na transformação (p.e, o xml origem, o html resultado e o xslt) Incluindo uma referência no próprio arquivo xml

17 17 Bem-vindo a Maceió! Saudacao.xml Saudação de Hoje Bem-vindo a Maceió! Saudacao.html

18 18 Saudação de Hoje Saudacao.xsl Linha de comando para transformar Saudacao.xml em Saudacao.html via Saudacao.xsl: C:>saxon Saudacao.xml Saudacao.xsl > Saudacao.html

19 19 Bem-vindo a Maceió! Saudacao.xml Inclusão de uma referência ao arquivo xsl no próprio arquivo xml:

20 20 Exemplo 2 Stylesheet que transforma elementos e para HTML: <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

21 21 Exemplo 2(cont) Com a stylesheet anterior, o documento XML: Isto é um teste. seria transformado em: Isto é um teste.

22 22 Exemplo 3: Texto do capitulo Introducao Texto do capitulo XML XSL HTML

23 23 Templates A maioria dos templates têm a seguinte forma: O elemento é um template O match pattern determina onde este template se aplica Elementos XSLT vêm do XSL namespace

24 24 XSLT – Expressões XPath XPath é usado para endereçar (select) partes de documentos XML usando path expressions Uma path expression é uma sequência de passos separados por “/” Análogo a nomes de arquivos numa hierarquia de diretórios Resultado de uma path expression: um conjunto de valores que juntamente com seus elementos/atributos casam com o path especificado Ex. /banco-2/cliente/nomeCliente : José Maria Ex2 /banco-2/cliente/nomeCliente/text( ) retorna os mesmos nomes, mas sem as tags envolventes.

25 25 XSLT – Expressões XPath O “/” inicial denota a raiz do documento (acima da tag do topo ) Path expressions são avaliadas da esquerda para direita Predicados de seleção podem seguir qualquer passo num path, usando [ ] Ex. /banco-2/conta[saldo > 400] retorna elementos de conta com saldo > 400 /banco-2/conta[saldo] retorna elementos conta contendo um sub-elemento saldo Atributos são acessados usando “@” Ex /banco-2/conta[saldo > 400]/@numero retorna os números das contas com saldo>400

26 26 XSLT – Funções XPath XPath provê várias funções A função count() no final de um path conta o número de elementos no conjunto gerado pelo path. Ex /banco-2/conta[cliente/count() > 2] Retorna contas com > 2 clientes Conectores Booleanos and e or e a função not() podem ser usados em predicados IDREFs podem ser referenciados usando a função id() E.g. /banco-2/conta/id(@proprietarios) retorna todos clientes referenciados pelo atributo proprietarios do elemento conta.

27 27 Xpath - Exemplo de patterns (1) para associa todos filhos no contexto corrente para/emphasis associa com todos elementos que têm um pai / associa com a raiz do documento para//emphasis associa com todos elementos que têm um ancestral section/para[1] associa o primeiro filho de todos os filhos no contexto corrente //title associa todos elementos em qualquer lugar no documento.//title associa todos elementos que são descendentes do contexto corrente

28 28 XPath- Exemplo de patterns (2) section/*/note associa elementos que tenham como avós. stockquote[@symbol] associa elementos que têm um atributo "symbol" stockquote[@symbol="XXXX"] associa elementos que têm um atributo "symbol" com valor "XXXX" emphasis|strong associa elementos ou

29 29 XSLT - Elementos Elementos XSLT possuem sintaxe e semântica bem definidos Existem muitos elementos pré-definidos no namespace XSLT e que são interpretados por processadores XSLT Nem todos os elementos XSLT estão disponíveis para todos os processadores XSLT Forma:

30 30 XSLT - Elementos - Empire Burlesque Bob Dylan USA Columbia 10.90 1985 Hide your heart Bonnie Tyler UK CBS Records 9.90 1988... Exemplo Base de XML:

31 31 XSLT - Elementos Contém regras que serão aplicadas a um nó específico Possui o atributo “match”, que determina à qual elemento XML, a regra deve ser aplicada. É usado para selecionar o valor de um elemento XML e adicioná-lo à saída da transformação Possui o atributo “select”, que contém uma expressão Xpath que calcula o valor a ser adicionado ao documento resultado

32 32 - My CD Collection Title Artist -

33 33 Resultado

34 34 XSLT - Elementos Permite a construção de loops Possui o atributo “select”, que contém uma expressão Xpath que vai determinar sobre que elemento será realizado o loop É usado para ordenar a saída Possui o atributo “select”, que indica qual elemento XML ordenar Possui o atributo “order”, que indica o tipo da ordenação: ascending ou descending.

35 35 - My CD Collection Title Artist

36 36 Resultado

37 37 XSLT - Elementos Aplica um conteúdo apenas se uma condição especificada for verdadeira Possui o atributo “test”, que contém a expressão a ser avaliada conteúdo...

38 38 My CD Collection Title Artist

39 39 XSLT - Elementos

40 40 XSLT - Elementos É usado para adicionar atributos aos elementos cria um elemento (node) na saída

41 41 XSLT - Elementos Cria uma cópia do nó corrente do documento origem para o documento destino –Cria uma cópia do nó corrente (inclusive os nós filhos e atributos)

42 42 243 Mais popular na Inglaterra 431 Mais popular nos EUA 123 Mais popular no Brasil Exemplo: Seja o DB XML:

43 43 match elemento e sportes e aplica os templates aos nodes filhos esp ortes <xsl:stylesheet version = "1.0” xmlns:xsl = "http://www.w3.org/1999/XSL/Transform"> Use o atributo match para selecionar a raiz do documento XML Cria elemento titulo Cria atributo id para elemento titulo Cria comentário com o conteúdo do elemento para Exemplo (cont): XSL

44 44 Mais popular na Inglaterra Mais popular nos EUA Mais popular no Brasil Resultado produzido

45 45 XSLT - Elementos Elemento que define parâmetros Possui o atributo “name” para assinalar o nome do parâmetro Possui o atributo “select”, que armazena o valor do parâmetro Elemento que chama um determinado template Possui o atributo “name” para assinalar o nome do template

46 46 Elemento que define os valores dos parâmetros quando da chamada de um template Possui o atributo “name” para assinalar o nome do parâmetro Possui o atributo “select”, que armazena o valor do parâmetro Elemento usado para declarar variáveis Possui o atributo “name” para assinalar o nome da variável Possui o atributo “select”, que armazena o valor do variável XSLT - Elementos

47 47 XSLT - Elementos

48 48 XSLT - Elementos Elemento usado para escrever texto na saída.

49 49 XSLT - Funções Juntamente com XPath e os elementos XSLT, formam o core XSLT Em um stylesheet XSLT podem ser usadas dois tipos de funções built-in: Funções XPath Funções XSLT Existem ainda as funções que podem ser definidas pelo elemento XSLT function f1() { return “Funcao 1”; }

50 50 XSLT - Funções format-number() É usada para converter números em strings de acordo com algum padrão de formato format-number(value, format) => string > > generate-id() Gera um string, na forma de um nome XML, que unicamente identifica um nó. generate-id(nó) => string o código retornado depende do XSLT processor > >

51 51 XSLT - Funções current() Retorna o nó corrente document() Retorna o nó raiz de um documento XML externo document(uri) => nó >

52 52 XSLT - Funções id() Retorna o nó com um determinado valor para seu atributo ID id(value) => nó > element-available() É usada para testar se um determinada instrução XSLT está disponível para uso. Element-available(name) => boolean >

53 53 XSLT - Funções count(arg1) retorna o número de nodes presentes no conjunto de nós passados como argumento sum(arg1) calcula a soma de um conjunto de valores numéricos contidos nos nodes do conjunto de nodes passados como argumento contains(arg1, arg2) testa se arg1 contém arg2 como substring é case sensitive Ex: contains (‘Paris’, ‘A’) retorna false

54 54 XSLT - Exemplo Completo (Doc1 – Documento Origem XML)...

55 55... XSLT - Exemplo Completo (Doc1 – Documento Resultado XML)

56 56 XSLT - Exemplo Completo (Documento XSLT para conversão Doc1 => Doc2)

57 57 XSL: Extensible Stylesheet Language Formatting Objects Formatting objects Usado para formatar documentos XML para apresentação Tipicamente usado quando o resultado da transformçã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

58 58 XSLFO 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

59 59 Exemplos de XSLT para Aplicação de Banco Produz o resultado: José Maria

60 60 Exercício 5 Supondo que existem cadastrados os clientes Ana e Mauro, qual seria a saída produzida pelo XSLT :

61 61 Exercício 5 Resposta: Ana Mauro

62 62 Consulta a dados semi-estruturados

63 63 Requisitos desejáveis (Maier ’98) Expressividade linguagem de consulta ao estilo SQL possibilitar a restruturação de dados semi-estruturados Semântica precisa muito importante para XML Composição o resultado de uma consulta deve poder ser utilizado dentro de uma outra consulta Consulta ao esquema visando otimização Facilitar a geração automática de consultas Consulta

64 64 Expressões de caminho (Path expressions) Expressões que permitem navegar no grafo de dados Expressões de caminho simples sequências de labels exemplos root.pessoas {&p1,&p2,&p3} root.pessoas.filhos {&p2,&p3} semântica o resultado de uma expressão de caminho r.l1. ….ln, onde l1,…,ln são os labels e r um objeto, é o conjunto de nodos do grafo acessíveis de r por um caminho do grafo tal que os arcos percorridos passam sucessivamente pelos labels l1,…,ln.

65 65 Expressões de caminho Expressões de caminho generalizadas Idéia: além de especificar completamente um caminho, permite exprimir restrições (constraints) sobre o caminho Utilização de expressões regulares Exemplos _ é um caracter coringa que designa um label qualquer (pessoa|estudante)._.idade As expressões de caminho definidas até o presente retornam os conjuntos de objetos e não de dados semi-estruturados Consulta

66 66 Linguagem de Consulta X-Query

67 67 XQuery Baseda em Quilt (que é baseda em XML-QL) http://www.w3.org/TR/xquery/2/2001 XML Query data model

68 68 FLWR (“Flower”) Expressions FOR... LET... WHERE... RETURN...

69 69 XQuery Encontre os títulos dos livros publicados após 1995: FOR $x IN document("bib.xml") /bib/book WHERE $x/year > 1995 RETURN $x/title FOR $x IN document("bib.xml") /bib/book WHERE $x/year > 1995 RETURN $x/title Resultado: abc def ghi

70 70 XQuery Para cada autor de um livro publicado pela Morgan Kaufmann, listar os livros publicados: FOR $a IN distinct( document("bib.xml") /bib/book[publisher=“Morgan Kaufmann”]/author) RETURN $a, FOR $t IN /bib/book[author=$a]/title RETURN $t FOR $a IN distinct( document("bib.xml") /bib/book[publisher=“Morgan Kaufmann”]/author) RETURN $a, FOR $t IN /bib/book[author=$a]/title RETURN $t distinct = elimina duplicatas

71 71 XQuery Resultado: Jones abc def Smith ghi

72 72 XQuery FOR $x in expr -- liga $x a cada valor na lista expr LET $x = expr -- liga $x à inteira lista expr Usado para subexpressões comuns e para agregações

73 73 XQuery count = função (aggregate) que retorna o número de elementos FOR $p IN distinct(document("bib.xml")//publisher) LET $b := document("bib.xml")/book[publisher = $p] WHERE count($b) > 100 RETURN $p FOR $p IN distinct(document("bib.xml")//publisher) LET $b := document("bib.xml")/book[publisher = $p] WHERE count($b) > 100 RETURN $p

74 74 XQuery Encontre os livros cujos preços são maiores do que a média de preços: FOR $b in document("bib.xml") /bib/book LET $a=avg( document("bib.xml") /bib/book/price) WHERE $b/price > $a RETURN $b FOR $b in document("bib.xml") /bib/book LET $a=avg( document("bib.xml") /bib/book/price) WHERE $b/price > $a RETURN $b

75 75 XQuery Sumário: FOR-LET-WHERE-RETURN = FLWR FOR/LET Clauses WHERE Clause RETURN Clause Lista de tuplas Instância do modelo de dados Xquery

76 76 FOR versus LET FOR liga variáveis nodo  iteration LET liga variáveis coleção  one value

77 77 FOR versus LET FOR $x IN document("bib.xml") /bib/book RETURN $x FOR $x IN document("bib.xml") /bib/book RETURN $x Retorna:... LET $x IN document("bib.xml") /bib/book RETURN $x LET $x IN document("bib.xml") /bib/book RETURN $x Retorna:...

78 78 Coleções em XQuery Conjuntos e Bags /bib/book/author = uma coleção do tipo Bag Distinct(/bib/book/author) = uma coleção do tipo conjunto (Set) LET $a = /bib/book  $a é uma coleção $b/author  uma coleção (vários autores...) RETURN $b/author Retorna:...

79 79 Ordenação em XQuery FOR $p IN distinct(document("bib.xml")//publisher) RETURN $p/text(), FOR $b IN document("bib.xml")//book[publisher = $p] RETURN $b/title, $b/price SORTBY(price DESCENDING) SORTBY(name) FOR $p IN distinct(document("bib.xml")//publisher) RETURN $p/text(), FOR $b IN document("bib.xml")//book[publisher = $p] RETURN $b/title, $b/price SORTBY(price DESCENDING) SORTBY(name) Argumentos de sort referem-se ao namespace da cláusula RETURN e não da cláusula FOR

80 80 If-Then-Else FOR $h IN //holding RETURN $h/title, IF $h/@type = "Journal" THEN $h/editor ELSE $h/author SORTBY (title) FOR $h IN //holding RETURN $h/title, IF $h/@type = "Journal" THEN $h/editor ELSE $h/author SORTBY (title)

81 81 Quantificador Existencial FOR $b IN //book WHERE SOME $p IN $b//para SATISFIES contains($p, "sailing") AND contains($p, "windsurfing") RETURN $b/title FOR $b IN //book WHERE SOME $p IN $b//para SATISFIES contains($p, "sailing") AND contains($p, "windsurfing") RETURN $b/title

82 82 Quantificador Universal FOR $b IN //book WHERE EVERY $p IN $b//para SATISFIES contains($p, "sailing") RETURN $b/title FOR $b IN //book WHERE EVERY $p IN $b//para SATISFIES contains($p, "sailing") RETURN $b/title


Carregar ppt "1 XSL - eXtensible Stylesheet Language. 2 XSL - Motivação Vantagens de separar apresentação de conteúdo: Múltiplos formatos de saída: tamanhos diferentes,"

Apresentações semelhantes


Anúncios Google