XML Completo
-
Upload
wweellddeerr -
Category
Documents
-
view
285 -
download
0
Transcript of XML Completo
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
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).
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