xml completo

Upload: wweellddeerr

Post on 12-Jul-2015

285 views

Category:

Documents


0 download

TRANSCRIPT

XML: uma introduo prtica

Helder da Rocha www.argonavis.com.br1

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 tecnologias2

Assuntos abordadosPor 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 Concluses3

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 XMLusuario_33.xml

Severino Severovitch [email protected] 11 9999 4321

elemento atributo "n" de texto

4

XML versus HTMLHTML mostra como apresentar

Severino Severovitch [email protected] 11 9999 4321 Severino Severovitch [email protected] 11 9999 4321

XML mostra o que significa

5

Anatomia de um documento XML Documentos XML so documentos de texto Unicode uma hierarquia de elementos a partir de uma raiz Menor documento tem um elemento (vazio ou no):

Menor documento contendo elemento vazio

Elemento raiz

=

Menor documento contendo elemento e contedo texto Etiqueta inicial Contedo do Elemento Etiqueta final

6

Partes de um documentoelemento raiz declarao XML n raiz ( / )

atributos Alberto Santos Dumont Rua do Encanto, 22 - 2o. andar Centro - 25600-000 - Petrpolis - RJ [email protected] 21 elementos 2313011

7

/cartao-simples cartao-simples

n raiz elemento raiz

rvore XMLemail email

nome nomeAlberto Santos Dumont

[email protected]

endereco endereco logotipo logotipo telefone telefoneRua do Encanto, 22 2o. andar - Centro - 25600-000 Petrpolis - RJ

href href

numero numero tipo tipo2313011 residencial

ddd ddd

/imagens/logo14bis.gif

LEGENDA

21

n de elemento n de atributo n de texto

8

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

elemento/atributo da linguagem, que pode ser herdado atravs do escopo de uma sub-rvore atribudo explicitamente atravs de um prefixo

Exemplo

prefixo

identificador

Severino Severovitch Sibria Informtica Ltda. [email protected] Este elemento pertence a outro namespace

9

Por que usar XML para compartilhar dados? Porque um padro aberto Facilidade para converter para formatos proprietrios Porque texto Fcil de ler, fcil de processar, menos incompatibilidades Porque promove a separao entre estrutura,

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 clientes10

Facilita gerao de dados para visualizao dinmica Evita repetio de informao / simplifica manuteno

Onde usar XML? Dados armazenados em XML podem ser facilmente

transformados em outros formatostexto "custom" XML WML VoiceXML Web HTML CSS JavaScript

VRML

XSLT

WDOM SAX XSL-FOPDF PDF PDF RTF TeX SGML PDF e PostScript

SGBD

Grficos SVG Imagens JPG e PNG

2000 2001

11

Como produzir XML Criando um documento de texto Unicode a partir

de qualquer editor de textos Severino Severovitch [email protected] 11 9999 4321

Gerando um documento a partir de uma rvore

montada dinamicamente33 Severino Severovitch [email protected] celular 11 9999 4321

Severino Severovitch [email protected] 11 9999 4321

12

Documentos XML bem formados Para que possa ser manipulado como uma rvore,

um documento XML precisa ser bem formado Documentos que no so bem formados no so

documentos XML

Documentos bem-formados obedecem as regras de

construo de documentos XML genricos Regras incluem

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 aninhados13

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 regras14

EsquemaDocumentos que aderem especificao (vlidos)

O esquema representa uma classe Os documentos so instncias

Documento fora da especificao

Esquema (universo de documentos vlidos)

Como definir esquemas:

DTD - Document Type Definition W3C XML Schema

15

DTD vs. XML Schema Um esquema essencial para que haja comunicao

usando XML Pode ser estabelecido "informalmente" (via software) Uso formal permite validao usando ferramentas

genricas de manipulao de XML Solues

DTD

XSchema

Simples mas no XML No suporta namespaces Limitado quando a tipos de dados

XML, porm mais complexo Suporta namespaces Permite definio de tipos

16

Visualizao em um browser Folha de estilo: conjunto de regras para formatar ou

transformar as informaes de um documento XML CSS - Cascading Style Sheets XSLT - eXtensible Stylesheet Language Transformao em texto, HTML ou outro formato Aplicao em tempo real ou prvia (no servidor) Se no estiver associado a uma folha de estilo, o Transformao visando apresentao visual Aplicao do estilo em tempo de execuo no cliente

documento XML no tem uma "aparncia" definida Internet Explorer e outros mostram a rvore-fonte XML Netscape mostra apenas os ns de texto17

