0% acharam este documento útil (0 voto)
5 visualizações38 páginas

Gestão de Informações com XML

O documento apresenta uma introdução ao XML e suas aplicações na gestão de informações, abordando como implementar soluções utilizando essa linguagem. Discute a estrutura de documentos XML, suas diferenças em relação ao HTML, e as tecnologias relacionadas, como DTD, XML Schema, XSLT e XPath. Além disso, explora a manipulação de XML através de APIs como DOM e SAX, e a importância do XML para o compartilhamento de dados.
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
5 visualizações38 páginas

Gestão de Informações com XML

O documento apresenta uma introdução ao XML e suas aplicações na gestão de informações, abordando como implementar soluções utilizando essa linguagem. Discute a estrutura de documentos XML, suas diferenças em relação ao HTML, e as tecnologias relacionadas, como DTD, XML Schema, XSLT e XPath. Além disso, explora a manipulação de XML através de APIs como DOM e SAX, e a importância do XML para o compartilhamento de dados.
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

Integração total de negócios usando XML

São Paulo, 08 de maio de 2002

XML
na gestão de informações

Helder da Rocha
Consultor
1
Objetivos

Responder às questões
Como implementar soluções de gestão de
informações usando XML?
Quando e como usar as tecnologias e linguagens
que viabilizam o compartilhamento de informações?
Apresentar
Breve introdução ao XML e tecnologias
relacionadas.
Recursos para manipular informações representadas
em XML: ferramentas, linguagens e tecnologias

2
Programa

Por que XML? Onde usar XML?


Como produzir documentos XML
Documentos válidos: DTD e XML Schema
Manipulação via programação em DOM e SAX
Transformação: XSLT e XPath
Localização e extração: XLink, XQuery e XPointer
Visualização: XSL-FO e SVG
Demonstração: geração de HTML, RTF e PDF
Ferramentas e Conclusões
3
O que é XML?

eXtensible Markup Language: padrão W3C


Uma maneira de representar informação
não é uma linguagem específica
não define vocabulário de comandos
não define uma gramática, apenas regras mínimas
Exemplo: documento XML
usuario_33.xml

<contato codigo="33">
<nome>Severino Severovitch</nome>
elemento
<email>bill@[Link]</email>
<telefone tipo="celular">
<area>11</area>
atributo
<numero>9999 4321</numero>
</telefone>
"nó" de texto
</contato>
4
XML versus HTML

HTML mostra <h1>Severino Severovitch</h1>


como <h2>bill@[Link]</h2>
apresentar <p>
<b>11</b>
<i>9999 4321</i>
</p>

XML mostra <nome>Severino Severovitch</nome>


o que <email>bill@[Link]</email>
<telefone>
significa <ddd>11</ddd>
<numero>9999 4321</numero>
</telefone>

5
Anatomia de um documento XML
Documentos XML são documentos de texto Unicode
É uma hierarquia de elementos a partir de uma raiz
Menor documento tem um elemento (vazio ou não):
<nome> Ñåâåðèíî Ñåâåðîâè÷ </nome>

Menor documento contendo elemento vazio Elemento raiz

<nome></nome> = <nome/>

Menor documento contendo elemento e conteúdo texto

<nome> Ñåâåðèíî Ñåâåðîâè÷ </nome>

Etiqueta Conteúdo do Etiqueta


inicial Elemento final
6
Partes de um documento
elemento raiz declaração XML nó raiz ( / )

<?xml version="1.0" encoding="iso-8859-1" ?>


atributos
<cartao-simples>
<logotipo href="/imagens/[Link]" />
<nome>Alberto Santos Dumont</nome>
<endereco>Rua do Encanto, 22 - 2o. andar -
Centro - 25600-000 - Petrópolis - RJ</endereco>
<email>dumont@[Link]</email>
<telefone tipo="residencial" >
<ddd>21</ddd> elementos
<numero>2313011</numero>
</telefone>
</cartao-simples>

7
nó raiz
/ Árvore XML
elemento raiz

cartao-simples
cartao-simples email
email

