Transformação de documentos XML



Documentos relacionados
XSL - extemsible Stylesheet Language. Prof. Antonio Almeida de Barros Jr.

DOM (Document Object Model)

Série Rações Semanais Xpath e XSLT Rogério Araújo

Programação para Internet I Aulas 10 e 11

FEUP Faculdade de Engenharia da Universidade do Porto XSL. Porto, Maio de Gabriel David FEUP, Maio 2002 XML/XSL

Extensible Markup Language (XML) Júnio César de Lima Cedric Luiz de Carvalho. Instituto de Informática Universidade Federal de Goiás

Notas sobre XSLT. O modo correcto para declarar um documento xsl é:

Folhas de estilo. Jomi Fred Hübner (XSL e XPath) FURB / DSC

XML para transferência de dados Estrutura hierárquica do XML DTDs e XML Schema Consultas de documentos XML: XPath e XQuery Transformação de

XML e XSL. Ciência da Computação DESENVOLVIMENTO DE APLICAÇÕES PARA WEB. Claudinei Dias prof.claudinei.dias@gmail.com

5a. Aula - XML

extensible Markup Language (XML) XML é uma linguagem de anotação. XML utiliza tags para descrever informação.

Roteiro de Auxílio para as Atividades Práticas de Sistemas de Informação

XML - Extensible Markup Language

Programação para Internet I 4. XML. Nuno Miguel Gil Fonseca nuno.fonseca@estgoh.ipc.pt

XML Schema. Um XML schema descreve a estrutura de um documento XML.

XMLs E INTEGRAÇÃO COM BANCOS DE DADOS

HTML BÁSICO E TEMPLATE VIEW. Gabrielle Amorim Porto

XPath e XSLT. Ferramentas para Internet Marx Gomes Van der Linden. ( Material baseado no original de Marcelo José Siqueira Coutinho de Almeida )

Introdução de XML. Dados da Web. Gerência de Dados da Web. A Web representa, nos dias de hoje, um repositório universal de dados, onde:

Programação WEB. Prof. André Gustavo Duarte de Almeida www3.ifrn.edu.br/~andrealmeida. Aula II jquery UI

MAPEAMENTO DE CONSULTAS SQL EM XML ENTRE SISTEMAS GERENCIADORES DE BANCO DE DADOS RELACIONAIS

Webdesign HTML. Introdução a HTML e as principais tags da linguagem. Thiago Miranda dos Santos Souza

Desenvolvimento em Ambiente Web. HTML - Introdução

Introdução XML. Vanessa Braganholo

XML e Banco de Dados. Prof. Daniela Barreiro Claro DCC/IM/UFBA

Oracle Database 10g: Fundamentos de SQL e PL/SQL

INTRODUÇÃO AO DESENVOLVIMENTO WEB. PROFª. M.Sc. JULIANA H Q BENACCHIO

24/09/2014. Prof. André Backes

Estrutura Lógica DTD

COM222 DESENVOLVIMENTO DE SISTEMAS WEB. Aula 01: HTML e CSS

CONTEÚDO PROGRAMÁTICO

Guia de Bolso HTML e XHTML

Transformações em XML: XSLT

XML XML. XML extensible Markup Language HTML. Motivação. W3C: World Wide Web Consortium XML 1.0. Mário Meireles Teixeira DEINF-UFMA

DOSSIER DA DISCIPLINA

INTRODUÇÃO AO DESENVOLVIMENTO WEB. PROFª. M.Sc. JULIANA H Q BENACCHIO

PLANIFICAÇÃO INTRODUÇÃO ÀS TECNOLOGIAS DE INFORMAÇÃO BLOCO I

Documentos XML 1/20. Exemplo de documento XML:

GERÊNCIA DE DADOS SEMI ESTRUTURADOS - XPATH. Prof. Angelo Augusto Frozza, M.Sc.

Relatório referente a compreensão da programação JSP. Realizado do dia de 22 abril de 2010 a 03 de maio de 2010.