Como manipular XML? H duas APIs padro para manipular (interpretar,

gerar, extrair dados e tratar eventos) arquivos XML: W3C Document Object Model (W3C DOM) Simple API for XML (SAX)

Servem a finalidades diferentes Implementaes disponveis em vrias linguagens SAX oferece mtodos que respondem a eventos

produzidos durante a leitura do documento DOM monta uma rvore, que permite a notifica quando um elemento abre, quando fecha, etc.

navegao na estrutura do documento propriedades dos objetos podem ser manipuladas18

Leitura de XML com SAX Se um processador SAX receber o documento ... Bom dia!

... ele ir disparar a seguinte seqncia de eventos:startDocument() startElement("carta", []) startElement("mensagem", [Attribute("id","1")]) characters("Bom dia!") endElement("mensagem") endElement("carta") endDocument()

Programador deve implementar um objeto "ouvinte" para

capturar os eventos e extrair as informaes desejadas19

Criao de documentos com DOM (1) Criao dos elementos/ Document

Obter objeto do tipo Document (raiz) (dependente de processador): doccarta = doc.createElement("carta") mens = doc.createElement("mensagem") texto = doc.createTextNode("Bom dia!")

Element Element String

Bom dia!

Atributos

mens.setAttribute("id", "1")

20

Criao de documentos com DOM (2)Montagem da rvore passo-a-passo1. Sub-rvore

3. rvore completa/

mens.appendChild(texto)Bom dia!

2. Sub-rvore

carta.appendChild(mens)

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 absolutos33 Severino Severovitch [email protected] celular 11 9999 4321

/contato/@codigo /contato/telefone/@tipo /contato/telefone/numero/text()

Relativos ao contexto /contato:

@codigo (ou ./@codigo) telefone/@tipo (ou ./telefone/@tipo) telefone/numero/text()

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: , , , ... Expresses XPath para localizar ns da rvore-fonte Texto ou XML a ser gerado no documento-resultado

Processador XSLTfonteToHtml.xslt

Folha de estilosfonte.xml

Documento Fonte

Processador XSLT Xalan, TrAX, Saxon Netscape, I. Explorer

Documento Resultado

23

XSLT: documento-fonte (1) Considere o seguinte documento-fonte: Rio de Janeiro Itabuna / @id PTGWZ Rio de Janeiro @partida Itabuna 08:15

rvore-fonte

24

XSLT: folha de estilos (2) O seguinte template (parte de uma folha de estilos XSLT)

pode extrair os dados do documento-fonte

A aeronave de prefixo documento decolou resultado de s (em preto) tendo como destino o aeroporto de . elementos XSLT(em vermelho, com prefixo xsl)

documento-fonte (em azul - XPath)

Elementos XSLT geralmente so usados com um prefixo

associado ao seu namespace: para evitar conflitos com o documento-resultado.25

XSLT: documento-resultado (3) Aps a transformao, o resultado ser A aeronave de prefixo PTGWZ decolou de Rio de Janeiro s 8:15 tendo como destino o aeroporto de Itabuna. Para obter outros resultados e gerar outros formatos

com os mesmos dados, deve-se criar folhas de estilo adicionais26

XLink, XPointer e XQuery XLink: uma especificao W3C que permite definir vnculos

entre documentos XML Funcionalidade mnima igual ao do HTML Funcionalidade estendida permite vnculos bidirecionais, arcos,

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")/contatoWHERE 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 XSLTXML

XSLTXML

Fonte

Processador XSLT

XML

Documento XSLFO

FOP

Documento PDF

28

XSL-FO: menor documento Este o "" do XSL-FO Ligao entre as regras de layout e o contedo afetado Hello PDF! Este o "" do XSL-FO

29

Pgina XHTML Pgina XHTML

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

elementos/atributos para mudar cor, alinhamento, etc. Pode ser misturada (estendida) com outras linguagens

Normalmente gerada via XSLTXML

XML (MathML, SVG, linguagens proprietrias)XSLTXML XML

Processador XSLT

Documento Fonte

Documento XHTML

30

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

Zoom +

31

Exemplo de SVGJavaScript

CSS SVG XML

XLink

32

Algumas outras linguagens XMLMathML WML VoiceXMLClasse oper(): void oper2(): int1 *

Classe2 oper(): void oper2(): int

XMI

Classe3 oper(): void oper2(): int

Web Services

SOAP WSDL UDDI

XML-RPC

CML33

