Você está na página 1de 27

Linguagens XSL

Tutorial XSLT
Colaborao: Otvio Augusto Bizetto Penatti <<otavio (a) penatti com>> Este tutorial uma traduo do tutorial de XSLT da W3Schools, disponvel em http://www.w3schools.com/xsl/default.asp

Tutorial XSLT
Em nosso tutorial de XSLT voc ir aprender o que o XSLT. Voc aprender como usar o XSLT para transformar documentos XML em outros formatos XML, como o XHTML.

Linguagens XSL
Comeou com XSL e terminou com XSLT, XPath and XSL-FO.

Comeou com XSL


XSL abreviao de eXtensible Stylesheet Language (Linguagem de Folha de Estilos Extensvel). O World Wide Web Consortium (W3C) comeou a desenvolver o XSL porque havia uma necessidade linguagem de filha de estilos baseada em XML.

CSS - Folhas de Estilo para HTML


HTML usa tags predefinidas e os significados das tags so "entendveis". O elemento <table> define uma tabela e o browser sabe como mostr-la. Adicionar estilos elementos HTML tambm simples. Dizer para um browser para mostrar um elemento com uma certa fonte ou cor fcilmente feito com CSS.

XSL - Folhas de Estilo para XML


XML no usa tags predefinidas (as tags podem ser ao "gosto do fregus") e os significados dessas tags so no "interpretveis". A tag <table> pode significar uma tabela HTML ou um mvel, e o browser no sabe como mostr-la.

Introduo ao XSLT

Deve haver algo ento, que adicionado ao documento XML, descreve como o documento deve ser mostrado; e isso o XSL!

XSL - Mais que uma linguagem de folhas de estilos


XSL consiste de 3 partes: XSLT uma linguagem para transformar documentos XML XPath uma linguagem para definir partes de um documento XML XSL-FO uma linguagem para formatar documentos XML Pense em XSL como um conjunto de linguagens que podem transformar XML em XHTML, filtrar e ordenar dados XML, definir partes de um documento XML, formatar dados XML baseados nos valores dos dados, como mostrar valores negativos em vermelho, e exportar dados XML para mdias diferentes, como telas, papel ou voz.

Este tutorial sobre XSLT


O resto do tutorial sobre XSLT - a linguagem para transformar documentos XML. Mas voc tambm pode estudar nosso Tutorial XPath (em ingls ou portugus), Tutorial XSL-FO, W3C XSL activities

Introduo ao XSLT
XSLT uma linguagem para transformar documentos XML em outros documentos XML. XPath uma linguagem para definir partes de um documento XML.

O que voc j deve saber


Antes de estudar XSLT voc deve saber o bsico de XML e XML Namespaces. Se voc quer estudar esses assuntos antes, por favor leia nosso Tutorial XML.

XSLT - Transformaes XSL


XSLT a parte mais importante dos padres XSL. Ele a parte do XSL usada para transformar um documento XML em outro documento XML, ou um outro tipo de documento que reconhecido por um browser, como HTML e XHTML. Normalmente

Browsers XSLT

XSLT faz isso transformando cada elemento XML em um elemento (X)HTML. XSLT tambm pode adicionar novos elementos no arquivo de sada, ou remover elementos. Ele pode rearranjar e ordenar elementos, testar e tomar decises sobre quais elementos mostrar, e muito mais. Um modo comum de descrever o processo de transformao dizer que o XSLT transforma uma rvore de origem XML em uma rvore de resultado XML.

XSLT usa XPath


XSLT usa o XPath para definir os padres combinantes para as transformaes. Se voc quiser estudar XPath primeiro, por favor leia o nosso Tutorial de XPath.

Como ele trabalha?


No processo de transformao, XSLT usa XPath para definir partes do documento de origem que combinam com um ou mais moldes. Quando uma combinao encontrada, XSLT transformar a parte combinante do documento de origem no documento de resultado. As partes do documento de origem que no combinam com um molde permanecero sem modificaes no documento de resultado.

XSLT um padro Web


XSLT tornou-se uma Recomendao W3C em 16 de Novembro de 1999. Para ler mais sobre as atividades XSLT na W3C por favor leia o nosso Tutorial W3C

