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,

  • Published on
    07-Apr-2016

  • View
    216

  • Download
    4

Transcript

  • XSL - eXtensible Stylesheet Language

  • XSL - MotivaoVantagens de separar apresentao de contedo:Mltiplos formatos de sada: tamanhos diferentes, mdias diferentes (papel, online), dispositivos diferentes (PDA, celular, PC)Interface voltada para usurio (ex.: acessabilidade), cores, fontes, etc.Uso de estilos padresLiberdade do autor no se preocupar com apresentao, que ser tratada depois por um profissional.

  • Opes para mostrar XML

  • O que faz uma folha de estilo?Especifica a apresentao de XML em duas categorias:Uma transformao opcional do documento de entrada em outra estruturaUma descrio de como apresentar a informao transformada

  • O que faz um folha de estilo?gerao de texto supresso de contedomover texto duplicar texto ordenaotransformaes mais complexas que computam nova informao baseada na informao existente.

  • Reviso de CSSCSS - Cascade Style SheetDefine o estilo de um documento para apresentaoPode ser inline ou externa ao documentoPrecedncia de estilos:Autor > Usurio > Web Browser

  • External Style SheetsExternal Style SheetsContidas num arquivo.css nico style sheet usado por mltiplas pginasUsado com o elemento link

  • 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

  • XSL - Princpios geraisComo CSS, funcionamento a base de regras

    CSS no modifica a estrutura de um documento, XSL sim

    XSL utiliza a sintaxe XML

  • XSL - HistricoXML derivada de SGMLPadronizada pelo W3CXSL 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 recomendao da W3Cltima verso de XSL: Outubro de 2001 (incluindo XSL-FO)

  • Componentes de XSL XSL consiste logicamente de 3 componentes:XPath: XML Path Language-- linguagem para referenciar partes especficas de um documento XMLXSLT: XSL Transformations-- linguagem para descrever como transformar um documento XML (representado como uma rvore) em outroXSL-FO: uma descrio de um conjunto de Formatting Objects e Formatting Properties

  • XSLT - CaractersticasLinguagem declarativaDescreve a transformao desejada, ao invs de prover uma sequncia de instrues procedurais

    XSLT essencialmente uma ferramenta para transformar documentos XML

    XSLT manipula rvores

    Uso de XSL Namespaces - O W3C prov um namespace para tags XSL

  • XSLT - CaractersticasProcessadores 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

  • XSLT - Estrutura de uma folha XSLUma 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 ativao da regra

    Se vrias regras se aplicam a um elemento, a mais especfica executada

  • XSLT - CaractersticasElemento raiz de um documento XSL ou

    corpo do templatecorpo do template

    Documento XSL: Cabealho XML + ou + Conjunto de regras de template

  • XSLT - CaractersticasO corpo das regras de template constitudo por:Expresses XPathElementos XSLTFunes XSLT e XPath

    Permite manipular partes de um documento

    Duas formas de utilizar um arquivo xsl:Atravs de uma linha de comando, que referencia os documentos envolvidos na transformao (p.e, o xml origem, o html resultado e o xslt)Incluindo uma referncia no prprio arquivo xml

  • Bem-vindo a Macei!Saudacao.xml

    Saudao de Hoje

    Bem-vindo a Macei!

    Saudacao.html

  • Linha de comando para transformar Saudacao.xml em Saudacao.html via Saudacao.xsl:C:>saxon Saudacao.xml Saudacao.xsl > Saudacao.html

  • Bem-vindo a Macei!Saudacao.xmlIncluso de uma referncia ao arquivo xsl no prprio arquivo xml:

  • Exemplo 2Stylesheet que transforma elementos e para HTML:

  • Exemplo 2(cont)Com a stylesheet anterior, o documento XML:

    Isto um teste.

    seria transformado em:

    Isto um teste.

  • Exemplo 3:

    Introducao Texto do capituloXMLXSLHTML

  • TemplatesA maioria dos templates tm a seguinte forma: O elemento um template

    O match pattern determina onde este template se aplica

    Elementos XSLT vm do XSL namespace

  • XSLT Expresses XPathXPath usado para enderear (select) partes de documentos XML usando path expressionsUma path expression uma sequncia de passos separados por /Anlogo a nomes de arquivos numa hierarquia de diretrios 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 :JosMariaEx2 /banco-2/cliente/nomeCliente/text( )retorna os mesmos nomes, mas sem as tags envolventes.

  • XSLT Expresses XPathO / inicial denota a raiz do documento (acima da tag do topo )Path expressions so avaliadas da esquerda para direita Predicados de seleo 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 saldoAtributos so acessados usando @Ex /banco-2/conta[saldo > 400]/@numeroretorna os nmeros das contas com saldo>400

  • XSLT Funes XPathXPath prov vrias funesA funo count() no final de um path conta o nmero de elementos no conjunto gerado pelo path.Ex /banco-2/conta[cliente/count() > 2] Retorna contas com > 2 clientesConectores Booleanos and e or e a funo not() podem ser usados em predicadosIDREFs podem ser referenciados usando a funo id()E.g. /banco-2/conta/id(@proprietarios) retorna todos clientes referenciados pelo atributo proprietarios do elemento conta.

  • Xpath - Exemplo de patterns (1)para associa todos filhos no contexto correntepara/emphasis associa com todos elementos que tm um pai / associa com a raiz do documentopara//emphasis associa com todos elementos que tm 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 so descendentes do contexto corrente

  • XPath- Exemplo de patterns (2)section/*/note associa elementos que tenham como avs.

    stockquote[@symbol] associa elementos que tm um atributo "symbol"

    stockquote[@symbol="XXXX"] associa elementos que tm um atributo "symbol" com valor "XXXX"

    emphasis|strong associa elementos ou

  • XSLT - ElementosElementos XSLT possuem sintaxe e semntica bem definidos

    Existem muitos elementos pr-definidos no namespace XSLT e que so interpretados por processadores XSLTNem todos os elementos XSLT esto disponveis para todos os processadores XSLT

    Forma:

  • XSLT - Elementos -

    Empire BurlesqueBob Dylan USAColumbia10.90 1985 Hide your heartBonnie TylerUKCBS Records9.901988...

    Exemplo Base de XML:

  • XSLT - Elementos

    Contm regras que sero aplicadas a um n especficoPossui 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 sada da transformaoPossui o atributo select, que contm uma expresso Xpath que calcula o valor a ser adicionado ao documento resultado

  • My CD Collection TitleArtist -

  • Resultado

  • XSLT - Elementos

    Permite a construo de loopsPossui o atributo select, que contm uma expresso Xpath que vai determinar sobre que elemento ser realizado o loop

    usado para ordenar a sadaPossui o atributo select, que indica qual elemento XML ordenarPossui o atributo order, que indica o tipo da ordenao: ascending ou descending.

  • -

    My CD Collection Title Artist

  • Resultado

  • XSLT - Elementos

    Aplica um contedo apenas se uma condio especificada for verdadeiraPossui o atributo test, que contm a expresso a ser avaliada

    contedo ...

  • My CD Collection

    Title Artist

  • XSLT - Elementos

  • XSLT - Elementos

    usado para adicionar atributos aos elementos

    cria um elemento (node) na sada

  • XSLT - Elementos

    Cria uma cpia do n corrente do documento origem para o documento destino

    Cria uma cpia do n corrente (inclusive os ns filhos e atributos)

  • 243 Mais popular na Inglaterra 123 Mais popular no Brasil

    Exemplo: Seja o DB XML:

  • match elemento esportes e aplica os templates aos nodes filhos esportes

  • Mais popular na Inglaterra Mais popular nos EUA

  • XSLT - Elementos

    Elemento que define parmetrosPossui o atributo name para assinalar o nome do parmetroPossui o atributo select, que armazena o valor do parmetro

    Elemento que chama um determinado templatePossui o atributo name para assinalar o nome do template

  • Elemento que define os valores dos parmetros quando da chamada de um templatePossui o atributo name para assinalar o nome do parmetroPossui o atributo select, que armazena o valor do parmetro

    Elemento usado para declarar variveisPossui o atributo name para assinalar o nome da varivelPossui o atributo select, que armazena o valor do varivel

    XSLT - Elementos

  • XSLT - Elementos

  • XSLT - Elementos

    Elemento usado para escrever texto na sada

    .

  • XSLT - FunesJuntamente com XPath e os elementos XSLT, formam o core XSLTEm um stylesheet XSLT podem ser usadas dois tipos de funes built-in:Funes XPathFunes XSLTExistem ainda as funes que podem ser definidas pelo elemento XSLT

    function f1() { return Funcao 1; }

  • XSLT - Funesformat-number() usada para converter nmeros em strings de acordo com algum padro de formatoformat-number(value, format) => string generate-id()Gera um string, na forma de um nome XML, que unicamente identifica um n.generate-id(n) => stringo cdigo retornado depende do XSLT processor

  • XSLT - Funescurrent()Retorna o n corrente

    document()Retorna o n raiz de um documento XML externodocument(uri) => n

  • XSLT - Funesid()Retorna o n com um determinado valor para seu atributo IDid(value) => n

    element-available() usada para testar se um determinada instruo XSLT est disponvel para uso.Element-available(name) => boolean

  • XSLT - Funescount(arg1)retorna o nmero de nodes presentes no conjunto de ns passados como argumentosum(arg1)calcula a soma de um conjunto de valores numricos contidos nos nodes do conjunto de nodes passados como argumentocontains(arg1, arg2)testa se arg1 contm arg2 como substring case sensitiveEx: contains (Paris, A) retorna false

  • XSLT - Exemplo Completo (Doc1 Documento Origem XML)

    ...

  • ...

    XSLT - Exemplo Completo (Doc1 Documento Resultado XML)

  • XSL: Extensible Stylesheet Language Formatting ObjectsFormatting objectsUsado para formatar documentos XML para apresentaoTipicamente usado quando o resultado da transformo para mdia impressalivros, revistas, encartes, etc.FOPFerramenta em Java da Apache Transforma documentos XSL que contm formatting objectsDownload em xml.apache.org/fop

  • XSLFOExemplos de ferramentashttp://xml.apache.org/fop - FOP para PDFhttp://www.unicorn-enterprises.com/ - TeX para PDFhttp://www.jfor.org/ - XSLFO para RTFhttp://www.xsmiles.org/ - browser XML que usa FOP

  • Exemplos de XSLT para Aplicao de Banco

    Produz o resultado: Jos Maria

  • Exerccio 5Supondo que existem cadastrados os clientes Ana e Mauro, qual seria a sada produzida pelo XSLT :

  • Exerccio 5Resposta: Ana Mauro

  • Consulta a dados semi-estruturados

  • Requisitos desejveis (Maier98)Expressividadelinguagem de consulta ao estilo SQL possibilitar a restruturao de dados semi-estruturadosSemntica precisamuito importante para XMLComposioo resultado de uma consulta deve poder ser utilizado dentro de uma outra consultaConsulta ao esquemavisando otimizaoFacilitar a gerao automtica de consultas

    Consulta

  • Expresses de caminho (Path expressions)Expresses que permitem navegar no grafo de dadosExpresses de caminho simplessequncias de labelsexemplosroot.pessoas {&p1,&p2,&p3}root.pessoas.filhos {&p2,&p3}semnticao resultado de uma expresso de caminho r.l1. .ln, onde l1,,ln so os labels e r um objeto, o conjunto de nodos do grafo acessveis de r por um caminho do grafo tal que os arcos percorridos passam sucessivamente pelos labels l1,,ln.

  • Expresses de caminhoExpresses de caminho generalizadasIdia: alm de especificar completamente um caminho, permite exprimir restries (constraints) sobre o caminhoUtilizao de expresses regularesExemplos_ um caracter coringa que designa um label qualquer(pessoa|estudante)._.idadeAs expresses de caminho definidas at o presente retornam os conjuntos de objetos e no de dados semi-estruturadosConsulta

  • Linguagem de ConsultaX-Query

  • XQueryBaseda em Quilt (que baseda em XML-QL)http://www.w3.org/TR/xquery/2/2001XML Query data model

  • FLWR (Flower) ExpressionsFOR ... LET... WHERE...RETURN...

  • XQueryEncontre os ttulos dos livros publicados aps 1995:FOR $x IN document("bib.xml")/bib/bookWHERE $x/year > 1995RETURN $x/titleResultado: abc def ghi

  • XQueryPara 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 distinct = elimina duplicatas

  • XQueryResultado: Jones abc def Smith ghi

  • XQueryFOR $x in expr -- liga $x a cada valor na lista expr

    LET $x = expr -- liga $x inteira lista exprUsado para subexpresses comuns e para agregaes

  • XQuerycount = funo (aggregate) que retorna o nmero de elementos FOR $p IN distinct(document("bib.xml")//publisher) LET $b := document("bib.xml")/book[publisher = $p] WHERE count($b) > 100 RETURN $p

  • XQueryEncontre os livros cujos preos so maiores do que a mdia de preos:FOR $b in document("bib.xml")/bib/bookLET $a=avg(document("bib.xml")/bib/book/price)WHERE $b/price > $aRETURN $b

  • XQuerySumrio:FOR-LET-WHERE-RETURN = FLWRFOR/LET ClausesWHERE ClauseRETURN ClauseLista de tuplasLista de tuplasInstncia do modelo de dados Xquery

  • FOR versus LET

    FORliga variveis nodo iteration

    LETliga variveis coleo one value

  • FOR versus LETFOR $x IN document("bib.xml")/bib/bookRETURN $x Retorna: ... ... ... ...LET $x IN document("bib.xml")/bib/bookRETURN $x Retorna: ... ... ... ...

  • Colees em XQueryConjuntos e Bags/bib/book/author = uma coleo do tipo Bag Distinct(/bib/book/author) = uma coleo do tipo conjunto (Set)LET $a = /bib/book $a uma coleo$b/author uma coleo (vrios autores...)RETURN $b/author Retorna: ... ... ... ...

  • Ordenao em XQuery

    FOR $p IN distinct(document("bib.xml")//publisher) RETURN $p/text() , FOR $b IN document("bib.xml")//book[publisher = $p] RETURN...

Recommended

View more >