ebXML

Demonstrao Exemplo de transformao XML FO PDF

FOP

(1)

(1.a) (1.b)

Xalan Texto

(3)

SVG

JFOR

W

(4) (2) HTML HTML2000 2001

Texto texto texto texto texto texto texto texto texto

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

informaes usando XML, pode-se usar

DTD ou XSchema para especificar o modelo de dados e validar

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 vetorial36

Fontes[1] World

Wide Web Consortium (W3C). eXtensible Markup Language.

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]

links para o plug-in SVG da Adobe (Win/Mac).

IBM Developerworks. http://www-106.ibm.com/developerworks/. Diversos tutoriaise artigos sobre XML, XSLT, DOM e SAX usando geralmente Java.

[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

principais tecnologias W3C. 5 captulos em http://cafeconleche.org/books/bible2/

T. Ray. Learning XML. OReilly & Associates, 2001. Introduo ao XML e 37

DTD, XSLT, XLink e XPointer (os dois ltimos baseados em especificaes draft).

[email protected]

www.argonavis.com.br38

XML: uma introduo prtica

Helder da Rocha www.argonavis.com.br

1

Como criar um documento XML XML no estabelece nenhum vocabulrio mas

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

Salve o arquivo Abra no Internet Explorer

2

Um dos menores documentos XML

Fulano de Tal Elemento raiz

Um elemento

Fulano de Tal Etiqueta inicial Contedo do Elemento Etiqueta final

3

Elemento vazio

4

Elementos podem conter elementosfulano_de_tal.xml

Fulano de Tal [email protected] 11 8765 4321 5

Componentes de um documento rvore XML ns, raiz, galhos e folhas Prlogo Comentrios Instrues de processamento Elementos Atributos Ns de texto Entidades6

Estrutura XML Um documento XML pode ser representado como uma

rvore. A estrutura formada por vrios ns.

informaes usadas pelo processador XML Alberto Santos Dumont Rua do Encanto, 22 - 2o. andar Centro - 25600-000 - Petrpolis - RJ [email protected] um "n" pode ser ... um elemento, 21 um atributo, um bloco de texto, 2313011 um comentrio, uma instruo, uma declarao,

uma entidade, ... 7

Prlogo Declarao XML Comentrio Instruo de processamento Declarao de tipo de documento Alberto Santos Dumont Rua do Encanto, 22 - 2o. andar Centro - 25600-000 - Petrpolis - RJ [email protected] 21 2313011

8

N raiz e elementoselemento raiz n raiz ( / ) Alberto Santos Dumont Rua do Encanto, 22 - 2o. andar Centro - 25600-000 - Petrpolis - RJ [email protected] 21 elementos elementos 2313011

9

Atributos S podem conter um descendente (s texto) Alberto Santos Dumont Rua do Encanto, 22 - 2o. andar Centro - 25600-000 - Petrpolis - RJ [email protected] 21 2313011 atributos

10

Ns de texto No podem ter descendentes (so as folhas da rvore) Alberto Santos Dumont Rua do Encanto, 22 - 2o. andar Centro - 25600-000 - Petrpolis - RJ [email protected] 21 2313011 ns de texto

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; DIGO_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 Joo & Maria S/A ]]>

20

Instrues de processamento Instrues dependentes do processador Funcionam como comentrios para os processadores

que no a conhecem

21

Comentrios Iguais aos comentrios HTML

22