Browsers XSLT
No so todos os browsers de Internet que tm suporte completo ao XSLT.

Internet Explorer 5 no bom


XSLT no Internet Explorer 5 NO compatvel com a Recomendao Oficial W3C XSL. Quando o Internet Explorer 5 foi liberado em Maro de 1999, o padro XSLT ainda era um rascunho da W3C.

Internet Explorer 5 no bom

Como a Recomendao final W3C XSL diferente do rascunho, o suporte para XSL no IE 5 no 100% compatvel com a Recomendao Oficial XSLT. Esta restrio aplica-se para ambos IE 5 e IE 5.5.

Internet Explorer 6 melhor


Internet Explorer 6 tem suporte completo Recomendao Oficial W3C XSLT. O XML Parser 3.0 - lanado com o Internet Explorer 6 e o Windows XP - baseado em ambas Recomendaes W3C XSLT 1.0 e W3C XPath 1.0. Se voc realmente quer aprender XSLT voc deve atualizar para o Internet Explorer 6.0.

Netscape 6
Netscape 6 no suporta completamente a Recomendao Oficial W3C XSLT. Contudo, a maioria dos exemplos nesse tutorial tambm funcionaro no Netscape 6.

Netscape 7
Netscape 7 suporta a Recomendao Oficial W3C XSLT.

Internet Explorer MSXML Parser


MSXML Parser 2.0 o XML Parser que foi lanado com o IE 5. MSXML Parser 2.5 o XML Parser que foi lanado com o Windows 2000 e o IE 5.5. MSXML Parser 3.0 o XML Parser que foi lanado com o IE 6 e o Windows XP. Segundo a Microsoft, o MSXML Parser 3.0 100% compatvel com a Recomendao Oficial W3C XSLT: "MSXML 3.0 oferece um avano significativo sobre o MSXML 2.5: acesso HTTP server-safe, implementao completa do XSLT e XPath, mudanas no SAX (Simple API for XML), maior adaptao com os padres W3C, e vrios bugs corrigidos." Para mais informaes: http://msdn.microsoft.com/xml/general/xmlparser.asp Voc pode ler mais sobre as ltimas releases do IE na nossa Seo de Browsers.

XSLT - Transformaes

XSLT - Transformaes
Exemplo de estudo: Como transformar XML em XHTML usando XSLT. Os detalhes deste exemplo sero explicados no prximo captulo.

Declarao Correta da Folha de Estilos


O elemento raiz que declara o documento a ser uma folha de estilos XSL <xsl:stylesheet> ou <xsl:transform>. Nota: <xsl:stylesheet> e <xsl:transform> so completamente sinnimos e um ou outro pode ser usado! A maneira correta de declarar uma folha de estilos XSL de acordo com a Recomendao W3C XSLT :
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

ou:
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

Nota: O xmlns:xsl="http://www.w3.org/1999/XSL/Transform" identifica a Recomendao Namespace oficial W3C XSL. Se voc usa este namespace, voc tambm deve incluir o atributo version="1.0". Nota: Se voc est usando o IE 6 ou o Netscape 6 voc deve usar um dos cdigos acima.

Declarao Incorreta da Folha de Estilos


Essa foi a maneira correta de declarar uma folha de estilos XSL de acordo com o rascunho W3C XSL:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">

Nota: A declarao acima ANTIGA, mas se voc estiver usando o IE 5 voc poder usar o cdigo (incorreto) acima.

Comece com o seu documento XML

Comece com o seu documento XML


Ns queremos transformar o seguinte documento XML ("cdcatalog.xml") em XHTML:
<?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> . . . </catalog>

Para visualizar um documento XML/XSL no IE 5 (ou mais novo) e Netscape 7 voc pode clicar em um link, digitar a URL na barra de endereos ou dar um duplo clique no nome de um arquivo XML em uma pasta de arquivos. Para visualizar um documento XML/XSL no Netscape 6 voc ter que abrir o arquivo XML e ento clicar com o boto direito do mouse e escolher "View Page Source". Ver arquivo XML

Crie uma folha de estilos XSL


Ento voc cria uma folha de estilos XSL ("cdcatalog.xsl") com um molde de tranformao:
<?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 align="left">Title</th> <th align="left">Artist</th> </tr> <xsl:for-each select="catalog/cd"> <tr>

