Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouEdison de Sousa Pedroso Alterado mais de 9 anos atrás
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
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.