Introdução à Tecnologia Web HTML HyperText Markup Language XHTML extensible HyperText Markup Language Estrutura Básica do Documento HTML

Tecnologias Internet

Linguagens e Programação XPATH / XSLT. Paulo Proença

Gerenciamento de Dados XML

Recursos Complementares (Tabelas e Formulários)

Documento de Requisitos SISTEMA DE APOIO À ESCRITA (SAPES)

Rui Carneiro, Rui Pereira, Tiago Orfão

XML: uma introdução prática <xml:introdução />

CEEP-CENTRO ESTADUAL DE EDUCAÇÃO PROFISSIONAL PEDRO BOARETTO NETO INTERNET E PROGRAMAÇÃO WEB INICIO DE HTML

Prefeitura de Volta Redonda Secretaria Municipal de Educação Implementação de Informática Aplicada à Educação Oficina de produção de tutoriais

CSS. Cascading Style Sheets Style Sheets

XML para transferência de dados Estrutura hierárquica do XML DTDs e XML Schema Consultas de documentos XML: XPath e XQuery Transformação de

Prova de pré-requisito

Capítulo 9 - Imagens. Imagens

TECNOLOGIA WEB INTRODUÇÃO CONSTRUÇÃO DE PÁGINAS ESTÁTICAS HTML / XHTML

Python Listas e Strings. Listas 23/11/2016. Por que usar listas? Listas. Listas - Solução. Listas - Problema

<!DOCTYPE html> <html lang = "pt-br"> <head> <meta charset = UTF-8"> <title> Exemplo de uso correto da semântica HTML </title> </ head >

Guia de Consulta Rápida XML. Otávio C. Décio. Novatec Editora

Introdução. Introdução a HTML. A Linguagem HTML. Estrutura de uma Página. Mário Antonio Meireles Teixeira

Autoria Web. Professor: Diego Oliveira. Conteúdo 02: Principais Tags HTML

Introdução à Tecnologia Web HTML HyperText Markup Language XHTML extensible HyperText Markup Language Seção do Corpo Elementos Textuais Básicos

Especializado Web Programmer. Sobre o curso. Destinatários. Pré-requisitos. Tecnologias de Informação - Web e Mobile. Promoção: 15% Desconto

Cascading Style Sheets

Autoria Web HTML. Introdução a HTML e as principais tags da linguagem. Thiago Miranda dos Santos Souza

DDL DML DCL DTL Tipos Numéricos: INT FLOAT DOUBLE Tipos String: CHAR VARCHAR BINARY BLOB TEXT Tipos Data e Hora: DATE TIME TIMESTAMP YEAR

Programação de Servidores CST Redes de Computadores

ANEXO B Manual básico de SQL

XML Básico. Murillo Vasconcelos Henriques B. Castro. 17 de maio de 2011

Manual para utilização da funcionalidade de importar arquivo XML para prestação de contas

Boletins Informativos

Dreamweaver CC_15x21.indd 1 06/04/ :04:22

TECNOLOGIAS WEB. Unidade 2 Introdução a Construção de Páginas Estáticas. Luiz Leão luizleao@gmail.com

Transcrição:

Transformação de documentos XML César Vittori cvittori@inf.ufrgs.br Outubro de 2000 Resumo XSLT: Transformações XSL. Transformação de documentos XML. XSLT

Introdução XSLT: transformações XSL (inglês: XSL Transformation ) Transformação de um documento XML para uma representação diferente templates de transformação são aplicados a objetos XML a entrada é sempre XML a saída pode ser XML, HTML, etc. XSLT 1

Padrão XSLT O padrão surge para auxiliar no processo de publicação de um documento transformar um documento XML com uma estrutura arbitrária para um documento que esteja de acordo com a sintaxe FO DTD Embora o padrão tenha sido desenvolvido para transformar XML para XML, é possível obter como saída qualquer formato baseado em texto XSLT 2