Crie uma folha de estilos XSL

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

Ver arquivo XSL

Junte a folha de estilos XSL ao documento XML


Finalmente, adicione uma referncia folha de estilos XSL em seu documento XML ("cdcatalog.xml"):
<?xml version="1.0" encoding="ISO-8859-1"?> <?xml-stylesheet type="text/xsl" href="cdcatalog.xsl"?> <catalog> <cd> <title>Empire Burlesque</title> <artist>Bob Dylan</artist> <country>USA</country> <company>Columbia</company> <price>10.90</price> <year>1985</year> </cd> . . . </catalog>

Se voc tiver um browser complacente com XSLT ele transformar bem seu XML em XHTML! Veja o resultado no IE 6 ou Netscape 6 e 7 Veja o resultado no IE 5

Exemplo explicado
Os detalhes do exemplo acima sero explicados nos prximos captulos!

O elemento <xsl:template>

O elemento <xsl:template>
Uma folha de estilos XSL consiste de um conjunto de regras chamados moldes (templates). Cada elemento <xsl:template> contm regras para aplicar quando um n especfico combinado.

XSLT usa Moldes


O elemento <xsl:template> contm regras a serem aplicadas quando um n especfico combinado (matched). O atributo match usado para associar o molde com um elemento XML. O atributo match tambm pode ser usado para definir um molde para toda uma seo de um documento XML (por exemplo, match="/" define o documento todo). A folha de estilos XSL a seguir contm um molde para emitir o Catlogo de CDs XML do captulo anterior:
<?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>.</td> <td>.</td> </tr> </table> </body> </html> </xsl:template> </xsl:stylesheet>

Como a folha de estilos tambm um documento XML, o documento comea com uma declarao xml: <?xml version="1.0" encoding="ISO-8859-1"?>.

O elemento <xsl:value-of>

A tag <xsl:stylesheet> define o incio da folha de estilos. A tag <xsl:template> define o incio de um molde. O atributo match="/" associa (combina) o molde com a raiz (/) do documento XML de origem. O resto do documento contm o molde propriamente dito, exceto pelas duas ltimas linhas que definem o fim do molde e o fim da folha de estilos. O resultado da transformao ser como isso: My CD Collection Title . . Artist

Se voc tem o Netscape 6 ou IE 5 ou superior voc pode ver: o arquivo XML, o arquivo XSL e o resultado. O resultado desse exemplo foi um pouco decepcionante, porque nenhum dado foi copiado do documento XML para o resultado. No prximo captulo voc aprender a usar o elemento <xsl:value-of> para selecionar o valor de um elemento XML.

O elemento <xsl:value-of>
O elemento <xsl:value-of> extrai o valor de um n selecionado.

O elemento <xsl:value-of>
O elemento <xsl:value-of> pode ser usado para selecionar o valor de um elemento XML e adicion-lo no resultado da transformao:
<?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>

O elemento <xsl:for-each>

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

Nota: O valor do atributo select requerido contm uma expresso XPath. Ela funciona como a navegao num sistema de arquivos onde uma barra frente (/) seleciona subdiretrios.

O resultado
O resultado da transformao ser parecido com isso: My CD Collection Title Empire Burlesque Artist Bob Dylan||

Se voc tem o Netscape 6 ou IE 5 ou superior voc pode ver o arquivo XML e o arquivo XSL. Veja o resultado no IE6 ou Netscape 6 e 7 Veja o resultado no IE 5 O resultado desse exemplo tambm foi um pouco decepcionante, pois somente uma linha de dados foi copiada do documento XML para o resultado. No prximo captulo voc aprender como usar o elemento <xsl:for-each> para selecionar valores de vrios elementos XML, e adicion-los ao resultado.

O elemento <xsl:for-each>
O elemento <xsl:for-each> permite a voc fazer iteraes (loops) em XSLT.

10

O elemento <xsl:for-each>

O elemento <xsl:for-each>
O elemento XSL <xsl:for-each> pode ser usado para selecionar todo elemento XML de um conjunto de ns especfico :
<?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"> <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>