Declarao XML Opcional (exceto queno conjunto de

caracteres usado for diferente de UTF-8

23

Documento bem formado ter um nico elemento raiz etiquetas iniciais e finais combinam (levando em conta que

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)

associa o identificador com todos os elementos que no

possuem prefixo. Ex: xmlns:prefixo="identificador"

nome local precedido do prefixo. Ex O prefixo arbitrrio e s existe dentro do documento O identificador (geralmente uma URI) deve ser reconhecido pela aplicao

associa o identificador com os elementos e atributos cujo

25

ExemploVale para todo o elemento Esta URI est associada a este prefixo

Alberto Santos Dumont Rua do Encanto, 22 - Centro 25600-000 - Petrpolis - RJ [email protected] 21 2313011 26

Exemplo com 3 namespaces URI padro Fulano de Tal Fulano de Tal XHTML Contabilidade Contabilidade Rua Projetada, 33 Rua Projetada, 33 link negrito HTML link negrito HTML 2313011 2313011

27

XML: uma introduo prtica

Helder da Rocha www.argonavis.com.br1

XLink uma coleo de atributos Namespace: http://www.w3.org/1999/xlink Sete atributos: type = simple | extended | locator | arc | title | resource href = a URI destino do vnculo show = new | replace | embed | other | none actuate = onLoad | onRequest | other | none title = descrio detalhada role = papel / contexto do vnculo label = descrio sucinta (para exibio) Exemplo de uso tpico

2

Exemplos: link "tipo " e ""link 3

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 XPathxpointer(expresso)

Quando h campos marcados com ID no documento

destino, pode-se usar um ponteiro#ponteiro xpointer(expresso)#ponteiro

4

XML: uma introduo prtica

Helder da Rocha www.argonavis.com.br

1

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

2

Por que transformar Converter para um formato mais til Atualizar documentos escritos em uma aplicao XML obsoleta Devolver resultados adequados para o cliente que ir uslos Gerar formatos para exibio depurao edio transmisso

3

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: , , , ... Expresses XPath para localizar ns da rvore-fonte Texto ou XML a ser gerado no documento-resultadofonteToHtml.xslt

Processador XSLTFolha de estilosfonte.xml

Documento Fonte

Processador XSLT Xalan, TrAX, Saxon Netscape, I. Explorer

Documento Resultado

4

Transformao XSL A transformao XSL pode ocorrer em vrias etapas,

no cliente e/ou no servidor No servidor, h maior flexibilidade: Arquivos XML podem ser mesclados Informaes podem ser extradas de vrios arquivos para

incluso em outro arquivo Por exemplo: um ndice

Arquivo resultante pode ser XML, HTML, RTF ou

qualquer outro formato Browser no precisa suportar XML

5

Transformao XSL no cliente Em browsers que suportam XML e XSL, a

transformao dos dados pode ser realizada no cliente Browser deve ser capaz de entender XML e XSL O resultado gerado pode ser XML ou HTML 4.0 (para

maior suporte)

Alm da transformao XSL, no servidor ou cliente, a

pgina pode ainda ser formatada com CSS.

6

Transformao XSLT No servidorServidor XML CSS XSL CSS HTML Pgina Cliente

No clienteServidor CSS XML XSL CSS XML XSL Pgina7

Cliente

Fundamentos de transformao A transformao XSLT realizada sobre a rvore de um

documento-fonte Todos os ns do documento so acessveis. Tipos de n disponveis:

Elemento Atributo Texto Comentrio Instruo de processamento Namespace Raiz

8

XSLT: documento-fonte (1) Considere o seguinte documento-fonte: Rio de Janeiro Itabuna / @id PTGWZ Rio de Janeiro @partida Itabuna 08:15

rvore-fonte

9

XSLT: folha de estilos (2) O seguinte template (parte de uma folha de estilos XSLT)

pode extrair os dados do documento-fonte

A aeronave de prefixo documento decolou resultado de s (em preto) tendo como destino o aeroporto de . elementos XSLT(em vermelho, com prefixo xsl)

documento-fonte (em azul - XPath)

Elementos XSLT geralmente so usados com um prefixo

associado ao seu namespace: para evitar conflitos com o documento-resultado.10

XSLT: documento-resultado (3) Aps a transformao, o resultado ser A aeronave de prefixo PTGWZ decolou de Rio de Janeiro s 8:15 tendo como destino o aeroporto de Itabuna. Para obter outros resultados e gerar outros formatos

com os mesmos dados, deve-se criar folhas de estilo adicionais11

Bloco para transformao recursiva Atributo match: contm expresso XPath para localizao de padro (no caminho) N de contexto: dentro do , todas as expresses XPath so relativas ao n corrente e lista de ns correntesPadro para combinao

[[[]]] Caminho relativo

12

Imprime o valor do n indicado pelo seu atributo

"select" Converte todo o contedo para texto Caminho relativo ao n corrente.

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 absolutos13

Imprime texto Preserva espaos, novas-linhas e tabuaes til para controlar forma de impresso do texto Quebra linha depois No quebra linha Atributo disable-output-escaping="yes" evita

substituio de entidades

14

Para produzir resultados diferentes de XML e definir

formato de dados de sada texto

html xml com DTD Formatos diferentes de UTF-8 15

Faz chamada recursiva a prximo template (se no

tiver argumentos) ou indicado em atributo select

Item 1: Item 2: [] ()

16

Regras nativas 1. Processamento da raiz 2. Processamento de todos os elementos 3. Processamento de texto 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

navegao na rvore de um documento.

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

pode ser um tipo de dados

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

de ns (node set) Exemplo: /raiz/elemento/filho/neto ../../primo[3]

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

o(s) n(s) desejado(s)

22

Caminhos vs. Padres A expresso "nome" ter resultados

diferentes se a expresso for um caminho ou um padro Caminho: [contexto atual]/nome Padro: [quaisquer ancestrais]/nome

pessoas

pessoa nome

pessoa nome

pessoa nome

Na rvore ao lado, se o n de

contexto for o caminho devolver um conjunto vazio o padro devolver um conjunto de trs ns

Fulano Sicrano Beltrano

23

Onde usar padres/caminhos Atributos XSLT match, recebem padres para

instanciar templates: Atributos XSLT select e test, usados dentro dos ... ...

templates, recebem caminhos: ...

24

Bloco condicional Executa se expresso XPath passada retornar true .... ...

25

Condicional tipo case (if-then-else)

... ... ... ...

26

Ordenao Aplica-se a cada n do conjunto de ns do contexto. Use dentro de

27

Looping com Permite processar um conjunto de ns dentro da

mesma regra de template (sem usar recurso)

.

28

e pode ser usado dentro de para

ordenar os elementos

:

29

XSL Formatting Objects Aplicao XML para descrever o layout preciso de

texto e imagens em uma pgina Elementos representam

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 XML30

Regras para formatao de vrias pginas Layout de pginas individuais, margens, rodaps Hifenao, alinhamento, fontes, cores, leading imagens, grficos, tabelas, listas, links

Hello World Ligao entre as regras de layout e o contedo afetadoEste o "" do XSL-FO

Hello! Este o ""do XSL-FO

31

Raiz do documento XSL-FO Define o namespace http://www.w3.org/1999/XSL/Format

Uso tpico ...

Normalmente, documentos FO so gerados com XSLT

32

Estrutura do documento O elemento deve conter Um 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)

