<xml:introduo />
Helder da Rocha www.argonavis.com.br
1
Objetivos
Oferecer uma viso geral da tecnologia XML Responder s questes Como implementar solues de gesto de informaes usando XML? Quando e como usar as tecnologias e linguagens que viabilizam o compartilhamento de informaes? Apresentar Breve introduo ao XML e tecnologias relacionadas. Recursos para manipular informaes representadas em XML: ferramentas, linguagens e tecnologias
2
Assuntos abordados
Por que XML? Onde usar XML? Como produzir documentos XML Documentos vlidos: DTD e XML Schema Manipulao via programao em DOM e SAX Transformao: XSLT e XPath Localizao e extrao: XLink, XQuery e XPointer Visualizao: XSL-FO e SVG Demonstrao: gerao de HTML, RTF e PDF Ferramentas e Concluses
3
O que XML?
eXtensible Markup Language: padro W3C Uma maneira de representar informao no uma linguagem especfica no define vocabulrio de comandos no define uma gramtica, apenas regras mnimas Exemplo: documento XML
usuario_33.xml
<contato codigo="33"> <nome>Severino Severovitch</nome> <email>bill@norte.com.br</email> <telefone tipo="celular"> <area>11</area> <numero>9999 4321</numero> </telefone> </contato>
<h1>Severino Severovitch</h1> <h2>bill@norte.com.br</h2> <p> <b>11</b> <i>9999 4321</i> </p> <nome>Severino Severovitch</nome> <email>bill@norte.com.br</email> <telefone> <ddd>11</ddd> <numero>9999 4321</numero> </telefone>
Elemento raiz
<nome/>
Partes de um documento
elemento raiz declarao XML n raiz ( / ) <?xml version="1.0" encoding="iso-8859-1" ?>
atributos
<cartao-simples> <logotipo href="/imagens/logo14bis.gif" /> <nome>Alberto Santos Dumont</nome> <endereco>Rua do Encanto, 22 - 2o. andar Centro - 25600-000 - Petrpolis - RJ</endereco> <email>dumont@14bis.com.br</email> <telefone tipo="residencial" > <ddd>21</ddd> elementos <numero>2313011</numero> </telefone> </cartao-simples>
/
cartao-simples cartao-simples
rvore XML
email email
nome nome
Alberto Santos Dumont
dumont@14bis.com.br
href href
ddd ddd
/imagens/logo14bis.gif
LEGENDA
21
XML Namespaces
Limita o escopo de elementos Evita conflitos quando duas linguagens se cruzam no mesmo documento Consiste da associao de um identificador a cada
Exemplo
prefixo
identificador
<cadastro xmlns:firma="01.234.567/0001-99"> <nome>Severino Severovitch</nome> <firma:nome>Sibria Informtica Ltda.</firma:nome> <email>bill@norte.com.br</email> </cadastro> Este elemento <nome> pertence a outro namespace
contedo e apresentao
Porque permitir semntica na Web Elementos HTML no carregam significado, apenas dicas de formatao: mecanismos de busca ficam prejudicados Soluo com XML depender de suporte dos clientes
10
Facilita gerao de dados para visualizao dinmica Evita repetio de informao / simplifica manuteno
VRML
XSLT
W
DOM SAX XSL-FO
PDF PDF PDF RTF TeX SGML PDF e PostScript
SGBD
2000 2001
11
montada dinamicamente
33 Severino Severovitch bill@norte.com.br celular 11 9999 4321
<contato codigo="33"> <nome>Severino Severovitch</nome> <email>bill@norte.com.br</email> <telefone tipo="celular"> <area>11</area> <numero>9999 4321</numero> </telefone> </contato>
12
documentos XML
Ter um, e apenas um, elemento raiz Valores dos atributos estarem entre aspas ou apstrofes Atributos no se repetirem Todos os elementos terem etiqueta de fechamento Elementos estarem corretamente aninhados
13
XML vlido
Um XML bem construdo pode no ser vlido em
determinada aplicao Aplicao tpica pode esperar que elementos faam parte de um vocabulrio limitado, certos atributos tenham valores e tipos definidos, elementos sejam organizados de acordo com uma determinada estrutura hierrquica, etc. preciso especificar a linguagem! Esquema: modelo que descreve todos os elementos, atributos, entidades, suas relaes e tipos de dados Um documento XML considerado vlido em relao a um esquema se obedecer todas as suas regras
14
Esquema
Documentos que aderem especificao (vlidos)
15
usando XML
Pode ser estabelecido "informalmente" (via software) Uso formal permite validao usando ferramentas
DTD
<!ELEMENT contato (nome, email, telefone)> <!ATTLIST contato codigo NMTOKEN #REQUIRED>
XSchema
<xsd:schema xmlns:xsd=".../XMLSchema"> <xsd:element name="contato"> <xsd:complexType> <xsd:attribute name="codigo" use="required">
16
Visualizao em um browser
Folha de estilo: conjunto de regras para formatar ou
Servem a finalidades diferentes Implementaes disponveis em vrias linguagens SAX oferece mtodos que respondem a eventos
<carta>
Atributos
<mensagem id="1">
mens.setAttribute("id", "1")
20
3. rvore completa
/
mens.appendChild(texto)
Bom dia!
<carta>
2. Sub-rvore <carta>
<mensagem id="1"> <carta>
carta.appendChild(mens)
<mensagem id="1">
Bom dia!
doc.appendChild(carta)
Bom dia!
21
XPath
Linguagem usada para navegar na rvore XML Uma expresso XPath um caminho* na rvore que
resulta em um valor (nmero, texto, booleano), objeto (elemento, atributo, n de texto) ou conjunto de objetos Caminhos absolutos
33 Severino Severovitch bill@norte.com.br celular 11 9999 4321
Expresses XPath so usadas dentro de atributos XML Usadas em XSLT, XLink, XQuery e XPointer
* pode tambm ser padro de busca
22
XSLT
XSL Transformations Linguagem (XML) para criao de documentos que contm regras de transformao para documentos XML Documentos escritos em XSLT so chamados de folhas de estilo e contm
Elementos XSLT: <template>, <if>, <foreach>, ... Expresses XPath para localizar ns da rvore-fonte Texto ou XML a ser gerado no documento-resultado
Processador XSLT
fonteToHtml.xslt
Folha de estilos
fonte.xml
Documento Fonte
Documento Resultado
23
<origem>
rvore-fonte
24
<xsl:template match="aeronave"> <p>A aeronave de prefixo documento <xsl:value-of select="@id" /> decolou resultado de <xsl:value-of select="origem" /> s (em preto) <xsl:value-of select="origem/@partida" /> tendo como destino o aeroporto de <xsl:value-of select="destino" />.</p> </xsl:template> elementos XSLT
(em vermelho, com prefixo xsl)
vrios nveis de semntica, etc. uma coleo de atributos, com namespace prprio, que podem ser usados em elementos de qualquer linguagem XML.
XPointer: aponta para partes de documentos XML Identificador (ID) colocado no destino, accessvel atravs de fragmento de URL: xlink:href="#identificador" Caminho resultante de expresso XPath: xpointer(/livro/id) XQuery: linguagem para pesquisar documentos XML Exemplo: FOR $b IN document("usuario_33.xml")/contato
WHERE nome="Severino Severovitch" RETURN $b
27
XSL-FO
XSL Formatting Objects Linguagem XML de descrio de pgina com os mesmos recursos que PostScript ou PDF Descreve o layout preciso de texto e imagens Possui centenas de elementos, atributos e propriedades (que so semelhantes s propriedades do CSS) Pginas so facilmente convertidas para PDF e PostScript Ideal para gerar documentos para impresso (livros, etc.) Normalmente gerada via XSLT
XML
XSLT
XML
Fonte
Processador XSLT
XML
Documento XSLFO
FOP
Documento PDF
28
29
XHTML
eXtensible HTML Linguagem XML de descrio de pgina Web Mesmos elementos do HTML 4.0 Strict Elementos descrevem somente a estrutura dos componentes da pgina.
A forma precisa ser especificada usando CSS: no h
Processador XSLT
Documento Fonte
Documento XHTML
30
<svg> <circle style="fill: red" cx="3cm" cy="3cm" r="2.5cm" /> <rect style="fill: blue" x="6cm" y="6cm" height="2.5cm" width="1.5cm" />
SVG
W3C Scalable Vector Graphics Grficos vetoriais em XML Plug-ins para principais browsers: concorre com Flash Suporta animaes, links, JavaScript, CSS Produzido por ferramentas como Adobe Ilustrator Pode ser embutido no cdigo XHTML e XSL-FO
Zoom +
Zoom +
31
Exemplo de SVG
JavaScript
<svg width="10cm" height="10cm"> <g onclick="alert('Clicou no grupo 1!')"> CSS <circle style="fill: red" cx="3cm" cy="3cm" r="2.5cm" /> <rect style="fill: blue" x="6cm" y="6cm" height="2.5cm" width="1.5cm" /></g> <g onclick="alert('Clicou no grupo 2!')"> <circle style="fill: green; opacity: 0.5" cx="5cm" cy="5cm" r="2cm" /></g> <a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.w3.org/Graphics/SVG"> <text style="color: black; font-family: tahoma; font-size: 12pt" x="3cm" y="8cm"> SVG XML</text></a> </svg>
XLink
32
XMI
Web Services
XML-RPC
CML
33
ebXML
Demonstrao
Exemplo de transformao XML
<xslt> FO PDF
FOP
<xml>
(1)
<xsl:fo>
(1.a) (1.b)
Xalan
<xslt> Texto
(3)
<xslt> SVG
JFOR
(4) (2)
<xslt> HTML HTML
2000 2001
SVG
34
Ferramentas
Para programao Parsers-validadores: Xerces, Crimson, MSXML 4.0 Validadores: MSV (Sun) Transformadores XSL: TrAX, Xalan, Xt, Saxon APIs: JDOM, JAX (P, B, M, R, RPC), SAX e DOM Veja mais em xml.apache.org e www.alphaworks.ibm.com Para edio (de XML genrico) XML Spy Suite Framemaker / ArborText JEdit com plug-ins para XML, XSLT e XPath Veja mais em www.w3.org/XML/
35
Concluses
XML uma tima soluo para compartilhar dados Para implementar solues em gesto de
as informaes As APIs DOM ou SAX para extrair dados dos documentos, gerar documentos, ler e gravar em bancos de dados XSLT e XPath para transformar os dados em outros formatos XLink, XPointer e XQuery para criar vnculos lgicos entre os documentos e localizar seus componentes XSL-FO ou XHTML para formatar os dados para impresso ou visualizao na tela (PDF, Word ou Web) SVG para gerar informaes em forma de grfico vetorial
36
Fontes
[1] World
http://www.w3.org/XML/. Ponto de partida e principal fonte sobre XML e suas tecnologias "satlite". Contm ltimas especificaes de XML, XPath, XSchema, XSLT, XSL-FO, XQuery, XLink, XPointer, SVG, XHTML, CSS.
[2] Eric
Armstrong et al. Working with XML. Aborda DOM, SAX e XML com Java. SVG Tutorial. http://www.adobe.com/svg/. Contm tutorial sobre SVG e
http://java.sun.com/xml/jaxp/dist/1.1/docs/tutorial/index.html.
[3] Adobe. [4]
[5] Doug
Tidwell. XSLT. OReilly & Associates, 2001. Explora XSLT com aplicaes Rusty Harold. XML Bible, Second Edition, 2001. Aborda todas as
prticas em Java.
[6] Elliotte [7] Erik
DTD, XSLT, XLink e XPointer (os dois ltimos baseados em especificaes draft).
helder@ibpinet.net
www.argonavis.com.br
38
<xml:fundamentos />
Helder da Rocha www.argonavis.com.br
apenas regras mnimas de estrutura Para criar o menor arquivo XML possvel:
Abra um editor de textos Salve o arquivo com extenso .xml Escreva um elemento raiz vazio
<x/>
Salve o arquivo Abra no Internet Explorer
Um elemento
Elemento vazio
<nome></nome>
<nome/>
<contato> <nome>Fulano de Tal</nome> <email>fulano@site.com.br</email> <telefone> <ddd>11</ddd> <numero>8765 4321</numero> </telefone> </contato>
5
Componentes de um documento
rvore XML ns, raiz, galhos e folhas Prlogo Comentrios Instrues de processamento Elementos Atributos Ns de texto Entidades
6
Estrutura XML
Um documento XML pode ser representado como uma
<?xml version="1.0" encoding="iso-8859-1" ?> <!-- Isto um comentrio --> informaes usadas pelo processador XML <cartao-simples> <logotipo href="/imagens/logo14bis.gif" /> <nome>Alberto Santos Dumont</nome> <endereco>Rua do Encanto, 22 - 2o. andar Centro - 25600-000 - Petrpolis - RJ</endereco> <email>dumont@14bis.com.br</email> um "n" pode ser ... <telefone tipo="residencial" > um elemento, <ddd>21</ddd> um atributo, um bloco de texto, <numero>2313011</numero> um comentrio, </telefone> uma instruo, </cartao-simples> uma declarao,
N raiz e elementos
elemento raiz n raiz ( / )
<?xml version="1.0" encoding="iso-8859-1" ?> <cartao-simples> <logotipo href="/imagens/logo14bis.gif" /> <nome>Alberto Santos Dumont</nome> <endereco>Rua do Encanto, 22 - 2o. andar Centro - 25600-000 - Petrpolis - RJ</endereco> <email>dumont@14bis.com.br</email> <telefone tipo="residencial" > <ddd>21</ddd> elementos elementos <numero>2313011</numero> </telefone> </cartao-simples>
Atributos
S podem conter um descendente (s texto)
<?xml version="1.0" encoding="iso-8859-1" ?> <cartao-simples> <logotipo href="/imagens/logo14bis.gif" /> <nome>Alberto Santos Dumont</nome> <endereco>Rua do Encanto, 22 - 2o. andar Centro - 25600-000 - Petrpolis - RJ</endereco> <email>dumont@14bis.com.br</email> <telefone tipo="residencial" > <ddd>21</ddd> <numero>2313011</numero> </telefone> atributos </cartao-simples>
10
Ns de texto
No podem ter descendentes (so as folhas da rvore)
<?xml version="1.0" encoding="iso-8859-1" ?> <cartao-simples> <logotipo href="/imagens/logo14bis.gif" /> <nome>Alberto Santos Dumont</nome> <endereco>Rua do Encanto, 22 - 2o. andar Centro - 25600-000 - Petrpolis - RJ</endereco> <email>dumont@14bis.com.br</email> <telefone tipo="residencial" > <ddd>21</ddd> <numero>2313011</numero> ns de </telefone> texto </cartao-simples>
11
Entidades
So constantes associadas a um valor de texto Podem aparecer em qualquer lugar do documento Substitudas durante o processamento do documento Sintaxe: &ENTIDADE; Exemplo: &data_de_hoje; Entidades pr-definidas: < que corresponde a < > que corresponde a > & que corresponde a & " que corresponde a " ' que corresponde a '
12
Entidades de caracteres
Substitudas durante o processamento do documento Sintaxe: &#CDIGO_16b_decimal; ÍIGO_16b_hexadecimal; Exemplo:   ou   Um espao em Unicode Veja em www.unicode.org/charts/
13
Elementos e atributos
Regras bsicas Etiqueta inicial e final tm que ter o mesmo nome (considerando diferena de maiscula e minscula) No pode haver espao depois do < nas etiquetas iniciais nem depois do </ nas finais Atributos tm sempre a forma nome="valor" ou nome = 'valor':
aspas podem ser usadas entre apstrofes e apstrofes podem
ser usados entre aspas aspas e apstrofes no podem ser neutralizados mas sempre podem ser representados pelas entidades ' e "
informao em XML
<data>23/02/1998</data> <data dia="23" mes="02" ano="1998" /> <data> <dia>23</dia> <mes>02</mes> <ano>1998</ano> </data>
15
16
Identificadores
Nomes de atributos e elementos Podem conter qualquer caractere alfanumrico ou ideograma . (ponto) - (hfen) _ (sublinhado) No podem comear com ponto, hfen ou nmero
17
Identificadores
Elementos bem formados
< >
</ >
< xml:lang='ru'> <> </> < ="1799" ="1837"> </> </> <_1_/> <cdd:gen.inf cdd:cod="005">Introduo a XML</cdd:gen.inf>
18
Contedo misto
<trecho> <secao>2</secao> <paragrafo>A unidade de informao dentro de um documento XML o <definicao>elemento</definicao>. Um elemento formado por duas <definicao>etiquetas</definicao> que atribuem algum significado ao contedo. </paragrafo> </trecho>
19
Seo CDATA
Ignora efeitos especiais dos caracteres
<titulo>Curso de XML</titulo> <exemplo>Considere o seguinte trecho de XML: <![CDATA[ <empresa> <nome>Joo & Maria S/A</nome> </empresa> ]]> </exemplo>
20
Instrues de processamento
Instrues dependentes do processador Funcionam como comentrios para os processadores
que no a conhecem
<?nome-do-alvo rea de dados ?> <?query-sql select nome, email from agenda where id=25 ?>
21
Comentrios
Iguais aos comentrios HTML
<!-- Isto um comentrio --> <!-isto um erro -- srio! -->
22
Declarao XML
Opcional (exceto queno conjunto de
23
caracteres maisculos e minsculos so diferentes) elementos bem aninhados valores de atributos entre aspas ou apstrofes atributos no repetidos identificadores vlidos para elementos e atributos comentrios no devem aparecer dentro das etiquetas sinais < ou & nunca devem ocorrer dentro dos valores dos atributos ou nos ns de texto do documento.
24
XML Namespaces
Permite que elementos de mesmo nome de diferentes
aplicaes sejam misturados sem que haja conflitos Um namespace (universo de nomes) declarado usando atributos reservados
xmlns="identificador" (namespace default)
nome local precedido do prefixo. Ex <prefixo:nome> O prefixo arbitrrio e s existe dentro do documento O identificador (geralmente uma URI) deve ser reconhecido pela aplicao
25
Exemplo
Vale para todo o elemento <cartao> Esta URI est associada a este prefixo
<ct:cartao xmlns:ct="01.234.567/0001-89/cartoes"> <ct:nome>Alberto Santos Dumont</ct:nome> <ct:endereco>Rua do Encanto, 22 - Centro 25600-000 - Petrpolis - RJ</ct:endereco> <ct:email>dumont@14bis.com.br</ct:email> <ct:telefone tipo="residencial"> <ct:ddd>21</ct:ddd> <ct:numero>2313011</ct:numero> </ct:telefone> </ct:cartao> 26
27
<xml:links />
Helder da Rocha www.argonavis.com.br
1
XPointer
Funo que recebe uma expresso XPath Serve para apontar para um recurso ou parte do documento Para apontar para um recurso descoberto por uma
expresso XPath
xpointer(expresso)
<xml:transformao/>
Helder da Rocha www.argonavis.com.br
Esta aula
Introduo a XSLT fundamentos: principais elementos passo-a-passo: como transformar Fundamentos de XPath linguagem para manipular rvores XSLT outros elementos Fundamentos de XSL-FO Exerccios Gerao de HTML, XHTML, XML, XSL-FO, texto, ...
XSLT
XSL Transformations Linguagem (XML) para criao de documentos que contm regras de transformao para documentos XML Documentos escritos em XSLT so chamados de folhas de estilo e contm
Elementos XSLT: <template>, <if>, <foreach>, ... Expresses XPath para localizar ns da rvore-fonte Texto ou XML a ser gerado no documento-resultado
fonteToHtml.xslt
Processador XSLT
Folha de estilos
fonte.xml
Documento Fonte
Documento Resultado
Transformao XSL
A transformao XSL pode ocorrer em vrias etapas,
maior suporte)
Transformao XSLT
No servidor
Servidor XML CSS XSL CSS HTML Pgina Cliente
No cliente
Servidor CSS XML XSL CSS XML XSL Pgina
7
Cliente
Fundamentos de transformao
A transformao XSLT realizada sobre a rvore de um
<origem>
rvore-fonte
<xsl:template match="aeronave"> <p>A aeronave de prefixo documento <xsl:value-of select="@id" /> decolou resultado de <xsl:value-of select="origem" /> s (em preto) <xsl:value-of select="origem/@partida" /> tendo como destino o aeroporto de <xsl:value-of select="destino" />.</p> </xsl:template> elementos XSLT
(em vermelho, com prefixo xsl)
<template>
Bloco para transformao recursiva Atributo match: contm expresso XPath para localizao de padro (no caminho) N de contexto: dentro do <template>, todas as expresses XPath so relativas ao n corrente e lista de ns correntes
Padro para combinao
12
<value-of>
Imprime o valor do n indicado pelo seu atributo
"select"
Converte todo o contedo para texto Caminho relativo ao n corrente.
<xsl:template match="contxt"> <xsl:value-of select="elemento" /> </xsl:template> No exemplo acima, select seleciona qualquer n que contenha o string contxt/elemento Use "." para valor de elemento corrente Use "/" para referir-se a caminhos absolutos
13
<text>
Imprime texto Preserva espaos, novas-linhas e tabuaes til para controlar forma de impresso do texto <xsl:template match="x"> <xsl:text>Quebra linha depois </xsl:text> </xsl:template> <xsl:template match="y"> <xsl:text>No quebra linha</xsl:text> </xsl:template> Atributo disable-output-escaping="yes" evita
substituio de entidades
14
<output>
Para produzir resultados diferentes de XML e definir
<xsl:output method="text" /> html <xsl:output method="html" /> xml com DTD <xsl:output method="xml" doctype-public="-//PID//EN" doctype-system="arquivo.dtd" /> Formatos diferentes de UTF-8 <xsl:output encoding="iso-8859-1" />
15
<apply-templates>
Faz chamada recursiva a prximo template (se no
<xsl:template match="elemento"> Item 1: <xsl:apply-templates select="filho1"/> Item 2: <xsl:apply-templates select="filho2"/> </xsl:template> <xsl:template match="filho1"> [<xsl:apply-templates />] </xsl:template> <xsl:template match="filho2"> (<xsl:apply-templates />) </xsl:template>
16
Regras nativas
1. Processamento da raiz <xsl:template match="/"> <xsl:apply-templates /> </xsl:template> 2. Processamento de todos os elementos <xsl:template match="*"> <xsl:apply-templates /> </xsl:template> 3. Processamento de texto <xsl:template match="text()"> <xsl:value-of select="." /> </xsl:template>
17
Namespace
18
XPath
Como selecionar um ou mais ns da rvore-fonte? Caminhos (location paths)
levam at um n ou um conjunto de ns atravs de passos de
Padres de combinao (match patterns) um tipo especial de caminho levam at um n ou conjunto de ns atravs de combinao de padres no permite o uso de eixos ascendentes (..)
19
Expresses XPath
Os tipos de expresso so operaes sobre ns da rvore-fonte (caminhos) operaes sobre texto operaes booleanas operaes com resultado numrico Cada tipo de expresso devolve um resultado que
um conjunto de ns (node set) um texto (string) um valor booleano (boolean) um nmero (number)
20
Caminhos
Seqncia de passos at um determinado conjunto
Dois tipos absolutos: comeam no n raiz (iniciam com "/") relativos: comeam no n do contexto (context node)
21
Padres de combinao
So traduzidos em caminhos Usados para combinao Exemplo: <xsl:template match="..."> Resolvidos da direita para a esquerda No podem conter eixos ascendentes No pode: ../elemento Pode: //elemento ou /ancestral//elemento Devem ser a mais simples expresso que localize
22
pessoas
pessoa nome
pessoa nome
pessoa nome
Na rvore ao lado, se o n de
23
instanciar templates:
Atributos XSLT select e test, usados dentro dos
<xsl:template match="autor"> ... <xsl:template match="livro//pagina[25]"> ...
24
<if>
Bloco condicional Executa se expresso XPath passada retornar true <xsl:if test="/raiz/elemento/filho"> <xsl:value-of select "@atrib_do_filho" /> </xsl:if> <xsl:if test="(5 > 3) and not(9 < 4))"> .... </xsl:if> <xsl:if test="starts-with(@nome, 'Sra. ')"> ... </xsl:if>
25
<xsl:when test="../carro[@novo='true']"> ... </xsl:when> <xsl:when test="../casa"> ... </xsl:when> <xsl:when test="../salario/text() > 10000"> ... </xsl:when> <xsl:otherwise> ... </xsl:otherwise> </xsl:choose>
26
<sort>
Ordenao Aplica-se a cada n do conjunto de ns do contexto. Use dentro de <apply-templates> <xsl:apply-templates> <xsl:sort select="@codigo" /> <xsl:value-of select="." /> </xsl:apply-templates>
27
<xsl:for-each select="capitulo"> <xsl:value-of select="position()" /> <xsl:text>. </xsl:text> <xsl:value-of select="titulo" /> </xsl:for-each> </xsl:template>
28
<for-each> e <sort>
<sort> pode ser usado dentro de <for-each> para
ordenar os elementos
<xsl:template match="indice">
<xsl:for-each select="assunto"> <xsl:sort select="@codigo_dewey" /> <xsl:value-of select="@codigo_dewey" /> <xsl:text>: </xsl:text> <xsl:value-of select="." /> </xsl:for-each> </xsl:template>
29
Isoladamente, XSL-FO no folha de estilo formato final, com estrutura que visa a apresentao (como XHTML) Tpicamente, se cria um XSLT que gera FO a partir de uma fonte XML
30
Regras para formatao de vrias pginas Layout de pginas individuais, margens, rodaps Hifenao, alinhamento, fontes, cores, leading imagens, grficos, tabelas, listas, links
Hello World
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> <fo:layout-master-set> <fo:simple-page-master master-name="p1"> <fo:region-body/> Ligao entre as </fo:simple-page-master> regras de layout e </fo:layout-master-set> o contedo afetado
Este o "<head>" do XSL-FO
<fo:page-sequence master-name="p1"> <fo:flow flow-name="xsl-region-body"> <fo:block color="blue" font-size="20pt">Hello!</fo:block> <fo:flow> </fo:page-sequence> Este o "<body>"
do XSL-FO
</fo:root>
31
<root>
Raiz do documento XSL-FO Define o namespace
http://www.w3.org/1999/XSL/Format
Uso tpico
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> ... </fo:root>
32
Estrutura do documento
O elemento <root> deve conter Um <layout-master-set> que contm "mestres de layout"
definem templates reutilizveis para layout de pginas cada mestre possui um identificador que usado para
associ-lo a um bloco de contedo o tipo de mestre mais simples (e o nico atualmente suportado pelos processadores) <simple-page-master>
Pelo menos um <page-sequence>, onde fica o contedo define uma seqncia de pginas em um documento cada <page-sequence> deve estar associado a um mestre de layout existente contm objetos <flow> e/ou <static-content>
33
Cabealho
Cabealho mnimo
<fo:layout-master-set> <fo:simple-page-master master-name="p1"> <fo:region-body/> </fo:simple-page-master> </fo:layout-master-set>
<page-sequence> possam referenci-lo Atributos tpicos (ID e dimenses da pgina) <fo:simple-page-master master-name="p1" margin-top="1.5cm" margin-bottom="2cm" margin-left="2.5cm" margin-right="1.5cm" page-width="21cm" pageheight="29.7cm"> ... regies afetadas ... </fo:simple-page-master> 34
Regies
H cinco regies <region-body />
obrigatria rea de contedo principal da pgina define um ID implcito (fixo): xsl-region-body, para uso por
<region-start /> e <region-end /> Em documentos de linguagem ocidental, start a margem esquerda e end margem direita. IDs: xsl-region-start e xsl-region-end <region-before /> e <region-after /> before a margem superior, after a margem inferior. IDs: xsl-region-before e xsl-region-after.
35
<simple-page-master>
Margens e regies
Margens do <simple-page-master> limitam a rea de impresso <region-body> ocupa todo o espao restante Outras regies opcionais podem ser definidas sobre <region-body>
<region-before extent="2cm"/> <region-end extent="1cm"/>
margin-top
<region-before />
<region-start />
<region-end />
<region-body />
margin-right
margin-left
Margens de <region-body> devem ser iguais ou maiores que os extent das regies marginais
<region-body margin-left="2.7cm" margin-right="1.2cm" margin-bottom="2.1cm" margin-top="2.2cm" />
<region-after />
margin-bottom
36
XSLT
Layout geralmente permanece fixo em folha XSLT+FO <xsl:template match="/"> <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> <fo:layout-master-set> <fo:simple-page-master master-name="p1"> <fo:region-before extent="2cm"/> <fo:region-end extent="1cm"/> <fo:region-after extent="1.9cm"/> <fo:region-start extent="2.5cm"/> <fo:region-body margin-left="2.7cm" margin-right="1.2cm" margin-bottom="2.1cm" margin-top="2.2cm" /> </fo:simple-page-master> </fo:layout-master-set> <fo:page-sequence master-name="p1"> <xsl:apply-templates /> </fo:page-sequence> </fo:root> </xsl:template>
37
Contedo
O contedo do documento pode estar Em blocos <flow>, que criam nova pgina quando o texto preenche o espao disponvel na atual Em blocos <static-content>, que so repetidos em todas as pginas da seqncia. Regies Cada bloco de contedo deve estar associado a uma regio existente atravs do atributo flow-name:
<fo:static-content flow-name="xsl-region-start"> ... <fo:flow flow-name="xsl-region-body"> ...
Blocos Dentro de <flow> ou <static-content>, contedo deve estar em blocos: <block>, <list-block>, <table>, etc.
38
Blocos de contedo
<fo:page-sequence master-name="p1" font-size="8pt"> <fo:static-content flow-name="xsl-region-after"> <fo:block> Este bloco de <fo:leader leader-pattern="rule" contedo esttico est leader-length="16cm" /> associado com
region-after
<fo:flow flow-name="xsl-region-body"> <fo:block font-family="serif" font-size="11pt"> Texto que pode atravessar pginas. </fo:block> </fo:flow> </fo:page-sequence>
39
Blocos
Os elementos <flow> e <static-content> devem conter
elementos de bloco
<block> Bloco de propsito geral <list-block> Bloco que contm itens de lista <table> Bloco que contm tabela
elementos
<inline> Trecho de propsito geral <external-graphic> Imagem ou grfico externo <page-number> Nmero de pgina <basic-link> Referncia de hipertexto <instream-foreign-object> Cdigo XML embutido (SVG, por exemplo) <leader> Linhas e outros decoradores
40
Propriedades
Propriedades de estilo podem ser aplicadas em <flow>,
<static-content> e em quaisquer elementos descendentes Propriedades so atributos Maior parte das propriedades so iguais e tm mesma sintaxe que as propriedades do CSS
<fo:block font-family="tahoma, sans-serif" font-size="12pt"
color="rgb(255, 45, 45)" margin-top="1cm" font-weight="bold" text-align="center"> Uma <fo:inline color="blue">linha</fo:inline> de texto </fo:block> Algumas propriedades CSS so elementos em XSL-FO Alguns seletores CSS so atributos em XSL-FO
<table>
<fo:table> <fo:table-header> <fo:table-cell> <fo:block font-family="tahoma, sans" font-weight="bold">Coluna 1</fo:block> </fo:table-cell> <fo:table-cell> <fo:block font-family="tahoma, sans" font-weight="bold">Coluna 2</fo:block> </fo:table-cell> </fo:table-header> <fo:table-body> <fo:table-row> <fo:table-cell> <fo:block font-family="monospace">clula 1.1</fo:block> </fo:table-cell> <fo:table-cell> <fo:block font-family="monospace">clula 1.2</fo:block> </fo:table-cell> </fo:table-row> ... <fo:table-row> ... </fo:table-row> </fo:table-body> </fo:table>
42
<list-block>
<fo:list-block> <fo:list-item> <fo:list-item-label> <fo:block font-size="20pt" color="red"> • </fo:block> </fo:list-item-label> <fo:list-item-body start-indent="70pt"> <fo:block> Item um </fo:block> </fo:list-item-body> </fo:list-item> <fo:list-item> ... </fo:list-item> ... </fo:list-block>
43
<external-graphic>
44
<basic-link>
Vnculo de hipertexto Vincula uma referncia de ID a um ID Geralmente, quando o documento gerado via XSLT, o ID obtido do elemento ao qual se quer vincular ou via alguma varivel Exemplo:
<fo:basic-link internal-destination="{@id}" text-decoration="underline" color="blue"> <xsl:value-of select="@codigo"/> </fo:basic-link>
45
<instream-foreign-object>
46
Visualizao
XSL-FO uma linguagem de descrio de pgina Pginas podem ser geradas por um programa que construa o
documento na memria (como faz o browser com HTML e CSS) ou que gere um arquivo
PostScript, PDF: Apache FOP, RenderX XEP, REXP RTF (MS-Word): JFOR, RenderX Visualizao em browser: IBM XFC HP FOA
47
<xml:sax.dom />
Helder da Rocha www.argonavis.com.br
1
As duas APIs servem a finalidades diferentes. SAX mais simples. Oferece mtodos que respondem a
SAX ou DOM?
SAX Gasta menos memria Mais simples menos recursos disponveis Ideal para aplicaes simples que no precisam manipular com toda a rvore de objetos DOM Em grandes documentos e hierarquias profundas exige mais recursos Fornece funes que permitem ter muito controle sobre os dados a nica opo para manipulao no cliente APIs disponveis em vrias linguagens Java, VB, C, JavaScript (apenas DOM)
3
DOM
Document Object Model Objetivo: oferecer uma interface de programao
Serve para criar um novo documento XML navegar na rvore XML modificar, remover ou adicionar ns (elementos, atributos, texto, comentrios, PIs, etc.)
SAX
Simple API for XML Baseada em eventos Dispara eventos durante processamento do
documento
Exemplos de eventos inicio e fim do documento incio e fim do elemento (pode-se descobrir qual) n de caractere n de comentrio ...
eventos podem ser capturados por ouvintes cadastrados aes podem ser tomadas em cada situao
SAX: operaes
Se um processador SAX receber o documento ...
<carta> <mensagem id="1">Bom dia!</mensagem> </carta>
DOM: operaes
Leitura Passo 1: carregar o documento e identificar os tokens Passo 2: identificar elementos e outros ns (pode usar SAX) Passo 3: montar a rvore (pode ser feito durante o passo 2) Alterao Localiza o n de referncia Remove, altera, muda posio, cria n antes ou depois. Criao Cria raiz; cria elemento raiz; cria elementos filho e atributos; cria ns de texto Monta rvore: coloca atributos em elementos, coloca ns de texto em elementos, coloca elementos filho em elementos pai, coloca elemento raiz na raiz
9
10
DOM: Hierarquia
DocumentFragment Document CharacterData Attr Element Node DocumentType Notation Entity EntityReference ProcessingInstruction
11
Text
CDATASection
Comment
NodeList NamedNodeMap
DOM: navegao
DOM usa constantes para identificar tipos de n
Tipo
valor
1 2 3 4 5 6 7 8 9 10 11 12
ELEMENT_NODE Element ATTRIBUTE_NODE Attr TEXT_NODE Text CDATA_SECTION_NODE CDATASection ENTITY_REFERENCE_NODE EntityReference ENTITY_NODE Entity PROCESSING_INSTRUCTION_NODE ProcessingInstruction COMMENT_NODE Comment DOCUMENT_NODE Document DOCUMENT_TYPE_NODE DocumentType DOCUMENT_FRAGMENT_NODE DocumentFragment NOTATION_NODE Notation
12
13
integrao HTML-XML
Permite embutir em uma pgina HTML (gerada ou no
dinamicamente) um arquivo XML Arquivo pode ainda ser transformado por XSLT no momento da incluso e receber formatao CSS
Sintaxe:
<xml id="identificador"> ... cdigo XML .. </xml>
Fonte: www.xml101.com
15
cd_catalog.xml
16