Padrão XSLT (cont.) Descreve um mecanismo para transformar dados XML de entrada para uma representação diferente É possível: adicionar prefixos e/ou sufixos ao conteúdo eliminar, criar, reestruturar e ordenar elementos reusar elementos em qualquer parte do documento transformar dados de um formato XML para outro formato baseado em texto (XML, HTML, TeX, etc.) especificar os objetos de formatação XSL que são aplicados a cada classe de elementos XSLT 3

Processador XSLT Um processador XSLT... recebe como entrada um documento XML gera como saída um novo documento XML O documento de saída é estruturado de acordo com uma DTD diferente à DTD de entrada esta transformação é especificada em um style sheet o style sheet segue a sintaxe do padrão XSLT XSLT 4

Style sheets Um style sheet é formado por um conjunto de regras template transformações são executadas de acordo com tais regras Cada regra casa com um tipo de elemento no documento de entrada utilizando expressões XPath As tags originais são substituídas por novas tags de saída XSLT 5

Exemplo: regra simples Texto em itálico é apresentado em linha e com formato negrito <template match="emph"> <fo:inline-sequence font-weight="bold"> <apply-templates/> </fo:inline-sequence> </template> Utilização de namespaces para identificar instruções de transformação e instruções de formatação ( fo: elementos FO DTD) XSLT 6

Gerando conteúdo Um template pode adicionar texto fixo nos dados de saída Exemplo: mensagens de warnings sempre começam com a palavra WAR- NING em negrito <warning>este é um warning</warning> WARNING: Este é um warning *** XSLT 7

Manipulando informação Um style sheet pode: filtrar informação contida no documento de entrada mover informação de um lugar para outro ordenar informação localizar informação e reusá-la em diferentes lugares XSLT 8

Exemplo: localizando e reusando informação <book> <review>este livro trata de <kw>xml</kw> e <kw>xsl</kw>, assim como também <kw>css</kw> é introduzido.</review> </book> A seguinte saída pode ser gerada no documento de saída: KEYWORDS: XML, XSL, CSS Utilidade para construir tabelas de conteúdo, lista de figuras, etc. XSLT 9

Gerando código HTML Um style sheet pode transformar dados XML em sintaxe HTML Exemplo: HTML os parágrafos são transformados para o elemento <P> em <template match="para"> <html:p><apply-templates/></html:p> </template> XSLT 10

Style sheet XSLT Um style sheet XSLT é identificado pelo namespace: http://www.w3.org/xsl/transform/1.0 O formato é definido em uma DTD que descreve elementos e atributos utilizados para construir um style sheet exemplos: apply-templates, for-each, value-of, etc. Um style sheet é um documento XML bem formado XSLT 11

Estrutura geral O elemento raiz é denominado stylesheet O resto dos elementos definidos no padrão formam parte do namespace... <stylesheet xmlns="http://www.w3.org/xsl/transform/1.0">... </stylesheet> O elemento transform pode ser utilizado no lugar do stylesheet XSLT 12

Utilizando mais de um namespace Um style sheet pode conter elementos que não formam parte do padrão utilizados para gerar o documento de saída O namespace destes elementos deve ser declarado <stylesheet xmlns="http://www.w3.org/xsl/transform/1.0"> xmlns:x=".........">...... <X:meu-elemento>... </X:meu-elemento> </stylesheet> XSLT 13

Namespace do resultado O atributo result-ns (Result Namespace) é utilizado para identificar o prefixo que representa o namespace do documento de saída Exemplo: <stylesheet xmlns="http://www.w3.org/xsl/transform/1.0"> xmlns:x="........." result-ns="x"> XSLT 14

Embutindo o style sheet em um documento XML Um style sheet pode estar contido em um documento XML utilidade quando o style sheet somente é aplicado ao documento considerado A instrução de processamento xml-stylesheet no documento XML aponta para o style sheet embutido utilizando uma expressão XPointer o elemento style sheet apontado possui um atributo id XSLT 15

Embutindo o style sheet em um documento XML (cont.) Exemplo: <?xml-stylesheet type="#mystyles"?> <X:book> <stylesheet id="mystyles"... >... </stylesheet>... </X:book> XSLT 16

