Escolar Documentos
Profissional Documentos
Cultura Documentos
LINGUAGENSXSLEXSLT
Verso1.0
1/29
Apresentao
Este tutorial foi desenvolvido com a finalidade de orientar as Casas Legislativas, que utilizam o
SAPL na elaborao de documentos e/ou proposies legislativas, a realizarem customizaes nas
respectivas folhas de estilo armazenadas em XML. Para isso, utiliza as linguagens XSL (eXtensible
Stylesheet Language Linguagem de folha de estilo extensvel) e a XSLT ( eXtensible Stylesheet
Language Transformations Transformaos do XSL) para a estilizao e a formatao desses
documentos.
Estaaverso1.0quejseencontradisposioparauso.
AComunidadeLegislativapodersugerire/oupromover melhoriasquejulgarpertinentessegundo
suasnecessidades.
RequisitosTcnicosMnimos
ConhecimentosbsicosnaslinguagensXML,HTML,CSSeediodetextos.
2/29
Sumrio
Apresentao....................................................................................................................2
RequisitosTcnicos...........................................................................................................2
1.XML(eXtensibleMarkup Language)..........................................................................4
1.1.
XMLBSICO..........................................................................................4
2.XML(eXtensibleStylesheet
2.1.
2.2.
2.3.
2.4.
2.5.
Language)..............................................................6
XSLBSICO............................................................................................6
ESTRUTURADEUMXSLBSICO...................................................8
PRINCIPAISELEMENTOSXSL.........................................................10
EXTENSESXSL..................................................................................14
XSLaplicadoaoSAPL.........................................................................14
3/29
1.
XML(EXtensibleMarkupLanguage)
1.1.
XMLBSICO
REPRESENTAOEMXML
<?xml version="1.0"?>
<email>
<from>Pedro</from>
Desde j, obrigado!
<to>Mrio</to>
Pedro Magalhes
<thank>Desde j, obrigado!</thank>
<sign>Pedro Magalhes</sign>
</email>
Observeque:
4/29
ISO88591
H uma hierarquiaentreastags/elementosouns.Observequeasindentaes,almdas
tags, ajudam a representar melhor a hierarquia numa estrutura do tipo pai, filhos, netos...,
conformesegue:
<raiz>
<filho1>
<neto1>
</neto1>
</filho1>
</raiz>
Toda tag/elemento deve iniciar com o padro < > e terminar/fechar com a mesma tag
iniciada,porm,acrescidadeumabarra</>,p.ex:<teste>exemplo</teste>
todastags/nspodemteratributosparadescreveroselementos:
EXEMPLO 1
<?xml version="1.0"?>
EXEMPLO 2
<?xml version="1.0"?>
<pessoa sexo=masculino>
<pessoa>
<sexo>masculino</sexo>
<nome>Pedro</nome>
<nome>Pedro</nome>
<sobrenome>Mrio</sobrenome
>
<sobrenome>Mrio</sobrenome>
</pessoa>
</pessoa>
No exemplo1,sexoumelemento,pormjnoexemplo2umatributodoelementopessoa.
5/29
2.
CURSOGRATUITO: http://www.w3schools.com/xml
TESTEDECONHECIMENTO:http://www.w3schools.com/xml/xml_quiz.asp
CERTIFICAOXML(U$95):http://www.w3schools.com/cert
XSL(eXtensibleStylesheetLanguage)
2.1.
XSLBSICO
APRESENTAOVIABROWSER
<?xmlversion="1.0"?>
<aviso>
<para>Janicedata="01/04/2000"</para>
<de>Jefferson</de>
<cabecalho>Lembrese</cabecalho>
<corpo>Amanhavocetemprovade
matematica</corpo>
</aviso>
6/29
<?xmlversion="1.0"?>
COMENTRIOS
Declarao/especificaodotipode
documento,quenestecasoXML.
Obrigatrio?
SIM
Declarao/especificaoPADROda
<xsl:stylesheetversion="1.0"
linguagemXSLdeacordocomos
xmlns:xsl="http://www.w3.org/1999/XS
padresdaW3CparaTransformaesno
L/Transform">
SIM
XML.
ElementodeInciopadrodaraiz
principal('/')doXSL
<xsl:templatematch="/">
Exemplodousodoelementoforeachdo
<xsl:foreachselect="xxxxx"> XSLparafazerloopquandosequer
aplicarosestilosparacadaelementox
encontradonoxml
</xsl:foreach>
Todoelementoiniciadodeveser
finalizado/fechado!Nestecasofoi
finalizadooforeach.
DEPENDE
...
QualqueroutroelementodoXSL,assim
comooforeach,desdequenose
esqueadefechalo.
DEPENDE
</xsl:template>
Todoelementoiniciadodeveser
7/29
SIM
DEPENDE
SIM
finalizado/fechado!Nestecasoo
fechamentodotemplateraiz.
FimdodocumentoXSL.
</xsl:stylesheet>
SIM
OcdigofonteapresentadoacimaapenasaestruturadoXSLpuro,ondetemos:
asdeclaraesdecabealho(stylesheet)
oinciodaraiz/diretrioprincipal(templatematch)
algicaadequadaparaleituradoXML(foreach)
finalizaesdatagraiz.
OBS: As indentaes representam a hierarquia,obedecendoasmesmasregrasdepais,filhos,netos...,do
XML.
2.2.
ESTRUTURADEUMXSLBSICO
OXSLdivideseemtrspartes:
XSLTransformations(XSLT):LinguagemparatransformarXML
XPath:LinguagemparaacessarereferiraspartesdedocumentoXML
XSLFO:VocabulrioXMLparaespecificarsemnticasdeformatao.
As trs so importantes, porm s trataremos a XSLT,necessriacriao dosmodelos/leiautes
dedocumentoslegislativosnoSAPL.
Como exemplo, ser criado o arquivo aviso.xsl para testes em computador local, especificando
cada linha de cdigo, pelos comentrios abaixo, passoapasso de modo a permitir maior clareza, como
segue:
1PASSOcriar,nomearesalvarumarquivovaziodetextocomoaviso.xsl
2PASSOcopiarastagsbsicasdopadroXSLconformeabaixoe,emseguida,salvalas:
CDIGOFONTEaviso.xsl
<?xmlversion="1.0"?>
<xsl:stylesheetversion="1.0"xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:templatematch="/">
8/29
</xsl:template>
</xsl:stylesheet>
3PASSOcriaraestruturaHTML+CSSe,emseguida,salvala:
OBS:oCSSpodeserusadodentrodatagstyle(nfilhonohtml)ouemcadaelementodo
prprioHTML.
CDIGOFONTEaviso.xsl
<?xmlversion="1.0"?>
<xsl:stylesheetversion="1.0"xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:templatematch="/">
<html>
<style type="text/css">
</style>
<body>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Esta a estrutura bsica do XSL e est pronta para iniciar o configurao/programao dos
estilosdosXMLs.Observeque:
Elementos do HTML e/ou CSS s podem estar dentro dos elementos template, assim como
nveis filhos, netos, etc.... Ou seja, entre as tags <xsl:templatematch="/">e</xsl:template>
nenhumelementodeveconstaraps</xsl:tamplate>ede</xsl:stylesheet>
A partir deste ponto, podese utilizar todas as ferramentas/recursos que o HTML e/ou CSS
fornecemparaumapgina/documentodatag<html>at</html>
9/29
2.3.
PRINCIPAISELEMENTOSXSL
Neste momento, a parte mais importante e esperada a de busca das informaes do arquivo
XML para povoar a pgina html ou, o documento de sada tratado neste escopo. Para que cada
informao especfica aparea na pgina/documento, necessrio conheceroselementosdoXSL,pois,
atravs deles que, por sua semntica, sero buscadas as informaes no/do documento XML dado a
tag/nreferente,destinadasaoplano/configuraofeitanoarquivofonteXSL.
ElementosXSL
applyimports
Aplicaumaregradotemplatedeumafolhadeestiloimportado.
applytemplates
Aplicaumaregradotemplatenoelementocorrenteounosnveisfilhos
doelementocorrente.
attribute
Adicionaumatributo.
attributeset
Defineumconjuntodeatributos.
calltemplate
Fazumachamadaaumtemplate.
choose
Usadoemconjuntocom<when>and<otherwise>paraexpressar
mltiplostestescondicionais.
comment
Criaumncomentadonarvoreresultante.
copy
Criaumacpiadoncorrente(semosnveisfilhoseatributos).
copyof
Criaumacpiadoncorrente(comosnveisfilhoseatributos).
decimalformat
Defineoscaracteresesmbolosaseremusadosquandoseconverte
nmerosemstrings,comafunoformatnumber().
element
Criaumelementonodocumentodesada.
fallback
Especificaumcdigoalternativopararodarseoprocessadorno
suportarumelementoXSLT.
foreach
Comandoderepetioparacadanemumnespecfico.
if
Aplicatemplate(s)apenasseacondioespecificadaforverdadeira.
import
Importaocontedodeumafolhadeestiloemoutra.Nota:Umafolha
deestiloimportadaterprioridadeinferiordaquelaqueaimportou.
10/29
include
Incluiocontedodeumafolhadeestiloemoutra.
Nota:Umafolhadeestiloinclusateramesmaprioridadedafolhade
estiloqueaincluiu.
key
Declaraumachavenomeada,quepodeserusadanafolhadeestilocom
afunokey().
message
Escreveumamensagemdesada(usadoparareportarerros).
namespacealias
Substituiumnamespacenafolhadeestilocomumnamespacediferente
nasada.
number
Determinaaposiointeiradoncorrenteeformataumnmero.
otherwise
Especificaumaaodefaultparaoelemento<choose>.
output
Defineoformatododocumentodesada.
param
Declaraumparmetrolocalouglobal.
preservespace
Defineoelementoparacadaespaoembrancoaserpreservado.
processinginstruction Escreveumainstruodeprocessamentonasada.
sort
Ordenaasada.
stripspace
Defineoelementoespaoembrancoaserremovido.
stylesheet
Defineoelementoraizdafolhadeestilo.
template
Regrasaseremaplicadasaonespecificado.
text
Escreveotextoliteralnasada.
transform
Defineoelementoraizdafolhadeestilo.
valueof
Extraiovalordonselecionado.
variable
Declaraumavarivellocalouglobal.
when
Especificaumaaoparaoelemento<choose>.
withparam
Defineovalordeumparmetroaserpassadonotemplate.
2.4.
ESTRUTURADOELEMENTOSXSL
11/29
ParautilizarcorretamenteoselementosXSL,deveseobservaraformasintticapadro,poish
algumasvariaesqueserdemonstradaecomentadanatabelaabaixo:
ELEMENTOS
COMENTRIO
<xsl:text>email:</xsl:text>
Inserodecaracteres/textoElemento
usadoparainserircaracterestextuaisno
documentodesada.Noexemplo,ser
impressoemail:diretamentenolocalonde
forusadonapaginadeestilo.
<xsl:valueofselect=aviso/corpo/>
Buscarelementos/atributosdon
Elementoquebuscatodainformao
marcadadoxmlpelatag/ncorpononvel
filhodoavisoeapresentadanodocumento
desada.
LaoforeachElementoderepetioque
precedeoutroelementoXSL,usadopara
aplicarumalgica/programaorepetidaa
<xsl:foreachselect=aviso></xsl:foreach> umconjuntodenodos/elementodoXML,
que,nestecaso,nosnveisfilhosdeaviso.
Esteoutroelementopodeserqualquer
elementodestatabelaedoXSL.
<xsl:applytemplatesselect=nomedon/>
ou<xsl:applytemplates/>
<xsl:choose>
<xsl:whentest=testsituation>
stylesheetcommands
</xsl:when>
<xsl:otherwise>
stylesheetcommands
</xsl:otherwise>
</xsl:choose>
<xsl:iftest=testsituation></xsl:if>
AplicartemplatesElementousadopara
aplicaroelementonomedon.Casoesteja
semoselect,aplicartodootemplate.
LaoCondicionalChooseTratasede
umlaocondicional,sendoqueseoprimeiro
teste(when)forbemsucedidosero
executadososseuscomandos,caso
contrrio,executaroutroscomandosda
condiootherwise.Ousodootherwise
obrigatrioe,quandonohouverem
comandosparaele,deveseusarapenas
</xsl:otherwise>aoinvsdoblocotodo.
LaoCondicionalsimples(if)Sexecuta
12/29
ocomandocasoacondiotestseja
satisfeita.
CriarvarivelElementoquecriaa
<xsl:variablename=x>atribuirumvalorax
varivelx,comvalorigualaatribuirum
aqui...</xsl:variable>
valoraxaqui.
<xsl:valueofselect=$x/>
UsarvalordaVarivelElementoque
acessaovalordavarivelxcriadaacima
<xsl:elementname=aviso2>
<xsl:attributename=valor>
<xsl:text>2013</xsl:text>
</xsl:attribute>
</xsl:element>
Criarnovoelemento+atributoCriar
novoelementoaviso2comatributovalor=
2013paraserutilizadonodocumentode
sada.
<xsl:sortselect="ano"datatype="number"
order="ascending"/>
2.4.
ElementodeordenaoElementoque
ordena/agrupainformaesdeacordocom
parmetros/filtros.Nestecaso,obtmse
todasasinformaesdonanoeorganiza
pordataemordemcrescente.
EXTENSESXSL
PodemseradicionadasnovasfuncionalidadeslinguagemXSLusandoextensesquedevemser
declaradascomoatributosdatag<xsl:stylesheet>.Atabelaabaixodemonstraalgumaspara
exemplificao:
EXTENSO
LINGUAGEM
<xsl:stylesheetxmlns:java="http://xml.apache.org/xslt/java">
JAVA
<xsl:stylesheetxmlns:xsl="http://www.w3.org/1999/XSL/Transform">
XSL
<xsl:stylesheetxmlns:html="http://www.w3.org/1999/xhtm">
HTML
<xsl:stylesheetxmlns:gx="http://www.google.com/kml/ext/2.2">
OGCKML
(GoogleEarth)
2.5.
XSLparaoSAPL
O SAPL o sistema que automatiza as atividades legislativas, tornando mais fcil a produo
legislativa, como forma de apoiar as Casas Legislativas nas suas atividades relacionadas ao processo
13/29
Ser usado o modelo pl.xsl que o estilizador do documento Projeto de Lei do SAPL. Ao
clicar no arquivo acima referido, temse acesso ao seu cdigo fonte, que, neste tutorial, ser expandido
gradualmenteecomentadoparafacilitaroentendimentoconformesegue:
14/29
CDIGOFONTEGRUPOBASE
<?xmlversion="1.0"Encoding="ISO88591"?>
COMENTRIO
DeclaraoobrigatriadoarquivoXSL
paralerXML.Nestecaso,sobregrasdo
padroISO88591.
DeclaraoobrigatriaparaarquivoXSL,
queindicainciodaprogramaodos
<xsl:stylesheetversion="1.0"
estilos,buscandoextenso/
xmlns:xsl="http://www.w3.org/1999/XSL/Transform
funcionalidadesdositew3c(conformeo
"xmlns:pl="/XSD/ProjLei">
endereo)ecomaextensodoarquivo
/XSD/ProjLeiqueserlocadanoZOPE.
<xsl:outputencoding="ISO88591"/>
ElementoqueforaasadadoXSLna
codificaodopadroISO88591.
<xsl:templatematch="/pl:pl">
Incio/montagemdaRaizabsoluta
(principal)indicadapor/pl,quesera
medetodoosoutroselementos.
ElementosdeHTML+CSSintegradose
posteriormenteoXSL.
</xsl:template>
Finalizaodaraizabsoluta.
</xsl:stylesheet>
Finalizaodasfolhasdeestilos.
15/29
AbaixoserapresentadoogrupodoHTML+CSSecomentados.Tambmseromostrados
elementosdogrupoXSLsomenteparaefeitodelocalizao,osquaisestaronumtommaisclaroe
somenteseroexplicadosnaprximatabela.
CDIGOFONTEGRUPOHTML+CSS
16/29
COMENTRIO
InciodoHTML.
InciodoHEAD,quetratadas
propriedadesdodocumentode
sada,comoTITLE(ttuloda
pginaHTML),STYLE(estilos/
formataes),referenciar/
importarumdocumentoexterno/
outralocalidade),META
(metadados/informaesque
facilitambuscasnaredeatravs
depalavraschaves),entre
outros.
Margemdireitade1cme
esquerdade2cmdapgina
sada.
Noexemplo,todoequalquer
pargrafoserfontetamanho12
eemTimesNewRoman.
<html>
Todopargrafodaclasse
epgrafesercentralizado,letra
maisculaeemnegrito.
<head>
<title>
<xsl:valueofselect="@id"/>
</title>
<styletype="text/css">
Todopargrafodaclasse
ementaserjustificadocoma
margemesquerdaalinhadaa
partirdametadedodocumento.
Todopargrafodaclasse
prembuloseremmaisculae
avanadode1cmdamargem
esquerda.
body{marginleft:2cmmarginright:1cm}
Todopargrafodaclasseartigo
serjustificadoeavanadode2
cmdamargemesquerda.
p{fontfamily:Timesfontsize:12pt}
Todopargrafodaclasse
17/29
p.epigrafe{textalign:centertexttransform:uppercase
fontweight:bold}
p.paragrafo{textalign:justifytextindent:2cm}
p.inciso{textalign:justifytextindent:1cm}
p.alinea{textalign:justifytextindent:1cm}
pargrafoserjustificadoe
avanadode2cmdamargem
esquerda.
Todopargrafodaclasseinciso
serjustificadoeavanadode1
cmdamargemesquerda.
Todopargrafodaclassealnea
serjustificadoeavanadode1
cmdamargemesquerda.
p.item{textalign:justifytextindent:1cm}
Todopargrafodaclasseitem
serjustificadoeavanadode
1cmdamargemesquerda.
p.justificativa{textalign:justifytextindent:7cm}
Todopargrafodaclasse
justificativaserjustificadoe
avanode7cmdamargem
esquerda.
p.mensagem{textalign:justify}
Todopargrafodaclasse
mensagemserjustificado.
p.data_apresentacao{textalign:justify}
Todopargrafodaclasse
data_apresentacaoser
justificado.
p.autor{textalign:centertexttransform:uppercase}
Todopargrafodaclasseautor
sercentralizadoeem
maisculas.
Todopargrafodaclassecargo
seralinhadonocentroda
pgina.
p.cargo{textalign:center}
h3.cab_secao{textalign:centerfontsize:12pt}
18/29
Todottulocomtagh3quefaz
partedaclassecab_secaoser
centralizadocomtamanhode
fonte12.
Deixaemnegritotodosatributos
rtulodoelementoartigo,ou
sejaArt1,Art2,etc.
artigo[rotulo]{fontweight:bold}
Fechamentodosestilos(style)e
propriedades(head)desta
pgina/documento.
</style>
</head>
<body>
Inciodomodelo/contedoda
pgina/documento.
Criaodeumatabelapara
melhoralinhamentoda
logomarcadaCasaLegislativae
dotexto/cabealho.
<table>
Criaodeumalinhanatabela
comcontedoalinhadoadireita.
<tralign="right">
Inciodeinserodedadosna
linhacriadaacima.
<tdwidth="77"heigth="81">
<img
src="/sapl/portal_skins/sk_sapl/imagens/logo_casa.gif">
Inserodaimagemdo
Braso/LogodaCasaLegislativa
peloendereoqueestno
atributosrc,localizadono
ZOPE.
Finalizaodoelementoimagem
edeinserodedadonalinha.
</img>
</td>
Inciodeinserodedado/
Textoexemplo(Cmara
<tdalign="left"heigth="40">CmaraMunicipaldePiraMunicipaldePira)que,neste
caso,estnamesmalinhada
<br/>EstadodoRiodeJaneiro</td>
imagem.Atagbrforaa
quebradelinhadotextopara
queorestantesejaescritona
prximalinha.
19/29
</tr>
</table>
Finalizaodalinha(tr)e
finalizaodatabela(table).
<br/>
Pulalinha.
<xsl:applytemplates/>
<hrcolor="#8B4513"size="4"width="90%"></hr>
<hrcolor="#8B4513"size="1"width="90%"></hr>
Crialinhahorizontalcomacor
#8B4513,comespessura4e
queocupa90%dafolha.
Inciodeumpargrafocujo
<palign="center">RuaDr.LuizAntonioG.da
contedoestarcentralizado.
Silveira,16Centro,Pira/RJCep:27175/000</p><p
Nestecaso,tratasedorodape
align="center">email:<ahref="mailto:cmpirai@pirai.rj.leg.br">
foicolocadonestelocalparaque
cmpirai@pirai.rj.leg.br</a></p><palign="center"padding="0">
sejamostradoindependentede
Telefax:(24)24119500</p>
qualquerelemento.Aposio
corretaserianofinaldocdigo
fonte?No!Poisestariaforada
tag</html>queofimdo
documento.
Trminodomodeloecorpodo
documento.
</body>
</html>
Caso especial: observe que apenas dois elementos XSL foram mostrados em um tom mais claro
na tabela acima no GRUPO HTML + CSS, pois o local o mais importante a saber, ou seja,
<xsl:valueof select="@id"/> e <xsl:applytemplates/>. O primeiro XSL busca a informao
marcada pelo atributo id (vide apresenadosmbolo@)eocolocanaTITLEdodocumento,queser
gerado, dando o mesmo nome/cdigo do XML para o documento de sada. J o segundo, serve para
chamar todos elementos XSL do arquivo XSL e apliclos nas posies em que se encontram, ou seja,
no importa se os elementos XSL esto aps a TAG de finalizao </html>, pois o
<xsl:applytemplates/> localiza todos e aplica na mesma sequncia em que se encontram definidos no
localindicadopor<xsl:applytemplates/>.
20/29
Aps conhecer os dois elementos especiais e suas utilidades, falta apenas conhecer os restantes
dos elementos XSL, que sero aplicados a cada elemento do XML conforme ser demonstrado e
comentadoaseguir.VejacomoidentificarprimeiramenteoselementosXML:
21/29
<paragrafo>
<paragrafo_text></paragrafo_text>
</paragrafo>
</artigo_text>
</artigo>
</capitulo>
</titulo>
</livro>
</parte>
</proposicao>
<justificativa></justificativa>
<datadeapresentacao></datadeapresentacao>
<autor></autor>
<mensagem></mensagem>
</pl>
CDIGOFONTEGRUPOXSL
<xsl:templatematch="pl:proposicao">
COMENTRIO
ElementoXSLqueiniciaoconjuntodeestilos
paraoelementoproposiodoXML.
<xsl:applytemplatesselect="./*"/>
ElementoqueaplicaestilosXSLemum
conjuntodeelementosdoXML.Nestecaso,o
selectapontaparatodososelementos(*)da
mesmahierarquia/nvel(/)sendoqueo
elementorootseraproposio.
</xsl:template>
Fechamentodoprimeirotemplate.
<xsl:templatematch="pl:epigrafe">
ElementoXSLqueiniciaconjuntodeestilos
paraoelemento/nepgrafedoXML.
<pclass="epigrafe">
HTML:marcaodeinciodepargrafoda
classeepgrafe.
<xsl:valueofselect="pl:epigrafe_text"/>
</p>
</xsl:template>
Buscaainformaotagueada/marcadaspor
epgrafe_text.
HTML:Fechaopargrafo
Fechafolhasdeestilosparaaepgrafe.
22/29
<xsl:templatematch="pl:ementa">
Inicializaestilosparaoelementoementado
XML.
<br/><br/>
<pclass="ementa">
<xsl:valueofselect="pl:ementa_text"/>
</p>
HTML:Salta2linhas.
HTML:Inciodepargrafodaclasseementa.
Buscaainformaotagueada/marcadaspor
ementa_text.
HTML:Fechapargrafodogrupoementa.
</xsl:template>
Fechaasfolhasdeestilosparaaementa.
<xsl:templatematch="pl:preambulo">
Inicializaestilosparaelementoprembulodo
XML.
<pclass="preambulo">
<xsl:valueofselect="pl:preambulo_text"/>
</p>
HTML:Inciodepargrafodaclasse
prembulo.
Buscaainformaotagueada/marcadaspor
preambulo_text.
HTML:Fechapargrafodogrupoementa.
</xsl:template>
<xsl:templatematch="pl:artigo_text">
<pclass="artigo">
Fechaasfolhasdeestilosparapreambulo.
Buscaainformaotagueada/marcadaspor
artigo_text.
HTML:Inciodepargrafodaclasseartigo.
<b>
HTML:Inciodenegrito.
<xsl:valueofselect="../@Rotulo"/>
</b>
BuscaovalordoatributodeRotuloqueno
estanonatualesimnoanterior,ouseja,o
capitulo.
HTML:Trminodenegrito.
<xsl:valueofselect="concat('',text())"/>
Buscanoelementoartigo_text,osvaloresque
23/29
afunotext()retornar(quesertodootexto)
concatenadocomumespaoembrancono
incio.
</p>
HTML:Trminodopargrafodaclasse
artigo.
</xsl:template>
Fechafolhasdeestilosparaartigo_text.
<xsl:templatematch="pl:paragrafo_text">
Buscaainformaotagueada/marcadaspor
paragrafo_text.
<pclass="paragrafo">
HTML:Inciodepargrafodaclasse
paragrafo.
<xsl:valueofselect="concat(../@Rotulo,'
',text())"/>
Buscanoelementoparagrafo_textosvalores
doatributoRotulodoelementoanteriore
concatenacomumespaoembranco,maiso
valorretornadoportext().
</p>
HTML:Fechamentodepargrafodaclasse
paragrafo.
</xsl:template>
Fechafolhasdeestilosdeparagrafo_text.
<xsl:templatematch="pl:inciso_text">
Iniciaestilosparaoelementoinciso_textdo
arquivoXML.
<pclass="inciso">
HTML:Inciodepargrafodaclasseinciso.
<xsl:valueofselect="concat(../@Rotulo,'
',text())"/>
Buscanoelementoinciso_textosvaloresdo
atributoRotulodoelementoanteriore
concatena/juntacomoemaisovalor
retornadoportext().
</p>
HTML:Trminodepargrafodaclasse
inciso.
</xsl:template>
Fechafolhasdeestilosdeinciso_text.
<xsl:templatematch="pl:alinea_text">
Buscaainformaotagueada/marcadaspor
24/29
alinea_text.
<pclass="alinea">
<xsl:valueofselect="concat(../@Rotulo,'
',text())"/>
</p>
HTML:Inciodepargrafodaclassealinea.
Buscanoelementoalinea_textosvaloresdo
atributoRotulodoelementoanteriore
concatena/juntacomumespaoembranco
maisovalorretornadoportext().
HTML:Fechapargrafodaclasse
alinea_text.
</xsl:template>
Fechafolhasdeestilosdealinea_text.
<xsl:templatematch="pl:item_text">
Iniciaestilosparaoelementoitem_textdo
arquivoXML.
<pclass="item">
HTML:Inciodepargrafodaclasseitem.
<xsl:valueofselect="concat(../@Rotulo,'
',text())"/>
Buscanoelementoitem_textosvaloresdo
atributoRotulodoelementoanteriore
concatena/juntacomumespaoembranco
maisovalorretornadoportext().
</p>
HTML:Fechapargrafodaclasseitem.
</xsl:template>
Fechafolhasdeestilosdeitem_text.
Iniciaestilosparaoelemento
<xsl:templatematch="pl:data_apresentacao_text">data_apresentacao_textdoarquivoXML.
<pclass="data_apresentacao">
<xsl:valueofselect="text()"/>
</p>
HTML:Inciodepargrafodaclasse
data_apresentacao.
Buscanoelementodata_apresentacaoos
valoresRetornadosdafunotext(),cuja
retornatodootexto/palavrasqueesto
tagueadasporesteelemento.
HTML:Fechapargrafodaclasse
data_apresentacao.
25/29
Fechafolhasdeestilosde
data_apresentacao_text.
</xsl:template>
Iniciaestilosparaoelementoautor_textdo
arquivoXML.
<xsl:templatematch="pl:autor_text">
<br/><br/>
HTML:Saltaduaslinhas.
<pclass="autor">
<xsl:valueofselect="text()"/>
HTML:Inciodepargrafodaclasseautor.
Buscanoelementoalinea_textosvaloresdo
atributoRotulodoelementoanteriore
concatena/juntacomumespaoembranco
maisovalorretornadoportext().
</p>
HTML:Trminodepargrafoautor.
</xsl:template>
Fechafolhasdeestilosdeautor_text.
<xsl:templatematch="pl:cargo_text">
Iniciaestilosparaoelementocargo_textdo
arquivoXML.
<pclass="cargo">
HTML:Inciodepargrafodaclassecargo.
<xsl:valueofselect="text()"/>
Buscanoelementocargo_textosvaloresdo
retornadospelafunotext(),queretorna
apenastexto.
HTML:Inciodepargrafodaclassecargo.
HTML:Salta3linhas.
</p>
<br/><br/><br/>
</xsl:template>
Fechafolhasdeestilosdecargo_text.
<xsl:templatematch="pl:justificativa">
Iniciaestilosparaoelementojustificativado
arquivoXML.
<br/><br/>
HTML:Saltaduaslinhas.
HTML:Criaoreferidotextocentralizado
26/29
<b><palign="center">JUSTIFICATIV
A:</p></b>
HTML:Saltaumalinha.
<br/>
<pclass="justificativa">
<xsl:valueof
select="pl:justificativa_text"/>
HTML:Inciodepargrafodaclasse
justificativa.
Buscaainformaotagueada/marcadaspor
justificativa_text.
</p>
HTML:Fimdopargrafodaclasse
justificativa.
<br/>
HTML:Saltaumalinha.
</xsl:template>
Fechafolhasdeestilosdejustificativa.
<xsl:templatematch="pl:mensagem">
Iniciaestilosparaoelementomensagemdo
arquivoXML.
<h3class="cab_secao">MENS HTML:Criaotextonapginanotamanhode
AGEM:</h3>
h3.
<br/>
HTML:Saltaumalinha.
<pclass="mensagem">
HTML:Inciodepargrafodaclasse
mensagem.
<xsl:valueof
select="pl:mensagem_text"/>
</p>
Buscaainformaotagueada/marcadaspor
mensagem_text.
HTML:Fimdopargrafodaclasse
mensagem.
</xsl:template>
Fechafolhasdeestilosdemensagem.
</xsl:stylesheet>
Finalizatodasfolhasdeestilos.
27/29
ApspreencheroscamposdoProjetodeLeinoSAPL(videfiguraanterior)easfolhas
de estilos programadas conforme a tabela acima, temse o seguinte documento de sada
estilizadopelalinguagemXSLconformeabaixo:
28/29
29/29
30/29
31/29