Pelo menos um , onde fica o contedo define uma seqncia de pginas em um documento cada deve estar associado a um mestre de layout existente contm objetos e/ou 33

Cabealho Cabealho mnimo

define margens, altura e largura da

pgina e contm pelo menos uma regio

master-name do elemento ID para que elementos de contedo

possam referenci-lo Atributos tpicos (ID e dimenses da pgina) ... regies afetadas ... 34

Regies H cinco regies obrigatria rea de contedo principal da pgina define um ID implcito (fixo): xsl-region-body, para uso por

elementos de contedo de fluxo ou esttico.

e Em documentos de linguagem ocidental, start a margem esquerda e end margem direita. IDs: xsl-region-start e xsl-region-end e before a margem superior, after a margem inferior. IDs: xsl-region-before e xsl-region-after.35

Margens e regies Margens do limitam a rea de impresso ocupa todo o espao restante Outras regies opcionais podem ser definidas sobre

margin-top

margin-right

margin-left

Margens de devem ser iguais ou maiores que os extent das regies marginais

margin-bottom

36

XSLT Layout geralmente permanece fixo em folha XSLT+FO

37

Contedo O contedo do documento pode estar Em blocos , que criam nova pgina quando o texto preenche o espao disponvel na atual Em blocos , 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: ... ...

Blocos Dentro de ou , contedo deve estar em blocos: , , , etc.38

Blocos de contedo Este bloco de associado comregion-after

pgina

Este bloco de contedo de fluxo est associado com region-body

Texto que pode atravessar pginas.

39

Blocos Os elementos e devem conter

elementos de bloco Bloco de propsito geral Bloco que contm itens de lista Bloco que contm tabela

Blocos podem ter contedo misto, contendo texto e

elementos

Trecho de propsito geral Imagem ou grfico externo Nmero de pgina Referncia de hipertexto Cdigo XML embutido (SVG, por exemplo) Linhas e outros decoradores

40

Propriedades Propriedades de estilo podem ser aplicadas em ,

e em quaisquer elementos descendentes Propriedades so atributos Maior parte das propriedades so iguais e tm mesma sintaxe que as propriedades do CSS Uma linha de texto Algumas propriedades CSS so elementos em XSL-FO Alguns seletores CSS so atributos em XSL-FO

Suporte s propriedades depende do processador41

Coluna 1 Coluna 2 clula 1.1 clula 1.2 ... ...

42

Item um ... ...

43

Permite incluir uma imagem na pgina Objeto inline

44

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:

45

Permite embutir outra linguagem XML na pgina

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