Espaços brancos O processador XSLT cria uma árvore de nodos quando processa o documento de entrada incluindo nodos para string de texto entre instruções de marcação <book> <para>um parágrafo.</para> </book> Os espaços brancos são preservados por default XSLT 17

Removendo espaços brancos Os espaços brancos são removidos utilizando o atributo default-space no elemento stylesheet Neste caso, o elemento preserve-space é utilizado para especificar uma lista de elementos nos quais os espaços brancos devem ser preservados Exemplo: <stylesheet... default-space="strip"> <preserve-space elements="para title"/> </stylesheet> XSLT 18

Indentando o resultado O atributo indent-result é utilizado para indentar os dados de saída de acordo com sua estrutura hierárquica o default é no Exemplo: <stylesheet... indent-result="yes"> XSLT 19

Espaços brancos em elementos de texto O processador XSLT ignora os espaços brancos sempre que os mesmos não estejam contidos em um elemento de texto o elemento text é utilizado para preservar espaços Exemplo: insere um espaço na saída <text> </text> XSLT 20

Templates Um style sheet é formado por um conjunto de regras template uma regra template é identificada pelo elemento template Sintaxe: <template... >... </template> XSLT 21

Template para um determinado elemento Cada template define a transformação que é aplicada a um elemento no documento de entrada o atributo match casa com um nome de elemento Exemplo: regra para os elementos para <template match="para">... </template> XSLT 22

Expressões XPath no atributo match Regras de matching mais elaboradas podem ser escritas utilizando expressões XPath utilidade quando um elemento deve ser formatado de diferentes formas segundo o seu contexto Exemplo: regra definindo o formato para os parágrafos contidos em elementos warning <template match="warning/para">... </template> XSLT 23

Importando definições Um conjunto de regras podem ser armazenadas em um style sheet e referenciadas por múltiplos style sheets utilidade para compartilhar definições e evitar duplicações O elemento import é utilizado para importar um conjunto de regras <stylesheet... > <import href="tables.xsl"> <import href="colours.xsl"> <template... XSLT 24

Inserindo definições O elemento include é utilizado para inserir regras definidas em outros style sheets <include href="... "> Diferenças entre import e include: na resolução de conflitos quando mais de uma regra existe para um elemento as regras inseridas tomam precedência o elemento include pode ser utilizado em qualquer parte do style sheet, o elemento import somente antes da primeira regra template XSLT 25

Processamento recursivo Para trabalhar com um documento XML é necessário executar um processamento recursivo começando pelo elemento raiz e seus filhos, continuando pelos filhos de cada filho, etc. Em XSLT é necessário especificar quais os elementos da árvore XML que devem ser processados o elemento apply-templates é utilizado para indicar que os filhos do elemento corrente devem ser processados XSLT 26

Processando elementos Exemplo: processa os filhos do elemento para e os filhos do elemento bold <para>uma <bold>palavra</bold> preta.</para> <template match="para"> <apply-templates/> </template> <template match="bold"> <apply-templates/> </template> XSLT 27

Regras default Existem regras default que aplicam a todos os elementos Exemplo: especifica que todos os elementos devem ser processados <template match="/ *"> <apply-templates/> </template> * representa qualquer elemento (padrão XPath) / representa o elemento raiz Comentários e instruções de processamento não são processados por default XSLT 28

Regras default (cont.) As regras default podem ser sobrescritas para modificar seu comportamento exemplo: nenhum elemento é processado incluindo a regra vazia <template match="/ *"> </template> Utilidade para processar determinados elementos na árvore somente serão processados os elementos que casarem com os templates restantes XSLT 29

Regra defaut text() Apresenta o conteúdo texto de cada elemento Exemplo: <template match="text()"> <value-of select="."/> </template> text() representa um string de texto. o elemento corrente value-of insere o valor do elemento selecionado XSLT 30

Processamento seletivo O atributo select do elemento apply-templates é utilizado para selecionar determinados filhos para serem processados e ignorar o resto Exemplo: seleciona os elementos name que possuam um atributo de nome type cujo valor é company <template match="names"> <apply-templates select="name[@type= company ]"/> </template> O valor do atributo corresponde a uma expressão XPath XSLT 31