Nota: O valor do atributo select requerido contm uma expresso XPath. Ela funciona como a navegao num sistema de arquivos onde uma barra frente (/) seleciona subdiretrios.

O resultado
O resultado da transformao ser como esse: My CD Collection Title Empire Burlesque Hide your heart Greatest Hits Artist Bob Dylan Bonnie Tyler Dolly Parton

11

O resultado

Still got the blues Eros One night only Sylvias Mother Maggie May Romanza When a man loves a woman Black angel 1999 Grammy Nominees For the good times Big Willie style Tupelo Honey Soulsville The very best of Stop Bridge of Spies Private Dancer Midt om natten Pavarotti Gala Concert The dock of the bay Picture book Red Unchain my heart

Gary More Eros Ramazzotti Bee Gees Dr.Hook Rod Stewart Andrea Bocelli Percy Sledge Savage Rose Many Kenny Rogers Will Smith Van Morrison Jorn Hoel Cat Stevens Sam Brown T`Pau Tina Turner Kim Larsen Luciano Pavarotti Otis Redding Simply Red The Communards Joe Cocker

Se voc tem o Netscape 6 ou IE 5 ou superior voc pode ver o arquivo XML e o arquivo XSL. Veja o resultado com o Netscape 6 ou IE 6

12

Filtrando a sada

Veja o resultado com o IE 5

Filtrando a sada
Ns podemos filtrar a sada de um arquivo XML adicionando um critrio ao atributo select de um elemento <xsl:for-each>. <xsl:for-each select="catalog/cd[artist='Bob Dylan']"> Operadores de filtragem vlidos so: = (igual) != (diferente) &lt; (menor que) &gt; (maior que) D uma olhada na folha de estilos XSL ajustada:
<?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> <th>Title</th> <th>Artist</th> </tr> <xsl:for-each select="catalog/cd[artist='Bob Dylan']"> <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>

O resultado
O resultado da transformao ser esse:

13

O elemento <xsl:sort>

My CD Collection Title Empire Burlesque Artist Bob Dylan

Se voc tem o Netscape 6 ou o IE 5 ou superior voc pode ver: o arquivo XML e o arquivo XSL. Veja o resultado com o Netscape 6 ou IE 6 Veja o resultado com o IE 5

O elemento <xsl:sort>
O elemento <xsl:sort> usado para ordenar o resultado.

Onde colocar a Informao de Ordenao


Para gerar um arquivo XML como um arquivo XHTML, e orden-lo ao mesmo tempo, simplesmente adicione um elemento sort dentro de um elemento for-each no seu arquivo 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> <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>

14

Onde colocar a Informao de Ordenao

</xsl:template> </xsl:stylesheet>

O atributo select indica qual elemento XML a ordenar.

O resultado
O resultado da transformao ser esse: My CD Collection Title Romanza One night only Empire Burlesque Hide your heart The very best of Greatest Hits Sylvias Mother Eros Still got the blues Unchain my heart Soulsville For the good times Midt om natten Pavarotti Gala Concert 1999 Grammy Nominees The dock of the bay When a man loves a woman Maggie May Stop Artist Andrea Bocelli Bee Gees Bob Dylan Bonnie Tyler Cat Stevens Dolly Parton Dr.Hook Eros Ramazzotti Gary Moore Joe Cocker Jorn Hoel Kenny Rogers Kim Larsen Luciano Pavarotti Many Otis Redding Percy Sledge Rod Stewart Sam Brown

15

O elemento <xsl:if>

Black angel Picture book Bridge of Spies Red Private Dancer Tupelo Honey Big Willie style

Savage Rose Simply Red T`Pau The Communards Tina Turner Van Morrison Will Smith

Se voc tem o Netscape 6 ou o IE 5 ou superior voc pode ver: o arquivo XML e o arquivo XSL. Veja o resultado com o Netscape 6 ou IE 6 Nota: No possivel ver o resultado com o IE 5, porque o namespace "http://www.w3.org/TR/WD-xsl" no intrepreta o elemento <xsl:sort>.

O elemento <xsl:if>
O elemento <xsl:if> contm um padro que s ser aplicado se uma condio especfica for verdadeira.

Onde colocar a condio IF


