Você está na página 1de 30

Introduo a XML

X100

Helder da Rocha
(helder@argonavis.com.br)

Atualizado em setembro de 2001

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

XML versus HTML


HTML mostra como apresentar
<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>

XML mostra o que significa

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):
<nome> </nome>

Menor documento contendo elemento vazio


<nome></nome>

Elemento raiz

<nome/>

Menor documento contendo elemento e contedo texto


<nome> </nome>
Etiqueta inicial Contedo do Elemento Etiqueta final

XML Namespaces
Estabelecem um contexto para elementos e atributos 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 formalmente declarado atravs de um identificador (um string, geralmente uma URI) atravs de atributo reservado do XML: xmlns

<simulacao> Escopo do namespace vale <tempounidade="segundos">130</tempo> para elemento <clima> e <climaxmlns="uri://appclima"> herdado por todos os seus <tempo>chuvoso</tempo> descendentes </clima> </simulacao> <simulacaoxmlns:w="uri://appclima"> <tempounidade="segundos">130</tempo> Escopo do namespace vale <w:clima> para descendentes de <w:tempo>chuvoso</w:tempo> <simulacao> qualificados <tempounidade="horas">2.5</tempo> com o prefixo 'w' </w:clima> </simulacao> Nos dois casos, elementos <tempo> significam coisas diferentes, mas no h conflito porque pertencem a namespaces diferentes (um deles no tem namespace)

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
6

Exemplos de algumas regras


(1) Elementos no devem se sobrepor
No pode No pode Deve ser No pode <a><b></a></b>

(2) Atributos tm que ter valores entre aspas (3) Nomes de elementos so case-sensitive (4) Todos os elementos tm marcadores de abertura e de fechamento
No pode Deve ser <br>x<br> <br/>x<br/> ou <br></br>x<br></br>
7

<hrwidth=10> <hrwidth="10"> <a>...</A>

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


8

Esquema
Documentos que aderem especificao (vlidos)

O esquema representa uma classe Os documentos so instncias

Esquema (universo de documentos vlidos) Documento fora da especificao

Como definir esquemas: DTD - Document Type Definition W3C XML Schema

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
<!ELEMENTcontato (nome,email,telefone)> <!ATTLISTcontato codigoNMTOKEN#REQUIRED>

XML Schema
<xsd:schema xmlns:xsd=".../XMLSchema"> <xsd:elementname="contato"> <xsd:complexType> <xsd:attributename="codigo" use="required">

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

XML, porm mais complexo Suporta namespaces Permite definio de tipos

10

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
11

Como produzir XML


Criando um documento de texto Unicode a partir de qualquer editor de textos
<contatocodigo="33"> <nome>SeverinoSeverovitch</nome> <email>bill@norte.com.br</email> <telefonetipo="celular"> <area>11</area> <numero>99994321</numero> </telefone> </contato>

Gerando um documento a partir de uma rvore montada dinamicamente


33 Severino Severovitch bill@norte.com.br celular 11 9999 4321
<contatocodigo="33"> <nome>SeverinoSeverovitch</nome> <email>bill@norte.com.br</email> <telefonetipo="celular"> <area>11</area> <numero>99994321</numero> </telefone> </contato>

12

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 Transformao em texto, HTML ou outro formato Aplicao em tempo real ou prvia (no servidor)

XSLT - eXtensible Stylesheet Language 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
13

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
14

Processamento XML
texto "custom" XML Web HTML CSS JavaScript

<xml> <xml>

WML VoiceXML

XML para SGBD e vice-versa

<xml> <xml> <xml>

VRML

DOM SAX
Grficos SVG Imagens JPG e PNG
2000 2001

PDF PDF PDF

RTF TeX SGML PDF e PostScript

SGBD

15

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 /contato/telefone/@tipo Severino Severovitch /contato/telefone/numero/text() bill@norte.com.br celular 11 9999 4321

/contato/@codigo

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
16

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: xlink:href="#ident" Caminho resultante de expresso XPath: xpointer(/livro/id)

XQuery: linguagem para pesquisar documentos XML atravs de queries com sintaxe inspirada em SQL
Exemplo:
FOR$bINdocument("usuario_33.xml")/contato WHEREnome="SeverinoSeverovitch" RETURN$b

17

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 http://www.w3.org/1999/XSL/Transform XSL-FO usa http://www.w3.org/1999/XSL/Format

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: http://www.w3.org/<anodecriacao>/<tecnologia>