dumont@[Link]
nome
nome

endereco
endereco
Alberto
Santos logotipo
logotipo
Dumont Rua do Encanto, 22 -
2o. andar - Centro
telefone
telefone - 25600-000 - href
href
Petrópolis - RJ

numero
numero ddd
ddd /imagens/[Link]

tipo
tipo

LEGENDA
21 nó de elemento
2313011
nó de atributo
residencial nó de texto 8
XML Namespaces

Limita o escopo de elementos


Evita conflitos quando duas linguagens se cruzam no
mesmo documento
Consiste da associação de um identificador a cada
elemento/atributo da linguagem, que pode ser
herdado através do escopo de uma sub-árvore
atribuído explicitamente através de um prefixo
Exemplo prefixo identificador

<cadastro xmlns:firma="01.234.567/0001-99">
<nome>Severino Severovitch</nome>
<firma:nome>Sibéria Informática Ltda.</firma:nome>
<email>bill@[Link]</email>
</cadastro>
Este elemento <nome> pertence a outro namespace
9
Por que usar XML para compartilhar dados?

Porque é um padrão aberto


Facilidade para converter para formatos proprietários
Porque é texto
Fácil de ler, fácil de processar, menos incompatibilidades
Porque promove a separação entre estrutura,
conteúdo e apresentação
Facilita geração de dados para visualização dinâmica
Evita repetição de informação / simplifica manutenção
Porque permitirá semântica na Web
Elementos HTML não carregam significado, apenas dicas
de formatação: mecanismos de busca ficam prejudicados
Solução com XML dependerá de suporte dos clientes
10
Onde usar XML?
Dados armazenados em XML podem ser facilmente
transformados em outros formatos
texto "custom" <xml> Web
XML <xml> WML
VoiceXML
HTML
CSS
<xml> VRML JavaScript
<xml>
<xml> XSLT
W

XSL-FO PDF RTF


DOM PDF
PDF TeX
SAX
SGML
Gráficos SVG
Imagens PDF e
SGBD PostScript
JPG e PNG 2000 2001
11
Como produzir XML

Criando um documento de texto Unicode a partir


de qualquer editor de textos
<contato codigo="33">
<nome>Severino Severovitch</nome>
<email>bill@[Link]</email>
<telefone tipo="celular">
<area>11</area>
<numero>9999 4321</numero>
</telefone>
</contato>

Gerando um documento a partir de uma árvore


montada dinamicamente
33 <contato codigo="33">
<nome>Severino Severovitch</nome>
Severino Severovitch <email>bill@[Link]</email>

bill@[Link]
<telefone tipo="celular">
<area>11</area>
<numero>9999 4321</numero>
</telefone>
celular </contato>

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 não são bem formados não são
documentos XML
Documentos bem-formados obedecem as regras de
construção de documentos XML genéricos
Regras incluem
Ter um, e apenas um, elemento raiz
Valores dos atributos estarem entre aspas ou apóstrofes
Atributos não se repetirem
Todos os elementos terem etiqueta de fechamento
Elementos estarem corretamente aninhados
13
XML válido
Um XML bem construído pode não ser válido em
determinada aplicação
Aplicação típica pode esperar que
elementos façam parte de um vocabulário limitado,
certos atributos tenham valores e tipos definidos,
elementos sejam organizados de acordo com uma
determinada estrutura hierárquica, etc.
É preciso especificar a linguagem!
Esquema: modelo que descreve todos os elementos,
atributos, entidades, suas relações e tipos de dados
Um documento XML é considerado válido em relação a
um esquema se obedecer todas as suas regras

14
Esquema
Documentos que aderem à
especificação (válidos)
O esquema representa uma classe
Os documentos são instâncias

Esquema (universo de
documentos válidos)
Documento
Como definir esquemas:
fora da
especificação DTD - Document Type Definition
W3C XML Schema
15
DTD vs. XML Schema

Um esquema é essencial para que haja comunicação