Para colocar um teste condicional frente ao contedo de um arquivo, simplesmente adicione um elemento <xsl:if> no documento XSL como abaixo: <xsl:if test="price &gt; 10"> alguma saida... </xsl:if> O valor do atributo obrigatrio test a expresso a ser avaliada. D uma olhada na folhas de estilos XSL ajustada:
<?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">

16

Onde colocar a condio IF

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

O cdigo acima somente seleciona o ttulo e artista SE o preo do cd for maior que 10.

O resultado
O resultado da transformao ser esse: My CD Collection Title Empire Burlesque Still got the blues One night only Romanza Black Angel Artist Bob Dylan Gary Moore Bee Gees Andrea Bocelli Savage Rose

1999 Grammy Nominees Many Se voc tem o Netscape 6 ou o IE 5 ou superior voc pode ver: o arquivo XML e o arquivo XSL. Veja o resultado com o Netscape 6 ou IE 6 Nota: No possivel ver o resultado com o IE 5, porque o namespace "http://www.w3.org/TR/WD-xsl" no interpreta o elemento <xsl:if>.

17

O elemento <xsl:choose>

O elemento <xsl:choose>
O elemento <xsl:choose> usado em conjunto com <xsl:when> e <xsl:otherwise> para expressar mltiplos testes condicionais.

Onde colocar a condio Choose


Para inserir o teste condicional choose frente ao contedo de um arquivo XML, simplesmente adicione os elementos <xsl:choose>, <xsl:when> e <xsl:otherwise> no seu arquivo XSL como abaixo: <xsl:choose> <xsl:when test="price &gt; 10"> ...algum cdigo... </xsl:when> <xsl:otherwise> ...algum cdigo... </xsl:otherwise> </xsl:choose> Veja a folha de estilos XSL ajustada:
<?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"> <tr> <td><xsl:value-of select="title"/></td> <xsl:choose> <xsl:when test="price &gt; 10"> <td bgcolor="FF000FF"> <xsl:value-of select="artist"/> </td> </xsl:when> <xsl:otherwise> <td><xsl:value-of select="artist"/></td> </xsl:otherwise> </xsl:choose> </tr> </xsl:for-each> </table> </body> </html> </xsl:template>

18

Onde colocar a condio Choose

</xsl:stylesheet>

O cdigo acima ir colorir o fundo da coluna artista de rosa QUANDO (WHEN) o preo do cd for maior que 10.

O resultado
Se voc tem o Netscape 6 ou o IE 5 ou superior voc pode ver: o arquivo XML e o arquivo XSL. Veja o resultado com o Netscape 6 ou IE 6 Nota: No possivel ver o resultado com o IE 5, porque o namespace "http://www.w3.org/TR/WD-xsl" no interpreta o elemento <xsl:choose>.

Um outro exemplo
Aqui est um outro exemplo que contm vrios elementos <xsl:when>:
<?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"> <tr> <td><xsl:value-of select="title"/></td> <xsl:choose> <xsl:when test="price &gt; 10"> <td bgcolor="#ff00ff"> <xsl:value-of select="artist"/> </td> </xsl:when> <xsl:when test="price &gt; 9 and price &lt;= 10"> <td bgcolor="#CCCCCC"> <xsl:value-of select="artist"/> </td> </xsl:when> <xsl:otherwise> <td><xsl:value-of select="artist"/></td> </xsl:otherwise>

19

O elemento <xsl:apply-templates>

</xsl:choose> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet>

O cdigo acima ir colorir o fundo coluna artista de rosa QUANDO (WHEN) o preo do cd for maior que 10 e ir colorir de cinza QUANDO (WHEN) o preo do cd for maior que 9 e menor ou igual a 10.

O resultado
Se voc tem o Netscape 6 ou o IE 5 ou superior voc pode ver: o arquivo XML e o arquivo XSL. Veja o resultado com o Netscape 6 ou IE 6 Nota: No possivel ver o resultado com o IE 5, porque o namespace "http://www.w3.org/TR/WD-xsl" no interpreta o elemento <xsl:choose>.

O elemento <xsl:apply-templates>
O elemento <xsl:apply-templates> aplica uma regra de molde ao elemento corrente ou aos ns filhos do elemento corrente.

