Você está na página 1de 30

1

Introduo a XML X100


Helder da Rocha
(helder@argonavis.com.br)
Atualizado em setembro de 2001
2
O que XML?
! eXtensible Markup Language: padro W3C
! Uma maneira de representar informao
! no uma linguagem especfica
! no define vocabulrio de comando
! no define gramtica, apenas regras mnimas de estrutura
! 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>
elemento
atributo
"n" de texto
3
XML versus HTML
HTML mostra
como
apresentar
XML mostra
o que
significa
<nome>Severino Severovitch</nome>
<email>bill@norte.com.br</email>
<telefone>
<ddd>11</ddd>
<numero>9999 4321</numero>
</telefone>
<h1>Severino Severovitch</h1>
<h2>bill@norte.com.br</h2>
<p>
<b>11</b>
<i>9999 4321</i>
</p>
4
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
! Menor documento contendo elemento e contedo texto
<nome> !"#"$%&' !"#"$'#%( </nome>
<nome> !"#"$%&' !"#"$'#%( </nome>
Etiqueta
inicial
Contedo do
Elemento
Etiqueta
final
Elemento raiz
<nome/> <nome></nome>
=
5
XML Namespaces
! Estabelecem um contexto para elementos e atributos
! formalmente declarado atravs de um identificador (um string, geralmente
uma URI) atravs de atributo reservado do XML: xmlns
! Podem ser associados a um prefixo para qualificar elementos e atributos
! Quando o prefixo no usado, estabelece um namespace default adotado
pelo elemento onde declarado e seus elementos filho
!"#$%&'(')*
!,-$.) %/#0'0-12"-3%/0)"2*456!7,-$.)*
!(&#$' !"#$%&'()*+,,-../0#*"-'*
!,-$.)*(8%9)")!7,-$.)*
!7(&#$'*
!7"#$%&'(')* !"#$%&'(') :$&/"+112%;#<77'..=(&#$'2*
!,-$.) %/#0'0-12"-3%/0)"2*456!7,-$.)*
!1+(&#$'*
!1+,-$.)*(8%9)")!71+,-$.)*
!,-$.) %/#0'0-128);'"2*>?@!7,-$.)*
!71+(&#$'*
!7"#$%&'(')*
Escopo do namespace vale
para elemento <clima> e
herdado por todos os seus
descendentes
Escopo do namespace vale
para descendentes de
<simulacao> qualificados
com o prefixo 'w'
Nos dois casos, elementos <tempo> significam coisas diferentes, mas no h conflito
porque pertencem a namespaces diferentes (um deles no tem namespace)
6
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 use um editor XML para descobrir
! 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 aninhados
7
Exemplos de algumas regras
! (1) Elementos no devem se sobrepor
! No pode !'*!A*!7'*!7A*
! (2) Atributos tm que ter valores entre aspas
! No pode !8; B#0,8146*
! Deve ser !8; B#0,812462*
! (3) Nomes de elementos so case-sensitive
! No pode !'*???!7C*
! (4) Todos os elementos tm marcadores de
abertura e de fechamento
! No pode !A;*:!A;*
! Deve ser !A;7*:!A;7* ou
!A;*!7A;*:!A;*!7A;*
8
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 considerado vlido em relao a
um esquema se obedecer todas as suas regras
9
Esquema
! O esquema representa uma classe
! Os documentos so instncias
Esquema (universo de
documentos vlidos)
Documentos que aderem
especificao (vlidos)
Documento
fora da
especificao
! Como definir esquemas:
! DTD - Document Type Definition
! W3C XML Schema
10
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 padro do W3C
DTD XML Schema
234546478 0:$;-;:
<$:"=> ="-*#> ;=#=?:$=@A
23B885CD8 0:$;-;:
0:E*F: 768GH47 IJ4KLCJ4MA
2!%E+%0N="-
!"#$%+!%E&'OOO,P65D0N="-'A
2!%E+=#="=$; $-"=&'0:$;-;:'A
2!%E+0:".#=!8Q.=A
2!%E+-;;)*R(;= $-"=&'0:E*F:'
(%=&')=S(*)=E'A
XML, porm mais complexo
Suporta namespaces
Permite definio de tipos
Simples mas no XML
No suporta namespaces
Limitado quando a tipos de dados
11
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
! Facilita gerao de dados para visualizao dinmica
! Evita repetio de informao / simplifica manuteno
! Porque permite semntica na Web
! Elementos HTML no carregam significado, apenas dicas
de formatao: mecanismos de busca ficam prejudicados
12
Como produzir XML
! Criando um documento de texto Unicode a partir
de qualquer editor de textos
! Gerando um documento a partir de uma rvore
montada dinamicamente
20:$;-;: 0:E*F:&'TT'A
2$:"=AD=U=)*$: D=U=):U*;0N2,$:"=A
2="-*#AR*##V$:);=O0:"OR)2,="-*#A
2;=#=?:$= ;*.:&'0=#(#-)'A
2-)=-AWW2,-)=-A
2$("=):AXXXX YTZW2,$("=):A
2,;=#=?:$=A
2,0:$;-;:A
20:$;-;: 0:E*F:&'TT'A
2$:"=AD=U=)*$: D=U=):U*;0N2,$:"=A
2="-*#AR*##V$:);=O0:"OR)2,="-*#A
2;=#=?:$= ;*.:&'0=#(#-)'A
2-)=-AWW2,-)=-A
2$("=):AXXXX YTZW2,$("=):A
2,;=#=?:$=A
2,0:$;-;:A
celular
11
9999 4321
33
Severino Severovitch
bill@norte.com.br
13
Visualizao em um browser
! Folha de estilo: conjunto de regras para formatar ou
transformar as informaes de um documento XML
! CSS - Cascading Style Sheets
! Transformao visando apresentao visual
! Aplicao do estilo em tempo de execuo no cliente
! 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
documento XML no tem uma "aparncia" definida
! Vrios browsers por default mostram a rvore-fonte XML
! Outros mostram apenas os ns de texto sem formatao
14
Formas de processamento XML
! Via APIs de programao
! SAX Simple API for XML: leitura seqencial, ideal para
extrao de dados
! DOM Document Object Model: leitura completa, ideal
para manipulao (insero, reordenao, alterao,
remoo de ns)
! Via linguagens de processamento (suportadas por
parsers e processadores padronizados pela W3C)
! XSLT, XPath, XLink, XPointer e XQuery: extrao,
transformao e localizao de dados
! XSL-FO, XHTML, SVG: apresentao de dados
15
Processamento XML
PDF
PDF
PDF
2000 2001
SGBD
<xml>
<xml>
<xml>
2!"#A
!:$&*
Web
XML para
SGBD
e vice-versa
HTML
CSS
JavaScript
VRML
PDF e
PostScript
Grficos SVG
Imagens
JPG e PNG
WML
VoiceXML
"custom"
XML
DOM
SAX
texto
RTF
TeX
SGML
16
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
! Expresses XPath so usadas dentro de atributos XML
! Usadas em XSLT, XLink, XQuery e XPointer
celular
11
9999 4321
33
Severino Severovitch
bill@norte.com.br
Caminhos absolutos
,0:$;-;:,V0:E*F:
,0:$;-;:,;=#=?:$=,V;*.:
,0:$;-;:,;=#=?:$=,$("=):,;=!;<@
Relativos ao contexto ,0:$;-;: :
V0:E*F: !"# O,V0:E*F:%
;=#=?:$=,V;*.: !"# O,;=#=?:$=,V;*.:%
;=#=?:$=,$("=):,;=!;<@
17
XLink, XPointer e XQuery
! XLink: especificao W3C que define vnculos (de diversos
tipos) entre documentos XML
! Funcionalidade mnima igual ao <a href> do HTML
! 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 no destino, acessvel por XLink: !#*$[+N)=?&'I*E=$;'
! Caminho resultante de expresso XPath: !.:*$;=)<,#*U):,*E@
! XQuery: linguagem para pesquisar documentos XML atravs de
queries com sintaxe inspirada em SQL
! Exemplo:
\GJ ]R C7 E:0("=$;<'(%(-)*:^TTO!"#'@,0:$;-;:
_`4J4 $:"=&'D=U=)*$: D=U=):U*;0N'
J48LJ7 ]R
18
XSL
! eXtensible Stylesheet Language
! Aplicao de XML para transformao e apresentao de dados
disponveis em XML
! No existe mais como uma especificao. Foi dividida em duas
! XSLT foca em transformao de dados. XSLT uma linguagem
funcional para processamento de templates
! XSL-FO linguagem de descrio de pgina (como PDF, HTML+CSS)
! Cada especificao define um namespace prprio
! XSLT usa o identificador 8,,.<77BBB?B5?);374DDD7EFG7H;'/"I);$
! XSL-FO usa 8,,.<77BBB?B5?);374DDD7EFG7J);$',
! Importante: as URLs acima so usadas como identificadores
de namespace, e no representam nenhum endereo Web
! muito comum usar URLs como identificadores de namespace
! Todas as aplicaes XML do W3C usam URLs da forma:
N;;.+,,111O1TO:)F,!"#$%&'%()*"("$+,!,'(#$-$.*"+
19
XSLT
! XSL Transformations (XSLT)
! Linguagem (XML) para criao de documentos que
contm regras de transformao para documentos XML
! Documentos escritos em XSLT so chamados de folhas
de estilo (mas so na verdade templates) e contm
! Elementos XSLT: !,-$.&',-*, !#I*, !I);=-'(8*, ...
! Expresses XPath para localizar ns da rvore-fonte
! Texto ou XML a ser gerado no documento-resultado
! Usa-se um processador XSLT
Processador XSLT
Xalan, TrAX, Saxon
Firefox, I. Explorer, etc.
Folha de
estilos
Documento
Resultado
Documento
Fonte
fonteToHtml.xslt
fonte.xml
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="livro/titulo">
<td><xsl:value-of select="." /></td>
20
XSLT: documento-fonte (1)
! Considere o seguinte documento-fonte:
!'-;)/'9- #012KHLMN2*
!);#3-$ .';,#0'126O<4@2*P#) 0-
Q'/-#;)!7);#3-$*
!0-",#/)*FR) K'%&)!70-",#/)*
!7'-;)/'9-*
! E sua representao como uma rvore-fonte
J*: E= a-$=*):
bc+Wd
,
V*E
V.-);*E-
2-=):$-U=A
2:)*F="A
2E=%;*$:A
e8f_g
Dh: e-(#:
21
XSLT: folha de estilos (2)
! O seguinte template (parte de uma folha de estilos XSLT) pode
extrair os dados do documento-fonte
!:"&<,-$.&',- $',(812'-;)/'9-2*
!.*C '-;)/'9- 0- .;-I#:)
!:"&<9'&%-=)I "-&-(,12S#02 7* 0-()&)%
0- !:"&<9'&%-=)I "-&-(,12);#3-$2 7* T"
!:"&<9'&%-=)I "-&-(,12);#3-$7S.';,#0'2 7*
,-/0) ()$) 0-",#/) ) '-;).);,) 0-
!:"&<9'&%-=)I "-&-(,120-",#/)2 7*?!7.*
!7:"&<,-$.&',-*

! Elementos XSLT so qualificados com prefixo (da forma
2!%#+=#="=$;:A) para evitar conflitos com o documento-resultado
! O prefixo xsl e namespace precisam ser declarados com xmlns:xsl
documento-fonte
(em azul - XPath)
documento
resultado
(em preto)
elementos XSLT
(em vermelho, com prefixo xsl)
22
XSLT: documento-resultado (3)
! Aps a transformao, o resultado ser
!.*C '-;)/'9- 0- .;-I#:)
KHLMN 0-()&)%
0- P#) 0- Q'/-#;) T"
O<4@
,-/0) ()$) 0-",#/) ) '-;).);,) 0-
FR) K'%&)?!7.*
! Para obter outros resultados e gerar outros formatos
com os mesmos dados, pode-se criar folhas de estilo
adicionais
23
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
Processador
XSLT
XSLT
Documento
XSLFO
Fonte
FOP
Documento
PDF
XML
XML
XML
<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/>
24
XSL-FO: menor documento
!I)<;)), !"#$%+?:&'N;;.+,,111O1TO:)F,WXXX,PD5,\:)"-;'*
!I)<&'U)%,=$'",-;="-,*
!I)<"#$.&-=.'3-=$'",-; $'",-;=/'$-12.42*
!I)<;-3#)/=A)0U7*
!7I)<"#$.&-=.'3-=$'",-;*
!7I)<&'U)%,=$'",-;="-,*
!I)<.'3-="-V%-/(- $'",-;=/'$-12.42*
!I)<I&)B I&)B=/'$-12:"&=;-3#)/=A)0U2*
!I)<A&)(W ()&);12A&%-2 I)/,="#X-12>6.,2*
Y-&&) KZJ[
!7I)<A&)(W*
!7I)<I&)B*
!7I)<.'3-="-V%-/(-*
!7I)<;)),*
Este o "<body>"
do XSL-FO
Este o "<head>"
do XSL-FO
Ligao entre as
regras de layout e
o contedo afetado
25
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 XML
(MathML, SVG, linguagens proprietrias)
! Normalmente gerada via XSLT
Processador XSLT
XSLT
Documento
XHTML
Documento
Fonte
XML
XML
XML
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>Pgina XHTML</title></head>
<body>
<h1>Pgina XHTML</h1>
26
SVG
! Scalable Vector Graphics (padro W3C)
! 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 +
<svg xmlns="http://www.w3.org/2000/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" />
27
Exemplo de SVG
!"93 B#0,81246($2 8-#38,1246($2*
!3 )/(&#(W12'&-;,\]^&#()% /) 3;%.) 4[]_2*
!(#;(&- ",U&-12I#&&< ;-02
(:125($2 (U125($2 ;12>?@($2 7*
!;-(, ",U&-12I#&&< A&%-2 :12`($2 U12`($2
8-#38,12>?@($2 B#0,8124?@($2 7*!73*
!3 )/(&#(W12'&-;,\]^&#()% /) 3;%.) >[]_2*
!(#;(&- ",U&-12I#&&< 3;--/a ).'(#,U< 6?@2
(:12@($2 (U12@($2 ;12>($2 7*!73*
!' :$&/"<!#*$[128,,.<77BBB?B5?);374DDD7:&#/W2
!#*$[<8;-I128,,.<77BBB?B5?);37L;'.8#("7FbL2*
!,-:, ",U&-12()&);< A&'(Wa I)/,=I'$#&U< ,'8)$'a
I)/,="#X-< 4>.,2 :125($2 U12O($2*
FbL c EdG!7,-:,*!7'*
!7"93*
CSS
JavaScript
XLink
28
Outras aplicaes populares do XML
Classe
oper(): void
oper2(): int
MathML
SOAP
WSDL
UDDI
ebXML
CML
Web Services
XML-RPC
XMI
1 *
WML
VoiceXML
Classe3
oper(): void
oper2(): int
Classe2
oper(): void
oper2(): int
TEI
DocBook
29
Demonstrao
! Exemplo de transformao XML
Saxon
FOP
JFOR
Texto texto
texto texto
texto texto
texto texto
texto
<xslt>
FO
<xslt>
HTML
PDF
2000 2001
<xml>
HTML
<xsl:fo> (1)
(2)
<xslt>
SVG
(3)
<xslt>
Texto
(4)
(1.a)
(1.b)
SVG
30
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 vetorial

Você também pode gostar