Selecionando elementos não filhos O operador // representa uma posição arbitrária na árvore Exemplo: insere títulos de capítulos na introdução <template match="intro"> <apply-templates select="//chapter/title"/> </template> XSLT 32

Elemento apply-templates O elemento apply-templates pode aparecer mais de uma vez em um template Exemplo: insere títulos de capítulos após o conteúdo da introdução <template match="intro"> <apply-templates/> <apply-templates select="//chapter/title"/> </template> XSLT 33

Formatos de saída Um processo XSLT produz como saída um novo documento um documento XML estrutura de diferente forma, um documento HTML ou outro formato de texto Elementos inseridos nos templates formam parte da saída gerada Exemplo: um parágrafo corresponde com um elemento P em HTML <template match="para"> <html:p><apply-templates/></html:p> </template> XSLT 34

Inserindo comentários e instruções de processamento Exemplo: o exemplo insere uma instrução de processamento e um comentário antes do corpo da página HTML <template match="book"> <processing-instruction name="acme"> INSERT_TOC <processing-instruction> <comment>este é a versão HTML</comment> <html:body><apply-templates/></html:body> </template> XSLT 35

Inserindo comentários e instruções de processamento (cont.) Saída gerada no exemplo anterior <?ACME INSERT_TOC?> <!--Esta é a versão HTML--> <body>... </body> XSLT 36

Prefixos e sufixos Um template pode adicionar texto ao conteúdo de um elemento prefixo: o texto aparece antes do elemento apply-templates sufixo: o texto aparece depois do elemento apply-templates Exemplo: adiciona o prefixo NOTE: e o sufixo ] ao conteúdo do elemento note <template match="note"> <html:p>note: <apply-templates/> </template> ]</html:p> XSLT 37

Ordenando elementos O elemento sort é utilizado para ordenar uma lista de elementos atua sobre os elementos selecionados pelo elemento apply-templates Os elementos são ordenados no documento de saída XSLT 38

Exemplo: ordenando elementos Exemplo: ordena alfabeticamente a lista de ítens <list> <item>zzz</item> <item>aaa</item> <item>mmm</item> </list> <template match="list"> <apply-templates><sort/></apply-templates> </template> XSLT 39

Ordenando por atributos O atributo select do elemento sort é utilizado para especificar o critério pelo qual ordenar Exemplo: os ítens possuem o atributo sortcode que serve como chave para ordenar a lista <list> <item sortcode="z">... </item> <item sortcode="m">... </item> </list> <sort select="@sortcode"/> XSLT 40

Ordenando por várias chaves É possível utilizar mais de um elemento sort para ordenar elementos em diferentes níveis Exemplo: ordena primeiro por second-name, e depois por first-name no grupo dos elementos de second-name iguais <template> <sort select="second-name"/> <sort select="first-name"/> </template> XSLT 41

Outras características da ordenação O elemento sort possui atributos opcionais que podem ser utilizados o atributo order especifica a ordem: ascending (o default) ou descending o atributo lang especifica a língua utilizada no texto o atributo data-type especifica o tipo: text (o default) ou number para ordenar valores numéricos o atributo case-order XSLT 42

Numeração automática O elemento number é utilizado para numerar os elementos em uma lista de elementos facilita a manutenção da lista de ítens Exemplo: insere o número de seqüência antes do conteúdo do elemento <template match="item"> <number/><apply-templates/> </template> A numeração recomeça em cada elemento item XSLT 43

Numeração automática (cont.) O atributo level do elemento number possibilita diferentes formas de numeração level="single" a numeração recomeça em cada elemento pai level="any" a numeração continua em uma única seqüência level="multiple" possibilita numeração em múltiplos níveis XSLT 44

Numeração em níveis O número inserido consiste de várias partes o atributo format indica o tipo de numeração utilizado em cada nível e a pontuação entre os níveis o atributo count indica os elementos considerados na numeração de múltiplos níveis XSLT 45