O elemento <xsl:apply-templates>
O elemento <xsl:apply-templates> aplica uma regra de molde ao elemento corrente ou aos ns filhos do elemento corrente. Se ns adicionarmos um atributo de seleo ao elemento <xsl:apply-templates> ele ir processar somente o elemento filho que combinar com o valor do atributo. Ns podemos usar o atributo de seleo para especificar a ordem na qual os ns filhos so processados. Veja a folha de estilos XSL abaixo:
<?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="/">

20

XSLT - No Cliente

<html> <body> <h2>My CD Collection</h2> <xsl:apply-templates/> </body> </html> <xsl:template match="cd"> <p> <xsl:apply-templates select="title"/> <xsl:apply-templates select="artist"/> </p> </xsl:template> <xsl:template match="title"> Title: <span style="color:#FF0000"> <xsl:value-of select="."/></span> <br/> </xsl:template> <xsl:template match="artist"> Artist: <span style="color:#00FF00"> <xsl:value-if select="."/></span> <br/> </xsl:template> </xsl:stylesheet>

O resultado
Se voc tem o Netscape 6 ou o IE 5 ou superior voc pode ver: o arquivo XML e o arquivo XSL. Veja o resultado com o Netscape 6 ou IE 6 Nota: No possivel ver o resultado com o IE 5, porque o namespace "http://www.w3.org/TR/WD-xsl" no interpreta o elemento <xsl:apply-templates>.

XSLT - No Cliente
Se o seu browser suporta XSLT, este pode ser usado para transformar o documento em XHTML no seu browser.

Uma soluo JavaScript


No captulo anterior nos explicamos como o XSLT pode ser usado para transformar um

21

Uma soluo JavaScript

documento de XML para XHTML. Ns adicionamos uma folha de estilos XSL ao arquivo XML e deixamos o browser fazer a transformao. Mesmo que isso funcione bem, nem sempre desejvel incluir uma referncia a uma folha de estilos no arquivo XML (isto , no funcionar num browser que no reconhece XSLT.) Uma soluo mais verstil seria usar um JavaScript para fazer a transformao XML em XHTML. Usando JavaScript ns podemos: fazer testes para browsers especficos usar diferentes folhas de estilos de acordo com o browser e com as necessidades do usurio Essa a beleza do XSLT. Um dos objetivos desenhados para o XSLT era o de tornar possvel transformar dados de um formato para outro, suportando browsers diferentes e necessidades de usurios diferentes. A transformao XSLT do lado do cliente est para ser uma das maiores tarefas para os browsers no futuro, como ns veremos um crescimento no mercado de browsers especializados (Braille, browsers para deficientes auditivos, impressoras web, dispositivos handhelds, etc.)

O arquivo XML e o arquivo XSL


D uma nova olhada no arquivo XML que ns vimos nos captulos anteriores:
<?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> . . . </catalog>

Se voc tem o Netscape 6 ou o IE 5 ou superior voc pode ver o arquivo XML.

22

O arquivo XML e o arquivo XSL

E a folha de estilos 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> <body> <h2>My CD Collection</h2> <table border="1"> <tr bgcolor="#9ACD32"> <th align="left">Title</th> <th align="left">Artist</th> </tr> <xsl:for-each select="catalog/cd"> <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>

Se voc tem o Netscape 6 ou o IE 5 ou superior voc pode ver o arquivo XSL. Nota: Perceba que o arquivo XML no tem uma referncia para o arquivo XSL. IMPORTANTE: A nota acima indica que um arquivo XML pode ser transformado usando muitos arquivos XSL diferentes.

Transformando XML em XHTML no seu browser


Aqui est o cdigo fonte necessrio para transformar o arquivo XML em XHTML no cliente:
<html> <body> <script type="text/javascript"> //Carrega o XML var xml = new ActiveXObject("Microsoft.XMLDOM") xml.async = false xml.load("cdcatalog.xml")

23

XSLT - No Servidor

//Carrega o XSL var xsl = ActiveXObject("Microsoft.XMLDOM") xsl.async = false xsl.load("cdcatalog.xsl") //Transforma document.write(xml.transformNode(xsl)) </script> </body> </html>