usando XML
Pode ser estabelecido "informalmente" (via software)
Uso formal permite validação usando ferramentas
genéricas de manipulação de XML
Soluções
DTD XSchema
<!ELEMENT contato <xsd:schema
(nome, email, telefone)> xmlns:xsd=".../XMLSchema">
<!ATTLIST contato <xsd:element name="contato">
codigo NMTOKEN #REQUIRED> <xsd:complexType>
<xsd:attribute name="codigo"
use="required">

• Simples mas não é XML • É XML, porém mais complexo


• Não suporta namespaces • Suporta namespaces
• Limitado quando a tipos de dados • Permite definição de tipos
16
Visualização em um browser

Folha de estilo: conjunto de regras para formatar ou


transformar as informações de um documento XML
CSS - Cascading Style Sheets
Transformação visando apresentação visual
Aplicação do estilo em tempo de execução no cliente
XSLT - eXtensible Stylesheet Language
Transformação em texto, HTML ou outro formato
Aplicação em tempo real ou prévia (no servidor)
Se não estiver associado a uma folha de estilo, o
documento XML não tem uma "aparência" definida
Internet Explorer e outros mostram a árvore-fonte XML
Netscape mostra apenas os nós de texto
17
Como manipular XML?

Há duas APIs padrão 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
Implementações disponíveis em várias linguagens
SAX oferece métodos que respondem a eventos
produzidos durante a leitura do documento
notifica quando um elemento abre, quando fecha, etc.
DOM monta uma árvore, que permite a
navegação na estrutura do documento
propriedades dos objetos podem ser manipuladas
18
Leitura de XML com SAX

Se um processador SAX receber o documento ...


<carta>
<mensagem id="1">Bom dia!</mensagem>
</carta>
... ele irá disparar a seguinte seqüência 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 informações desejadas
19
Criação de documentos com DOM (1)

Criação dos elementos


/ Document Obter objeto do tipo Document (raiz)
(dependente de processador): doc
<carta> Element carta = [Link]("carta")

<mensagem> Element mens = [Link]("mensagem")

Bom dia! String texto = [Link]("Bom dia!")

Atributos
<mensagem id="1"> [Link]("id", "1")

20
Criação de documentos com DOM (2)
Montagem da árvore passo-a-passo
1. Sub-árvore <mensagem>
3. Árvore completa
<mensagem id="1">
/
[Link](texto)

Bom dia!
<carta>

2. Sub-árvore <carta>
<mensagem id="1">

<carta>

[Link](mens) Bom dia!

<mensagem id="1">
[Link](carta)

Bom dia!

21
XPath
Linguagem usada para navegar na árvore XML
Uma expressão XPath é um caminho* na árvore que
resulta em um valor (número, texto, booleano), objeto
(elemento, atributo, nó de texto) ou conjunto de objetos
• Caminhos absolutos
/contato@codigo
33 /contato/telefone@tipo
Severino Severovitch /contato/telefone/numero/text()
bill@[Link]

celular • Relativos ao contexto /contato:


11 @codigo (ou ./@codigo)
9999 4321 telefone@tipo (ou ./telefone/tipo)
telefone/numero/text()

Expressões XPath são usadas dentro de atributos XML


Usadas em XSLT, XLink, XQuery e XPointer
* pode também ser padrão de busca 22
<xsl:stylesheet version="1.0"
xmlns:xsl="[Link]
<xsl:template match="livro/titulo"> XSLT
<td><xsl:value-of select="." /></td>

XSL Transformations
Linguagem (XML) para criação de documentos que
contêm regras de transformação para documentos XML
Documentos escritos em XSLT são chamados de
folhas de estilo e contêm
Elementos XSLT: <template>, <if>, <foreach>, ...
Expressões XPath para localizar nós da árvore-fonte
Texto ou XML a ser gerado no documento-resultado
Processador XSLT
[Link]
Folha de
estilos Processador XSLT
Documento
[Link] Xalan, TrAX, Saxon
Resultado
Netscape, I. Explorer
Documento
Fonte
23
XSLT: documento-fonte (1)

Considere o seguinte documento-fonte:


<aeronave id="PTGWZ">
<origem partida="08:15">Rio de
Janeiro</origem>
<destino>Itabuna</destino>
</aeronave>

/
<aeronave>
@id PTGWZ

<origem> Rio de Janeiro

@partida 08:15
Árvore-fonte <destino> Itabuna
24
XSLT: folha de estilos (2)
O seguinte template (parte de uma folha de estilos XSLT)
pode extrair os dados do documento-fonte documento-fonte
(em azul - XPath)
<xsl:template match="aeronave">
<p>A aeronave de prefixo
documento <xsl:value-of select="@id" /> decolou
resultado de <xsl:value-of select="origem" /> às
(em preto)
<xsl:value-of select="origem@partida" />
tendo como destino o aeroporto de
<xsl:value-of select="destino" />.</p>
</xsl:template> elementos XSLT
(em vermelho, com prefixo xsl)
Elementos XSLT geralmente são usados com um prefixo
associado ao seu namespace: <xsl:elemento> para evitar
conflitos com o documento-resultado.
25
XSLT: documento-resultado (3)

Após a transformação, o resultado será


<p>A aeronave de prefixo
PTGWZ decolou
de Rio de Janeiro às
8:15
tendo como destino o aeroporto de
Itabuna.</p>

Para obter outros resultados e gerar outros formatos


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

26
XLink, XPointer e XQuery
XLink: é uma especificação W3C que permite definir vínculos
entre documentos XML
Funcionalidade mínima é igual ao <a href> do HTML
Funcionalidade estendida permite vínculos bidirecionais, arcos,
vários níveis de semântica, etc.
É uma coleção de atributos, com namespace próprio, que
podem ser usados em elementos de qualquer linguagem XML.
XPointer: aponta para partes de documentos XML
Identificador (ID) colocado no destino, accessível através de
fragmento de URL: xlink:href="#identificador"
Caminho resultante de expressão XPath: xpointer(/livro/id)
XQuery: linguagem para pesquisar documentos XML
Exemplo: FOR $b IN document("usuario_33.xml")/contato
WHERE nome="Severino Severovitch"
RETURN $b
27
<fo:root xmlns:fo="[Link]
<fo:layout-master-set>
<fo:simple-page-master master-name="p1"> XSL-FO
<fo:region-body/>

XSL Formatting Objects


Linguagem XML de descrição de página com os
mesmos recursos que PostScript ou PDF
Descreve o layout preciso de texto e imagens
Possui centenas de elementos, atributos e propriedades
(que são semelhantes às propriedades do CSS)
Páginas são facilmente convertidas para PDF e PostScript
Ideal para gerar documentos para impressão (livros, etc.)
Normalmente gerada via XSLT
XML
XSLT XML
Processador Documento Documento
FOP
XML XSLT XSLFO PDF
Fonte
28
XSL-FO: menor documento
<fo:root xmlns:fo="[Link]
Este é o "<head>"
<fo:layout-master-set> do XSL-FO
<fo:simple-page-master master-name="p1">
<fo:region-body/>
</fo:simple-page-master> Ligação entre as
regras de layout e
</fo:layout-master-set> o conteúdo afetado

<fo:page-sequence master-name="p1">
<fo:flow flow-name="xsl-region-body">
<fo:block color="blue" font-size="20pt">
Hello PDF!
</fo:block>
</fo:flow>
Este é o "<body>"
</fo:page-sequence>
do XSL-FO

</fo:root> 29
<html xmlns="[Link]
<head><title>Página XHTML</title></head>
<body> XHTML
<h1>Página XHTML</h1>

eXtensible HTML
Linguagem XML de descrição de página Web
Mesmos elementos do HTML 4.0 Strict
Elementos descrevem somente a estrutura dos
componentes da página.
A forma precisa ser especificada usando CSS: não há
elementos/atributos para mudar cor, alinhamento, etc.
Pode ser misturada (estendida) com outras linguagens
XML (MathML, SVG, linguagens proprietárias)
Normalmente gerada via XSLT
XML
XSLT XML
Documento
Processador XSLT
XML XHTML
Documento
Fonte 30
<svg>
<circle style="fill: red" cx="3cm" cy="3cm" r="2.5cm" />
<rect style="fill: blue" x="6cm" y="6cm" SVG
height="2.5cm" width="1.5cm" />