Ferramentas para desenvolver FO Para rodar o FOP (arquivo .bat em c:\xml) fop arquivo.fo arquivo.pdf

Para rodar o JFOR (arquivo .bat em c:\xml) jfor arquivo.fo arquivo.doc

47

XML: uma introduo prtica

Helder da Rocha www.argonavis.com.br1

Programao com XML H duas APIs padro para manipular (interpretar, gerar,

extrair dados e tratar eventos) arquivos XML: Document Object Model (DOM) Simple API for XML (SAX)

As duas APIs servem a finalidades diferentes. SAX mais simples. Oferece mtodos que respondem a

eventos produzidos durante a leitura do documento Notifica quando um elemento abre, quando fecha, etc.

DOM vai alm e monta uma estrutura hierrquica de

objetos, em forma de rvore, que permite a navegao na estrutura do documento Propriedades dos objetos podem ser manipuladas

2

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

uniforme, independente de plataforma e linguagem, para aplicaes que manipulam XML OMG IDL

Serve para criar um novo documento XML navegar na rvore XML modificar, remover ou adicionar ns (elementos, atributos, texto, comentrios, PIs, etc.)

4

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

5

SAX vs. DOM No so concorrentes DOM ideal para manipular a rvore XML recursivamente SAX ideal para ler o documento seqencialmente DOM requer carga de todo o documento: consome mais memria SAX no "lembra" de tarefas realizadas: no serve para validar referncias cruzadas Nos processadores Crimson e Xerces, SAX usada

para montar a rvore DOM

6

SAX: operaes Se um processador SAX receber o documento ... Bom dia!

... ele ir disparar a seguinte seqncia de eventos:startDocument() startElement("carta", []) startElement("mensagem", [Attribute("id","1")]) characters("Bom dia!") endElement("mensagem") endElement("carta") endDocument()

Programador deve implementar um objeto "ouvinte" para

capturar os eventos e extrair as informaes desejadas7

SAX: exemplo em Java (trecho)public void characters(char[] ch, int start, int length) { for (int i = start; i < length; i++) { System.out.println(ch[i]); } } public void startElement(String uri, String localName, String qName, Attributes att) { System.out.print(""); } public void endElement(String uri, String localName, String qName) { System.out.println(""); }

8

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 raiz9

DOM: tipos de dados Colees: NodeList, NamedNodeMap Raiz da hierarquia de ns: Node. Subclasses: Attr (atributo) CharacterData (classe abstrata) Text (n de texto) CDATASection (seo CDATA) Comment (comentrio) Document (documento inteiro) DocumentFragment (sub-rvore) DocumentType Element (elemento) Entity (valor da entidade - contedo) EntityReference (nome da varivel) Notation (valor de uma notao) ProcessingInstruction (instruo de processamento)

10

DOM: HierarquiaDocumentFragment Document CharacterData Attr Element Node DocumentType Notation Entity EntityReference ProcessingInstruction11

Text

CDATASection

Comment

NodeList NamedNodeMap

DOM: navegao DOM usa constantes para identificar tipos de n

(nodeType) Constante (opcional)

Tipo

valor1 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

Para usar DOM preciso obter uma instncia do documento (forma de

fazer isto depende de processador) IE (data island): Internet Explorer Netscape Xerces JAXP JDOM IBM Parser MSXML

Cdigo pode manipular referncia xdoc e obter raiz ouxdoc.async = false; // desabilita threads xdoc.load("arquivo.xml"); document = xdoc; // Este o elemento raiz var xdoc = new ActiveXObject("Microsoft.XMLDOM"); xdoc.load("arquivo.xml")

Java JAXP Criar uma instncia a patir de DocumentBuilderFactory

13

Ilhas de dados XML (s MSXML) Elemento HTML (Internet Explorer) que possibilita a

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: ... cdigo XML ..

O identificador necessrio para possibilitar a

manipulao dos dados na pgina O arquivo tambm pode ser importado 14

Ilhas de dados (exemplo) (1) Pode-se inserir XML em HTML da seguinte forma Tove Jani Reminder Don't forget me this weekend!

Ou importando de um arquivo externo

Fonte: www.xml101.com

15

Ilhas de dados (2) - s MSXML Dados em XML podem ser vinculados a valores em

tabelas, por exemplo, ou manipulados via JavaScript/VBScript Fonte: www.xml101.com Empire Burlesque Bob Dylan Hide your heart Bonnie Tyler

cd_catalog.xml

16