Exemplo: numeração em níveis Numerar o título da seção (com uma letra) incluindo o número do capítulo Documento de entrada... <chapter> <section> <title>primeira seção do capítulo um</title>... XSLT 46

Exemplo: numeração em níveis (cont.) <template match="section/title"> <number level="multiple" count="chapter section" format="1.a"/> <apply-templates/> </template> Saída... 1.A Primeira seção do capítulo um 2.C Terceira seção do capítulo dois XSLT 47

Modos O atributo mode do elemento template é utilizado para definir vários templates associados a um elemento utilidade quando um elemento é formatado de diferentes formas segundo o caso Exemplo: títulos de capítulos... os títulos de capítulos são transformados em elementos H1 HTML por default, mas os títulos de capítulos são transformados em elementos H3 HTML quando reusados na introdução XSLT 48

Exemplo: modos <template match="intro"> <apply-templates select="//chapter/title" mode="toc"/> </template> <template match="chapter/title"> <html:h1><apply-templates/></html:h1> </template> <template match="chapter/title" mode="toc"> <html:h3><apply-templates/></html:h3> </template> XSLT 49

Variáveis O elemento variable é utilizado para declarar uma variável o atributo name indica o nome da variável o conteúdo do elemento corresponde ao valor da variável Utilidade para evitar redundância na geração de saída idêntica Exemplo: <variable name="colour">green</variable> XSLT 50

Usando variáveis O atributo select do elemento value-of é utilizado para recuperar o valor da variável o valor do atributo é uma referência a uma variável (identificada pelo símbolo $ ) Exemplo: <html:h1>a cor é <xsl:value-of select="$colour"/>.</html:h1> A cor é green XSLT 51

Usando variáveis em elementos de saída É possível expressar o valor de um atributo utilizando uma variável previamente definida chaves são utilizadas representando uma expressão de texto Exemplo: <variable name= border >3pt</variable>...... <fo:block border-width= {$border} >... XSLT 52

Reusando templates O elemento call-templates é utilizado para invocar um template utilidade para reusar a mesma formatação en vários lugares Funcionamento: 1. o template com a formatação comum é nomeado 2. o template é invocado através do elemento call-template XSLT 53

Exemplo: nomeando um template O atributo name do elemento template é utilizado para associar um nome único ao template <template name="createheader"> <html:hr/> <html:h2>**** <apply-templates/> ****</html:h2> <html:hr/> </template> XSLT 54

Exemplo (cont.): invocando um template O atributo name do elemento call-template é utilizado para invocar o template <template match="title"> <call-template name="createheader"/> </template> <template match="head"> <call-template name="createheader"/> </template> XSLT 55

Definindo parâmetros É possível passar parâmetros a um template utilizade para alterar o funcionamento do template chamado O elemento param é utilizado para definir uma variável o atributo name associa um nome à variável o conteúdo do elemento indica o valor default da variável XSLT 56

Exemplo: definindo parâmetros Exemplo: define uma variável de nome Prefix e valor default *** <template name="createheader"> <param name="prefix">***</param> <html:hr/> <html:h2> <value-of select="$prefix">estrelas! <apply-templates/> </html:h2> <html:hr/> </template> XSLT 57

Invocando um template com parâmetros O elemento with-param é utilizado para passar parâmetros quando um template é invocado Exemplo: o valor passado como parâmetro sobrescreve o valor default da variável <call-template name="createheader"> <with-param name="prefix">*****</param> </call-template> *****estrelas!... XSLT 58

Inserindo o valor de um atributo em um atributo de saída O prefixo @ representa o valor de um atributo Exemplo: insere os valores de dois atributos no atributo de saída name <full-name first="joão" second="silva"/> <template match="full-name"> <X:person name="{@first} {@second}"/> </template> <person name="joão Silva"/> XSLT 59