18

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

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

Usa-se um processador XSLT


fonteToHtml.xslt
Folha de estilos

fonte.xml
Documento Fonte

Processador XSLT Xalan, TrAX, Saxon Firefox, I. Explorer, etc.

Documento Resultado

19

XSLT: documento-fonte (1)


Considere o seguinte documento-fonte:
<aeronaveid="PTGWZ"> <origempartida="08:15">Riode Janeiro</origem> <destino>SoPaulo</destino> </aeronave>

E sua representao como uma rvore-fonte


/ <aeronave> @id <origem> PTGWZ RiodeJaneiro @partida <destino> SoPaulo 08:15

20

XSLT: folha de estilos (2)


O seguinte template (parte de uma folha de estilos XSLT) pode extrair os dados do documento-fonte
<xsl:templatematch="aeronave"> <p>Aaeronavedeprefixo <xsl:valueofselect="@id"/>decolou de<xsl:valueofselect="origem"/>s <xsl:valueofselect="origem/@partida"/> tendocomodestinooaeroportode <xsl:valueofselect="destino"/>.</p> </xsl:template> elementos XSLT
(em vermelho, com prefixo xsl) documento-fonte (em azul - XPath)

documento resultado (em preto)

Elementos XSLT so qualificados com prefixo (da forma <xsl:elemento>) para evitar conflitos com o documento-resultado
O prefixo xsl e namespace precisam ser declarados com xmlns:xsl

21

XSLT: documento-resultado (3)


Aps a transformao, o resultado ser
<p>Aaeronavedeprefixo PTGWZdecolou deRiodeJaneiros 8:15 tendocomodestinooaeroportode SoPaulo.</p>

Para obter outros resultados e gerar outros formatos com os mesmos dados, pode-se criar folhas de estilo adicionais
22

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

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

XML

Processador XSLT

Fonte

Documento XSLFO

FOP

Documento PDF

23

XSL-FO: menor documento


<fo:rootxmlns:fo="http://www.w3.org/1999/XSL/Format"> <fo:layoutmasterset> <fo:simplepagemastermastername="p1"> <fo:regionbody/> Ligao entre as </fo:simplepagemaster> regras de layout e </fo:layoutmasterset> o contedo afetado <fo:pagesequencemastername="p1"> <fo:flowflowname="xslregionbody"> <fo:blockcolor="blue"fontsize="20pt"> HelloPDF! </fo:block> Este o "<body>" </fo:flow> do XSL-FO </fo:pagesequence> </fo:root>
Este o "<head>" do XSL-FO

24

<html xmlns="http://www.w3.org/1999/xhtml"> <head><title>Pgina XHTML</title></head> <body> <h1>Pgina XHTML</h1>

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


XML

XSLT
XML

XML

Processador XSLT

Documento Fonte

Documento XHTML

25

<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" />

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 +

26

Exemplo de SVG
JavaScript
<svgwidth="10cm"height="10cm"> <gonclick="alert('Clicounogrupo1!')"> CSS <circlestyle="fill:red" cx="3cm"cy="3cm"r="2.5cm"/> <rectstyle="fill:blue"x="6cm"y="6cm" height="2.5cm"width="1.5cm"/></g> <gonclick="alert('Clicounogrupo2!')"> <circlestyle="fill:green;opacity:0.5" cx="5cm"cy="5cm"r="2cm"/></g> <axmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.w3.org/Graphics/SVG"> <textstyle="color:black;fontfamily:tahoma; fontsize:12pt"x="3cm"y="8cm"> SVGXML</text></a> </svg>

XLink

27

Outras aplicaes populares do XML


MathML
TEI
Classe oper(): void oper2(): int
1 *

Classe2 oper(): void oper2(): int

XMI WML VoiceXML


Classe3 oper(): void oper2(): int

DocBook

Web Services

SOAP WSDL UDDI

XML-RPC

CML
ebXML
28

Demonstrao
Exemplo de transformao XML
<xslt> FO
FOP

PDF

<xml> Saxon
<xslt> Texto

(1) (3)

<xsl:fo>

(1.a) (1.b)

<xslt> SVG

JFOR

(4) (2)
<xslt> HTML HTML
2000 2001

Texto texto texto texto texto texto texto texto texto

SVG

29

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

30