W3C Scalable Vector Graphics


Gráficos vetoriais em XML
Plug-ins para principais browsers: concorre com Flash
Suporta animações, links, JavaScript, CSS
Produzido por ferramentas como Adobe Ilustrator
Pode ser embutido no código XHTML e XSL-FO

Zoom +

Zoom +
31
Exemplo de SVG

JavaScript

<svg width="10cm" height="10cm">


<g onclick="alert('Clicou no grupo 1!')">
<circle style="fill: red" CSS
cx="3cm" cy="3cm" r="2.5cm" />
<rect style="fill: blue" x="6cm" y="6cm"
height="2.5cm" width="1.5cm" /></g>
<g onclick="alert('Clicou no grupo 2!')">
<circle style="fill: green; opacity: 0.5" XLink
cx="5cm" cy="5cm" r="2cm" /></g>
<a xmlns:xlink="[Link]
xlink:href="[Link]
<text style="color: black; font-family: tahoma;
font-size: 12pt" x="3cm" y="8cm">
SVG é XML</text></a>
</svg>
32
Algumas outras linguagens XML
Classe Classe2
oper(): void oper(): void
oper2(): int 1 * oper2(): int
MathML
WML XMI Classe3
oper(): void
VoiceXML oper2(): int

Web Services

SOAP
WSDL XML-RPC
UDDI CML
ebXML
33
Demonstração
Exemplo de transformação XML
PDF

<xslt> FOP
FO
(1.a)
(1) <xsl:fo>
<xml>
(1.b)
<xslt> JFOR W
Xalan (3) SVG

<xslt>
Texto
(4)
(2)
2000 2001
<xslt> HTML
Texto texto
texto texto
SVG
texto texto
HTML
texto texto
texto

34
Ferramentas

Para programação
Parsers-validadores: Xerces, Crimson, MSXML 4.0
Validadores: MSV (Sun)
Transformadores XSL: TrAX, Xalan, Xt, Saxon
APIs: JDOM, JAX
Veja mais em [Link] e
[Link]
Para edição (de XML genérico)
XML Spy Suite
Framemaker / ArborText
JEdit com plug-ins para XML, XSLT e XPath
Veja mais em [Link]/XML/

35
Conclusões

XML é uma ótima solução para compartilhar dados


Para implementar soluções em gestão de
informações usando XML, pode-se usar
DTD ou XSchema para especificar o modelo de dados e validar
as informações
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 vínculos lógicos entre os
documentos e localizar seus componentes
XSL-FO ou XHTML para formatar os dados para impressão ou
visualização na tela (PDF, Word ou Web)
SVG para gerar informações em forma de gráfico vetorial
36
Fontes
[1] World Wide Web Consortium (W3C). eXtensible Markup Language.
[Link] Ponto de partida e principal fonte sobre XML e suas
tecnologias "satélite". Contém últimas especificações 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.
[Link]
[3] Adobe. SVG Tutorial. [Link] Contém tutorial sobre SVG e
links para o plug-in SVG da Adobe (Win/Mac).
[4] IBM Developerworks. [Link] Diversos tutoriais
e artigos sobre XML, XSLT, DOM e SAX usando geralmente Java.
[5] Doug Tidwell. XSLT. O’Reilly & Associates, 2001. Explora XSLT com aplicações
práticas em Java.
[6] Elliotte Rusty Harold. XML Bible, Second Edition, 2001. Aborda todas as
principais tecnologias W3C. 5 capítulos em [Link]
[7] Erik T. Ray. Learning XML. O’Reilly & Associates, 2001. Introdução ao XML e
DTD, XSLT, XLink e XPointer (os dois últimos baseados em especificações draft).
37
helder@[Link]

[Link]/palestras/xml/
38

Você também pode gostar