Inserindo o valor de um atributo no conteúdo de um elemento O elemento value-of insere o valor de um atributo no conteúdo de saída o prefixo @ é utilizado <template match="full-name"> <X:person> <value-of select="@first"/> <value-of select="@second"/> - <apply-templates/> </X:person> </template> XSLT 60

Inserindo o valor de um atributo no conteúdo de um elemento (cont.) Exemplo: insere os valores de dois atributos no conteúdo do elemento person entrada... <full-name first="joão" second="silva"/> saída... <person>joão Silva -... </person> XSLT 61

Criando elementos É possível criar elementos no documento de saída inserindo conteúdo nos templates Exemplo: cria o elemento html:h3 quando encontrado um elemento third-header-level no documento de entrada <template match="third-header-level"> <html:h3> <apply-templates/> </html:h3> </template> XSLT 62

Criando elementos (cont.) O elemento element também pode ser utilizado o atributo name indica o nome do elemento o atributo opcional namespace indica o namespace do elemento Exemplo: equivalente ao exemplo anterior <template match="third-header-level"> <element namespace="html" name="h3"> <apply=templates/> </element> </template> XSLT 63

Copiando elementos O elemento copy é utilizado para criar elementos no documento de saída copiando elementos do documento de entrada Exemplo: agrega um prefixo a todos os cabeçalhos HTML <template match="h1 h2 h3 h4 h5 h6 h7"> <copy> Header: <apply-templates/> </copy> </template> Os atributos do elemento de entrada não são copiados XSLT 64

Criando atributos O elemento attribute é utilizado para criar atributos em um elemento de saída o atributo name indica o nome do atributo criado o atributo namespace indica o namespace do aributo criado o conteúdo do elemento representa o valor do atributo Pode ser utilizado com o elemento element ou com o elemento copy XSLT 65

Exemplo: criando atributos Exemplo: adiciona o atributo style <template match="h1 h2 h3 h4 h5 h6 h7"> <copy> <attribute name="style">color: red</attribute> Header: <apply-templates/> </copy> </template> XSLT 66

Exemplos: Documento XML de entrada <listalivros> <livro> <titulo>projeto de Banco de Dados</titulo> <autor>heuser, Carlos Alberto</autor> <ano>1999</ano> </livro> <livro> <titulo>data on the Web</titulo> <autor>abiteboul, Serge</autor> <ano>2000</ano> </livro> </listalivros> XSLT 67

Exemplo 1 - stylesheet para HTML <xsl:template match="listalivros"> <html> <xsl:apply-templates/> </html> </xsl:template> <xsl:template match="livro"> <P> <xsl:apply-templates/> </P> </xsl:template>...... XSLT 68

Exemplo 1 - documento HTML gerado <html> <P> Projeto de Banco de Dados Heuser, Carlos Alberto 1999 </P> <P> Data on the Web Abiteboul, Serge 2000 </P> </html> XSLT 69

Exemplo 2 - stylesheet para uma representação XML diferente <xsl:template match="listalivros"> <BookList> <xsl:apply-templates/> </BookList> </xsl:template> <xsl:template match="livro"> <Book> <xsl:apply-templates/> </Book> </xsl:template>...... XSLT 70

Exemplo 2 - stylesheet para uma representação XML diferente (cont.) <xsl:template match="autor"> <Author> <xsl:value-of select="."/> </Author> </xsl:template> <xsl:template match="titulo"> <Title> <xsl:value-of select="."/> </Title> </xsl:template> XSLT 71

Exemplo 2 - documento XML gerado <BookList> <Book> <Author>Heuser, Carlos Alberto</Author> <Title>Projeto de Banco de Dados</Title> <Year>1999</Year> </Book> <Book> <Author>Abiteboul, Serge</Author> <Title>Data on the Web</Title> <Year>2000</Year> </Book> </BookList> XSLT 72

Referências Bradley, N. The XML Companion, Second edition. Ed. Addison-Wesley. 2000. Clark, J. "XML Bible: XSL Transformations", Cap. 14. Ed. Elliotte Rusty Harold, 1999. http://metalab.unc.edu/xml/books/bible/updates/14 XSLT 73