Se voc no sabe JavaScript, voc pode estudar pelo nosso tutorial Javascript. O primeiro bloco de cdigo cria uma instncia do Microsoft XML parser (XMLDOM) e carrega o documento XML na memria. O segundo bloco de cdigo cria uma outra instncia do parser e carrega o documento XSL na memria. A ltima linha de cdigo transforma o documento XML usando o documento XSL, e escreve o resultado no documento XHTML. Legal! Se voc tem o IE 6.0: Veja como funciona. Se voc tem o IE 5.0: Veja como funciona.

XSLT - No Servidor
Como nem todos os browsers suportam XSLT, uma soluo transformar o XML em XHTML no servidor.

A Cross Browser Solution (??)


No captulo anterior ns explicamos como XSLT pode ser usado para transformar um documento XML em XHTML no browser. Ns deixamos um JavaScript usar um parser XML para fazer a transformao. Esta soluo no funcionar em um browser que no suporte um parser XML. Para fazer os dados XML disponveis para todo tipo de browser, ns temos que transformar o documento XML no SERVIDOR e envi-lo como XHTML puro para o BROWSER. Essa uma outra beleza do XSLT. Um dos objetivos desenhados para o XSLT era o de tornar possvel transformar dados de um formato para outro em um servidor, retornando dados legveis para todos os tipos de browsers futuros.

24

A Cross Browser Solution (??)

A transformao XSLT no servidor est para ser uma das maiores tarefas do Servidor de Informaes de Internet (Internet Information Server) no futuro, assim como veremos um crescimento no mercado de browsers especializados (Braille, browsers para deficientes auditivos, impressoras web, dispositivos handheld, etc.)

O arquivo XML e o arquivo XSL


D uma nova olhada no arquivo XML que ns vimos nos captulos anteriores:
<?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> . . . </catalog>

Se voc tem o Netscape 6 ou o IE 5 ou superior voc pode ver o arquivo XML. E a folha de estilos 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> <body> <h2>My CD Collection</h2> <table border="1"> <tr bgcolor="#9ACD32"> <th align="left">Title</th> <th align="left">Artist</th> </tr> <xsl:for-each select="catalog/cd"> <tr> <td><xsl:value-of select="title"/></td> <td><xsl:value-of select="artist"/></td> </tr> </xsl:for-each> </table> </body> </html>

25

Referncias

</xsl:template> </xsl:stylesheet>

Se voc tem o Netscape 6 ou o IE 5 ou superior voc pode ver o arquivo XSL. Nota: Perceba que o arquivo XML no tem uma referncia para o arquivo XSL. IMPORTANTE: A nota acima indica que um arquivo XML pode ser transformado usando muitos arquivos XSL diferentes.

Transformando XML em XHTML no Servidor


Aqui est o cdigo fonte necessrio para transformar o arquivo XML em XHTML no servidor:
<% 'Carrega o XML set xml = Server.CreateObject("Microsoft.XMLDOM") xml.async = false xml.load(Server.MapPath("cdcatalog.xml")) 'Carrega o XSL set xsl = Server.CreateObject("Microsoft.XMLDOM") xsl.async = false xsl.load(Server.MapPath("cdcatalog.xsl")) 'Transforma o arquivo Response.Write(xml.transformNode(xsl)) %>

Dica: Se voc no conhece ASP, voc pode estudar nosso tutorial ASP. O primeiro bloco de cdigo cria uma instncia do Microsoft XML parser (XMLDOM) e carrega o arquivo XML na memria. O segundo bloco de cdigo cria uma outra instncia do parser e carrega o documento XSL na memria. A ltima linha de cdigo transforma o documento XML usando o documento XSL, e escreve o resultado para o browser. Legal! Veja como funciona.

Referncias
Elementos XSLT Funes XSLT

26

As Palavras Mais Comuns da Lingua Inglesa

Verso Original: http://www.dicas-l.com.br/dicas-l/20050315.php

As Palavras Mais Comuns da Lingua Inglesa


O livro As Palavras Mais Comuns da Lngua Inglesa apresenta uma metodologia desenvolvida com o objetivo de prover o estudante com tcnicas que lhe permitam aprender, em um curto espao de tempo, a ler textos em ingls. Saiba mais: http://www.novatec.com.br/livros/linguainglesa2/

27

Você também pode gostar