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

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

Tópicos de Sistemas de Informação A Carlos Oberdan Rolim Ciência da Computação.

Apresentações semelhantes


Apresentação em tema: "Tópicos de Sistemas de Informação A Carlos Oberdan Rolim Ciência da Computação."— Transcrição da apresentação:

1 Tópicos de Sistemas de Informação A Carlos Oberdan Rolim Ciência da Computação

2 XSL (eXtensible Stylesheet Language)

3 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.

4 Opções para mostrar XML

5 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

6 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.

7 Revisão de CSS CSS - Cascade Style Sheet Define o estilo de um documento para apresentação Pode ser inline ou externa ao documento

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

9 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

10 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

11 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)

12 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

13 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

14 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, MSXML, Xalan (Apache) Maioria dos Web browsers já trazem tal processador

15 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

16 XSLT - Características Elemento raiz de um documento XSL é ou corpo do template … corpo do template Documento XSL: Cabeçalho XML + ou + Conjunto de regras de template

17 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

18 Bem-vindo! Saudacao.xml Saudação de Hoje Bem-vindo! Saudacao.html

19 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

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

21 Exemplo 2 Stylesheet que transforma elementos e para HTML:

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

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

24 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

25 Linguagem XPath Consiste em uma sintaxe para especificar partes de um documento XML Baseada em expressões de caminhos (path expressions) Percursos no grafo XML Usada por vários outros padrões XML XQuery, XSLT, XPointer, etc.

26 Linguagem XPath Consiste em uma sintaxe para especificar partes de um documento XML usando path expressions Baseada em expressões de caminhos (path expressions) Percursos no grafo XML Usada por vários outros padrões XML XQuery, XSLT, XPointer, etc.

27 Linguagem XPath O resultado de uma expressão de caminho é uma sequência de n ó s ou valores primitivos Compilador determina qual é o tipo do resultado Pesquisa nos diferentes eixos de um documento XML Ascendentes, descendentes, irmãos, etc.

28 XSLT – Expressões XPath 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.

29 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 Ex /banco-2/conta[saldo > retorna os números das contas com saldo>400

30 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. retorna todos clientes referenciados pelo atributo proprietarios do elemento conta.

31 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

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

33 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:

34 XSLT - Elementos - Empire Burlesque Bob Dylan USA Columbia Hide your heart Bonnie Tyler UK CBS Records Exemplo Base de XML:

35 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

36 - My CD Collection Title Artist -

37 Resultado

38 XSLT - Elementos Aplica um template ao elemento corrente e todos os seus filhos Se for acrescido o atributo select será processado somente o elemento filho que corresponde ao valor do atributo. Usa-se select para especificar a ordem que os filhos serão processados

39 My CD Collection Title: Artist: (CONTINUACAO)

40 Resultado My CD Collection Title: Empire Burlesque Artist: Bob Dylan Title: Hide your heart Artist: Bonnie Tyler Title: Greatest Hits Artist: Dolly Parton Title: Still got the blues Artist: Gary Moore Title: Eros Artist: Eros Ramazzotti Title: One night only Artist: Bee Gees

41 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.

42 - My CD Collection Title Artist

43 Resultado

44 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......some output if the expression is true......

45 My CD Collection Title Artist

46 XSLT - Elementos

47 É usado para adicionar atributos aos elementos cria um elemento (node) na saída

48 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)

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

50 match elemento e sportes e aplica os templates aos nodes filhos esp ortes 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

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

52 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

53 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

54

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

56 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; }

57 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 > >

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

59 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 >

60 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

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

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

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

64 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

65 XSLFO Exemplos de ferramentas - FOP para PDF - TeX para PDF - XSLFO para RTF - browser XML que usa FOP

66 Exercício

67 Linguagem de Consulta X-Query

68 XQuery Baseda em Quilt (que é baseda em XML-QL) XML Query data model Utiliza expressões XPath É uma recomendação W3C Selecione todos os registros com preço menor que $10 da coleção de CDs armazenado no documento XML chamado cd_catalog.xml The best way to explain XQuery is to say that XQuery is to XML what SQL is to database tables.

69 Selecionando nodos Usar a função doc() para extrair dados do XML doc("books.xml") Usa expressões para selecionar os elementos doc("books.xml")/bookstore/book/title Predicados são usados para limitar a seleção doc("books.xml")/bookstore/book[price 30]/title

70 FLWR (Flower) Expressions FOR... LET... WHERE... RETURN...

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

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

73 XQuery Resultado: Jones abc def Smith ghi

74 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

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 FOR versus LET FOR liga variáveis nodo iteration for $x in (1 to 5) return {$x} Resulta: LET liga variáveis coleção one value let $x := (1 to 5) return {$x} Resulta:

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

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

79 For / Let 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

80 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:...

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

82 Ordenação em XQuery { for $x in doc("books.xml")/bookstore/book/title order by $x return {$x} } { for $x in doc("books.xml")/bookstore/book/title order by $x return {$x} } Resulta em: Everyday Italian Harry Potter Learning XML XQuery Kick Start

83 Ordenação em XQuery { for $x in doc("books.xml")/bookstore/book/title order by $x return {data($x)} } { for $x in doc("books.xml")/bookstore/book/title order by $x return {data($x)} } Resulta em: Everyday Italian Harry Potter Learning XML XQuery Kick Start Agora retirando o elemento title e mostrando somente seu conteudo

84 If-Then-Else for $x in doc("books.xml")/bookstore/book return if then {data($x/title)} else {data($x/title)} for $x in doc("books.xml")/bookstore/book return if then {data($x/title)} else {data($x/title)} Resulta em: Everyday Italian Harry Potter Learning XML XQuery Kick Start * Parenteses na expressao if são requeridos

85 Comparativos Duas formas de comparar valores: Comparações gerais: =, !=,, >= Comparações de valor: eq, ne, lt, le, gt, ge - > 10 A expressao retorna true se qualquer atributo possui valores maiores que 10 - gt 10 A expressao retorna true se há somente um elemento q retornado pela expressao e o seu valor é maior que 10. Se mais de um q são retornados ocorre um erro

86 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

87 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

88 Funções Diversas funções para string, valores, data, etc... Podem ser encontradas em: Como invocar uma função {uppercase($booktitle)} ou então doc("books.xml")/bookstore/book[substring(title,1,5)='Harry']

89 Funções Funções declaradas pelo usuário declare function prefix:function_name($parameter AS datatype) AS returnDatatype { (:...function code here... :) }; Exemplo: declare function local:minPrice( $price as xs:decimal?, $discount as xs:decimal?) AS xs:decimal? { let $disc := ($price * $discount) div 100 return ($price - $disc) }; Invocar da seguinte forma: {local:minPrice($book/price, $book/discount)}


Carregar ppt "Tópicos de Sistemas de Informação A Carlos Oberdan Rolim Ciência da Computação."

Apresentações semelhantes


Anúncios Google