1 / 82

XSL - eXtensible Stylesheet Language

XSL - eXtensible Stylesheet Language. 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)

norris
Download Presentation

XSL - eXtensible Stylesheet Language

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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, 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. Opções para mostrar XML

  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. 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. 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. External Style Sheets • External Style Sheets • Contidas num arquivo.css • Único style sheet usado por múltiplas páginas • Usado com o elemento link

  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 } <html> <!-- Linking external style sheets --> <head> <title>Exemplo de CSS</title> <link rel = "stylesheet" type = "text/css” href = "styles.css"> </head>

  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. 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. 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. 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. 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. 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. XSLT - Características Elemento raiz de um documento XSL é <xsl:stylesheet> ou <xsl:transform> <xsl:stylesheet version=“1.0” xmlns:xsl=http://www.w3.org/1999/XSL/Transform> Documento XSL: Cabeçalho XML + <xsl:stylesheet> ou <xsl:transform> + Conjunto de regras de template <?xml version=“1.0” encoding=ISO-8859-1”?> <xsl:stylesheet version=“1.0” xmlns:xsl=http://www.w3.org/1999/XSL/Transform> <xsl:template match=“”> corpo do template </xsl:template> … <xsl:template match=“”> corpo do template </xsl:template> </xsl:stylesheet>

  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. Saudacao.xml <?xml version=“1.0” encoding=“iso-8859-1”?> <saudacao>Bem-vindo a Maceió!</saudacao> <html> <head> <title>Saudação de Hoje</title> </head> <body> <p>Bem-vindo a Maceió!</p> </body> </html> Saudacao.html

  18. Saudacao.xsl <?xml version=“1.0” encoding=“iso-8859-1”?> <xsl:stylesheet version=“1.0” xmlns:xsl=“http://www.w3.org/1999/XSL/Transform”> <xsl:template match=“/”> <html> <head> <title>Saudação de Hoje</title> </head> <body> <p><xsl:value-of select=“saudacao”/></p> </body> </html> </xsl:template> </xsl:stylesheet> Linha de comando para transformar Saudacao.xml em Saudacao.html via Saudacao.xsl: C:>saxon Saudacao.xml Saudacao.xsl > Saudacao.html

  19. Inclusão de uma referência ao arquivo xsl no próprio arquivo xml: <?xml version=“1.0” encoding=“iso-8859-1”?> <?xml-stylesheet type=“text/xsl” href=“saudacao.xsl”?> <saudacao>Bem-vindo a Maceió!</saudacao> Saudacao.xml

  20. Exemplo 2 Stylesheet que transforma elementos <para> e <emphasis> para HTML: <?xml version='1.0'?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="para"> <p><xsl:apply-templates/></p> </xsl:template> <xsl:template match="emphasis"> <i><xsl:apply-templates/></i> </xsl:template> </xsl:stylesheet>

  21. Exemplo 2(cont) Com a stylesheet anterior, o documento XML: <?xml version='1.0'?> <para>Isto é um <emphasis>teste</emphasis>.</para> seria transformado em: <?xml version="1.0" encoding="utf-8"?> <p>Isto é um <i>teste</i>.</p>

  22. <capitulo titulo = introducao> Texto do capitulo </capitulo> Exemplo 3: XML XSL <xsl:template match=“capitulo”> <H1> <xsl:value-of select=“./@titulo”> </H1> <xsl:apply-templates/> </xsl:template> <xsl:template match=“text()”> <xsl:value-of select=“.”/> </xsl:template> HTML <H1> Introducao </H1> Texto do capitulo

  23. Templates • A maioria dos templates têm a seguinte forma: <xsl:template match="emphasis"> <i><xsl:apply-templates/></i> </xsl:template> • O elemento <xsl:template> é um template • O match pattern determina onde este template se aplica • Elementos XSLT vêm do XSL namespace

  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 : <nomeCliente>José</nomeCliente> <nomeCliente>Maria</nomeCliente> • Ex2 /banco-2/cliente/nomeCliente/text( ) retorna os mesmos nomes, mas sem as tags envolventes.

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

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

  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: • <xsl: element_name>

  30. XSLT - Elementos Exemplo Base de XML: <?xml version="1.0" encoding="ISO-8859-1" ?> - <catalog> <cd> <title>Empire Burlesque</title> <artist>Bob Dylan</artist> <country>USA</country> <company>Columbia</company> <price>10.90</price> <year>1985</year> </cd> <cd> <title>Hide your heart</title> <artist>Bonnie Tyler</artist> <country>UK</country> <company>CBS Records</company> <price>9.90</price> <year>1988</year> </cd> ... </catalog>

  31. XSLT - Elementos • <xsl:template> • 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. • <xsl:value-of> • É 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. <?xml version="1.0" encoding="ISO-8859-1" ?> • <xsl:stylesheet version="1.0” xmlns:xsl="http://www.w3.org/1999/XSL/Transform”> • <xsl:template match="/"> • <html> <body> • <h2>My CD Collection</h2> • <table border="1"> • <tr bgcolor="#9acd32"> • <th>Title</th> • <th>Artist</th> • </tr> • <tr> • <td> <xsl:value-of select="catalog/cd/title" /> </td>- <td> <xsl:value-of select="catalog/cd/artist"/> </td> • </tr> • </table> • </body> </html> </xsl:template> </xsl:stylesheet>

  33. Resultado

  34. XSLT - Elementos • <xsl:for-each> • 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 • <xsl:sort> • É 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. <?xml version="1.0" encoding="ISO-8859-1" ?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">- <xsl:template match="/"> <html><body> <h2>My CD Collection</h2> <table border="1"> <tr bgcolor="#9acd32"> <th>Title</th> <th>Artist</th> </tr> <xsl:for-each select="catalog/cd"> <xsl:sort select="artist" /> <tr> <td> <xsl:value-of select="title" /> </td> <td> <xsl:value-of select="artist" /> </td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet>

  36. Resultado

  37. XSLT - Elementos • <xsl:if> • 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 • <xsl:if test=“price&gt;‘10’> • conteúdo ... • </xsl:if>

  38. <?xml version="1.0" encoding="ISO-8859-1" ?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html><body> <h2>My CD Collection</h2> <table border="1"> <tr bgcolor="#9acd32"> <th>Title</th> <th>Artist</th> </tr> <xsl:for-each select="catalog/cd"> <xsl:if test="price&gt;'10'"> <tr> <td> <xsl:value-of select="title" /> </td> <td> <xsl:value-of select="artist" /> </td> </tr> </xsl:if> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet>

  39. XSLT - Elementos

  40. XSLT - Elementos • <xsl:attribute> • É usado para adicionar atributos aos elementos • <picture> • <xsl:attribute name=“source”/> • <picture> <xsl:element> cria um elemento (node) na saída <xsl:template match="/"> • <xsl:for-each select="catalog/cd"> • <xsl:element name="singer"> • <xsl:value-of select="artist" /> • </xsl:element> • <br /> • </xsl:for-each> • </xsl:template>

  41. XSLT - Elementos • <xsl:copy> • Cria uma cópia do nó corrente do documento origem para o documento destino • <xsl:template match="message"> • <xsl:copy> • </xsl:copy> • </xsl:template> • <xsl:copy-of> • Cria uma cópia do nó corrente (inclusive os nós filhos e atributos)

  42. Exemplo: Seja o DB XML: <?xml version = "1.0"?> <!-- Banco de Dados Esporte --> <esportes> <jogo titulo = "cricket"> <id>243</id> <para> Mais popular na Inglaterra </para> </jogo> <jogo titulo = ”baseball"> <id>431</id> <para> Mais popular nos EUA </para> </jogo> <jogo titulo = ”futebol"> <id>123</id> <para> Mais popular no Brasil </para> </jogo> </esportes>

  43. 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 <?xml version = "1.0"?> <!-- Usando xsl:element e xsl:attribute --> <xsl:stylesheet version = "1.0” xmlns:xsl = "http://www.w3.org/1999/XSL/Transform"> <xsl:template match = "/"> <xsl:apply-templates/> </xsl:template> <xsl:template match = ”esportes"> <esportes> <xsl:apply-templates/> </esportes> </xsl:template> <xsl:template match = ”jogo"> <xsl:element name = "{@titulo}"> <xsl:attribute name = "id"> <xsl:value-of select = "id"/> </xsl:attribute> <comment> <xsl:value-of select = "para"/> </comment> </xsl:element> </xsl:template> </xsl:stylesheet> match elemento esportes e aplica os templates aos nodes filhos esportes

  44. Resultado produzido <?xml version = "1.0" ?> <esportes> <cricket id = "243"> <comment> Mais popular na Inglaterra </comment> </cricket> <baseball id = "432"> <comment> Mais popular nos EUA </comment> </baseball> <futebol id = ”123"> <comment> Mais popular no Brasil </comment> </futebol> </esportes>

  45. XSLT - Elementos • <xsl:param> • 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 • <xsl:call-template> • Elemento que chama um determinado template • Possui o atributo “name” para assinalar o nome do template

  46. XSLT - Elementos • <xsl:with-param> • 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 • <xsl:variable> • 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

  47. XSLT - Elementos <xsl:template name=“parenthsize”> <xsl:param name=“string”/> <xsl:value-of select=“concat(‘(‘,$string,’)’)”/> </xsl:template> <xsl:variable name=“credit-in-paren”> <xsl:call-template name=“parenthsize”> <xsl:with-param name=“string” select=“@credit”/> </xsl:call-template> <xsl:variable>

  48. XSLT - Elementos • <xsl:text> • Elemento usado para escrever texto na saída <xsl:template match="car"> <p> <xsl:value-of select="@year"/> <xsl:text>.</xsl:text> <xsl:value-of select="@color"/> </p> </xsl:template>

  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 <xsl:functions> • <xsl:value-of select=“funcs:f1”> • <xsl:functions ns=“funcs” type=“text/javascript”> • function f1() { • return “Funcao 1”; • } • </xsl:functions>

  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 <<format-number(12.5, ‘$#.00’)>> <<$12.50>> <<format-number(0.25, ‘#00%’)>> <<25%>> • 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 <<generate-id(book)>> <<N015732>>

More Related