Objetivos da Inovação do Curso
• Tomar contato com recentes tecnologias para Internet: XML.
• Estimular novas áreas de trabalhos/pesquisas.
• Foco: tornar os sistemas interoperáveis, ou comunicáveis.
– É importante fazer usos de padrões abertos. Isto é, evitar padrões e
software proprietários.
– Há muitos padrões para atender melhor cada tipo de aplicação,
fragmentando o alcance de cada um deles. XML ajuda a uni-los.
• Apresentação de um projeto básico:
–
–
–
–
Será definido as linhas gerais do trabalho.
Espera-se que se identifique o uso de estruturas de dados.
O incremento de funcionalidades além do básico é bastante desejável.
Inclusão de documentação e relatório do trabalho.
XML
eXtensible Markup Language
Um alcance maior com a independência de plataformas
Rapidamente: Como é XML?
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE greeting [
<!ELEMENT greeting (#PCDATA)>
]>
<greeting>Hello, world!</greeting>
<?xml version="1.0"?>
<!DOCTYPE greeting SYSTEM "hello.dtd">
<greeting>Hello, world!</greeting>
PCDATA: Parseable character data
Well-Formed XML Documents
XML
•
•
•
•
•
•
•
•
•
É um formato de marcação extensível para domínios de aplicação.
Teve origem no SGML e na experiência com HTML
Parser - faz uso extenso do analisador sintático.
DTD - Data Type Definition
Schema - alternativa com definição semântica enriquecida do DTD.
Xpath - XML Path Language
XSL - Extensible Stylesheet Language
XLL - XML Linking Language (Xlink + Xpointer + Xpath)
Namespace - similar ao namespace do C++ ou package do Java.
Onde XML é usado?
• Melhor perguntar onde XML não é usado.
• XML se aplica quando algo faz uso de:
–
–
–
–
–
(representação/especificação de) dados e conteúdos.
Comunicação, e-business, e-services (XML-RPC, SOAP, ebXML)
interface gráfica (XUL - )
multimídia (SMIL - synchronized multimedia integration language)
makefile e arquivos de configuração (ex: Apache, Java 1.4)
XML por toda parte
•
•
•
•
•
DocBook
MathML
CML
VoiceXML
WML
Introdução + Tutorial + Referência em XML
• Sites principais
–
–
–
–
–
–
www.w3.org,
www.startkabel.nl/k/xml/
www.xml.com (org)
www.xmlhack.com
www.javacommerce.com/tutorial/xmldev/index.html
www.xml.org
• Livros:
–
–
–
–
–
Desvendando XML (New Riders), Steven Holzner
Java XML (O’Reilly), Benoit Marchal
www.oreilly.com (capítulos gratuitos)
http://www.extensibility.com/resources/books_wrox.asp
NÃO COMPREM O “XML BLACK BOOK”.
Tutorial na Internet
•
•
•
•
•
•
•
http://www.w3schools.com/
http://www6.software.ibm.com/developerworks/education/co-xmsg/co-xmsg-11.html
http://www-106.ibm.com/developerworks/education/tutorial-prog/parsing.html
http://www6.software.ibm.com/developerworks/education/wsbasics/index.html
XPath
– http://geneura.ugr.es/~victor/cursillos/xml/XPath/
http://www.sun.com/xml/developers/xsl/
Namespace
– http://www.simonstl.com/articles/namespaces/index.html
– http://www.jclark.com/xml/xmlns.htm
– http://www.xml.com/pub/a/2000/03/08/namespaces/index.html
Programas e códigos
• Software
– Java J2SE (J2SDK) (http://java.sun.com/j2se/1.4/)
– www.apache.org (xml)
– Editores de XML: XML Spy e www.xmleverywhere.com/cooktop/
• Exercícios práticos on-line:
– http://zvon.org/xxl/XMLTutorial/General/book.html
• Exemplos de uso de XML na Internet
–
–
–
–
http://www.posc.org/ebiz/xmlLive.shtml
http://technet.oracle.com/sample_code/content.html
http://www.sys-con.com/xml/source/
http://newinstance.com/writing/javaxml/examples.html
Editoras - livros gratuitos
•
Livros da Sun:
– Java: http://java.sun.com/docs/books/
– Xml: http://java.sun.com/xml/tutorial_intro.html
– http://www.mindview.net/Books/DownloadSites
•
•
•
•
•
•
•
•
•
http://www.mcp.com/que/results_que.cfm?parameter=XML&scope=title
http://www.mcp.com/que/display_que.cfm?itemhdr=Sample%20Chapter&itemloc=chap
ter&item=0789724766
http://www.oreilly.com/catalog/learnxml/chapter/ch02.html
http://www.oreilly.com/catalog/docbook/chapter/book/docbook.html
http://www.oreilly.com/catalog/orxmlapp/chapter/index.html
http://www.oreilly.com/catalog/javaxml/chapter/ch09.html
http://www.ibiblio.org/xml/books/bible/examples/
http://www.extensibility.com/resources/books_wrox.asp
http://xmlwriter.net/books/xml_books.shtml
Buzz words
•
•
•
•
•
•
Componentes do XML: XSL, XLL, SAX, DOM, Xlink, XPointers
CGI tradicional: HTML, DHTML, JHTML, SHTML, XHTML
Markup Languages: MathML, MusicML, GML, CML, WML, -UMLFerramentas XML no Apache: Cocoon, Xalan, Xerces,
BD: JDBC-ODBC, JDO, RDBMS, ODBMS
Plataforma Java: Servlet, RMI, JavaBeans, JSP, EJB, JavaIDL,
•
•
•
•
Tiny HTML - Um subconjunto do HTML apropriado para Palm Pilots.
VoxML - The Motorola ML que permite interação voz-aplicação.
TTML - The Tagged Text ML é um subconjunto HTML desenvolvido p/ Nokia.
HDML - The Handheld Devices ML é uma versão simples de HTML para dispositivos de
mão, handheld.
OMF - Weather Observation Markup Format codifica observações meteorológicas.
•
Projeto: Biblioteca de documentos
Cliente
Servidor
Apache
Navegador
HTML /
JavaScript
html
form
Páginas
HTML
Servlets
html
BD/Diretorio
xml, pdf, ps
xml API
Tópicos e grupos
•
•
•
•
•
•
•
•
•
•
HTML - CSS - JavaScript (grupo A)
Especificação de Use Cases da interação do usuário (grupo A)
Java JDK - Servlet (grupo B)
Apache + Coccon + Tomcat (grupo B)
Editores de DTD, Schema, XSL (grupo C)
XML - XSL - XLL (Xpath - Xlink - Xpointer) (grupo C)
XML - DTD - DocBook - FOP (grupo D)
XML - Xquery - BD (JDBC) (grupo E)
XML - SMIL (grupo F)
Relatórios
HTML
• Exemplo de upload em HTML:
– http://www.w3.org/2000/09/webdata/xsv
• Arquitetura de Web sites (Arquitetura de design)
– http://www.ccuec.unicamp.br/treinamentos/webpro/
– http://www.ambysoft.com/userInterfaceDesign.pdf
• Desenhar e definir as páginas da biblioteca digital:
– organizar as telas de consultas conforme a interação por: palavras-chave,
título, autor, ...
– Usar CSS para apresentação e Javascript para a interação.
– Criar a tela de entrada de documentos: como txt, doc, ps, pdf.
– Permitir a criação de cadastro, definir o layout e os links preferido e salválos no site.
• Interagir com o responsável do DTD para definir o conteúdo das telas.
Itens/sites relevantes para www
• É desejável saber o que é http (www.whatis.com)
• Tutorial/Primers sobre Html / JavaScript (Ramalho)
–
–
–
–
–
–
http://www.w3.org
http://www.ncsa.uiuc.edu/General/Internet/WWW/HTMLPrimer.html
http://www.htmlgoodies.com/
http://training.oreilly.com/
http://www.oreilly.com/catalog/jscript2/examples/
http://developer.netscape.com/library/documentation/htmlguid/index.htm
• Web-design
– http://ituser.it.bton.ac.uk/staff/idd/
– http://info.med.yale.edu/caim/manual/contents.html
Interface do nosso “Portal”
•
•
•
•
•
•
•
Pesquisar por data, autor, titulo, palavras-chave
Data: período (maior, menor, entre), mês, ano.
Quantos resultados.
Palavras-chave: exato, palavras similares, (and, or)
Categoria/área do assunto.
Instituição de origem.
Incluir dicas sobre campos usando ToolTips
http://webdeveloper.earthweb.com/pagedev/webjs/item/0,3602,12760_
26671,00.html
• Acessórios relevantes não mencionados aqui.
Estabelecer os possíveis casos de uso
Navegador
Consulta
por autor
Lista de
resultados
Computador
Computador
Java
• APIs do servidor Apache (Tópico XML)
–
–
–
–
–
Xerces - XML parsers
Xalan - XSLT stylesheet processors
Cocoon - XML-based web publishing
FOP - XSL formatting objects
Xang - Rapid development of dynamic server pages, in JavaScript
• Servlets (Tópico servidor)
– Software: Tomcat do Apache (http://jakarta.apache.org/tomcat/).
– http://c2.com/cgi/wiki?ServletDesign
• Interagir com HTML e XSL
• Artigos:
– http://www.xml-data-servers.com/
– http://65.1.136.127/developerlife/saxtutorial1/default.htm
– http://www-106.ibm.com/developerworks/library/data-binding4/index.html
Editores
• Artigo sobre editores de XML em geral
– http://www-106.ibm.com/developerworks/java/library/x-matters6.html
•
•
•
•
•
Um dos melhores: XML Spy (http://www.xmlspy.com/)
Gratuitos: http://www.garshol.priv.no/download/xmltools/
Pode usar WordPad para textos.
Pode usar NotePad para XML da MS.
Software em geral: http://www.xmlsoftware.com/
DTD
• Definir as regras e o vocabulário do DTD.
• Investigar linguagens baseadas em XML mais apropriada para o
projeto. Veja, por exemplo, DocBook (ML p/ documento técnico).
• Interagir com os responsáveis do HTML e do XSLT.
• Links:
–
–
–
–
http://www.oreilly.com/catalog/docbook/chapter/book/docbook.html
http://www.oasis-open.org/docbook/intro.html
http://zvon.org/xxl/DTDTutorial/General/book.html
http://www.developer.ibm.com/devcon/rsinnarticle.htm
• FOP (Formatador de PDF)
– http://xml.apache.org/fop/
DTD
http://www.w3.org/TR/xslt
http://www.cs.rutgers.edu/~shklar/classes/476/class21/slide5.html
http://www.cs.rutgers.edu/~shklar/classes/476/schedule.html
<!ELEMENT book (author+, title, publisher)>
<!ATTLIST book year CDATA>
<!ELEMENT article (author+, title, year?,
(shortversion|longversion))>
<!ATTLIST article type CDATA>
<!ELEMENT publisher (name, address)>
<!ELEMENT author (firstname?, lastname)>
XML Query
• Coleções de arquivos XML podem ser acessados como Banco de Dados
• Links:
–
–
–
–
http://www.rpbourret.com/xmldbms/readme.htm
http://www.cs.bell-labs.com/who/wadler/topics/xml.html
http://www.w3.org/TandS/QL/QL98/pp/xql.html
http://www.ibiblio.org/xql/
• Fazer uso inteligente da estrutura do XML.
• Site principal: http://www.w3.org/XML/Query
• Exemplo: http://www.w3.org/TR/xmlquery-use-cases
XSL - Extensible Stylesheet Language
•
•
•
•
•
Linguagem para expressar padrões similar aos estilos do Word:
É uma linguagem para transformar documentos XML.
Contém um vocabulário para especificar formatação semântica.
http://www.w3.org/TR/xsl/
Introduction to Cocoon, XML, XSL
– http://www.devshed.com/Client_Side/XML/INTCXX/
• Artigos:
– http://www-106.ibm.com/developerworks/library/x-xslt5.html
– http://www-106.ibm.com/developerworks/library/jguru-dom/index.html
Xpath - XML Path Language
• http://www.w3.org/TR/xpath
• Excelente curso prático online para experimentar:
– http://www.zvon.org/xxl/XPathTutorial/General/examples.html
Selecionando elementos com XPath
<xsl:template match="/">
<xsl:value-of select=“AAA”
</xsl:template>
Selecionando /AAA
<AAA>
<BBB/>
<CCC/>
<BBB/>
<BBB/>
<DDD>
<BBB/>
</DDD>
<CCC/>
</ AAA >
/AAA/CCC
<AAA>
<BBB/>
< CCC />
<BBB/>
<BBB/>
<DDD>
<BBB/>
</DDD>
< CCC />
</ AAA >
/AAA/CCC/BBB
<AAA>
<BBB/>
< CCC />
<BBB/>
<BBB/>
<DDD>
< BBB />
</DDD>
< CCC />
</ AAA >
XLink
• Links
–
–
–
–
–
–
–
http://www.ibiblio.org/xml/books/bible/updates/16.html
http://www.ibiblio.org/xml/books/bible/updates/17.html
http://www.sun.com/xml/developers/xlink/
http://www.javacommerce.com/tutorial/xml/linking.html
http://pages.wooster.edu/ludwigj/xml/thesis.html
http://www.thefaactory.com/xlink2html/
http://www.diffuse.org/TopicMaps/20001025/schema.html
XSL
Veja http://www.finetuning.com/styletutorials.html
Regras xsl (1/3)
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
Regras xsl (2/3)
<xsl:template match="/">
<html>
<head>
<title>finetuning.com - Glossary of Terms</title>
</head>
<body>
<center><h4>Glossary</h4></center>
<table width="100%" border="1"><thead>
<th>Term</th>
<th>Definition</th>
</thead>
<tbody>
<xsl:apply-templates/>
</tbody>
</table>
</body>
</html>
</xsl:template>
Regras xsl (3/3)
<xsl:template match="item">
<tr>
<td><strong>
<xsl:value-of select="title" /></strong></td>
<td><xsl:value-of select="definition" /></td>
</tr>
</xsl:template>
</xsl:stylesheet>
<libro>
ejemplo.xml
<titulo>Dos por tres calles</titulo>
<autor>Josefa Santos</autor>
<capitulo num="1">
La primera calle
<parrafo>
Era una sombría noche del mes de agosto...
</parrafo>
<parrafo destacar="si">
Ella, inocente cual <enlace href="http://www.enlace.es">mariposa</enlace> que surca el ci
</parrafo>
</capitulo>
. . . . . . . . . . . . . .........
</libro>
ejemplo.xsl
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="libro">
<HTML>
<HEAD>
<TITLE>Ejemplos en XPath</TITLE>
</HEAD>
<BODY>
<H1>Resultados:</H1>
<PRE>
<xsl:apply-templates select="/libro/capitulo/text()"/>
</PRE>
</BODY>
</HTML>
</xsl:template>
</xsl:stylesheet>
Teste
Execução
> xsl ejemplo.xml ejemplo.xsl ejemplo.html
É preciso de:
- um analisador de XSLT como Xalan
- um analisador de XML como Xerces
Ambos estão no Cocoon (Apache)
Saída do exemplo no Navigator
Exemplo de arquivo XML
<?xml version="1.0"?>
<!-- edited with XML Spy v3.5 (http://www.xmlspy.com) by Test (Testing) -->
<?xml-stylesheet type="text/xsl" href="planets.xsl"?>
<PLANETS>
<PLANET>
<NAME>Mercury</NAME>
<MASS UNITS="(Earth = 1">.0553</MASS>
</PLANET>
<PLANET>
<NAME>Venus</NAME>
<MASS UNITS="(Earth = 1">.815</MASS>
</PLANET>
<PLANET>
<NAME>Earth</NAME>
<MASS UNITS="(Earth = 1">1</MASS>
</PLANET>
</PLANETS>
Cont...
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<html>
<xsl:apply-templates/>
</html>
</xsl:template>
<xsl:template match="PLANETS">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="PLANET">
<p>
<xsl:value-of select="NAME"/>
</p>
</xsl:template>
</xsl:stylesheet>
Carregando o arquivo .xml no IE
XML DTDs - XML Schemas
• Permite escrever regras que definem uma estrutura de relacionamento.
• Arquivos em XML podem ser validados segundo essas regras.
• Permite construir a sua própria linguagem (vocabulário) por meio de
DTD.
• DTD é essencialmente uma gramática livre de contexto (BNF) para
descrever uma linguagem e o vocabulário usado numa área de
aplicação.
• Para efetuar troca de dados entre instituições basta que codifique os
dados conforme a DTD.
• Ex: <Course> é constituído de <Name>, <Dept> (nessa ordem).
• Ex: <html> é constituído de <head> e <body>
Atividades envolvidas
• Para construir aplicações em XML é preciso fazer 4 coisas:
–
–
–
–
Selecionar ou escrever uma DTD
Gerar documentos em XML
Interpretar documentos XML, e
Exibir documentos XML.
Exemplo de DTD definindo “item”
<!ELEMENT item (prodName+,USPrice, shipDate?)
<!ATTLIST item partNum CDATA>
<!ELEMENT prodName (#PCDATA)>
<!ELEMENT USPrice (#PCDATA)>
<!ELEMENT shipDate (#PCDATA)>
XML schema definindo “item”
<xsd:element name="item">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="prodName" type="xsd:string" maxOccurs="5"/>
<xsd:element name="USPrice" type="xsd:decimal"/>
<xsd:element name="shipDate" type="xsd:date" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="partNum" type="SKU"/>
</xsd:complexType>
</xsd:element>
<!-- Stock Keeping Unit, a code for identifying products -->
<xsd:simpleType name="SKU">
<xsd:restriction base="xsd:string">
<xsd:pattern value="\d{3}-[A-Z]{2}"/>
</xsd:restriction>
</xsd:simpleType>
XSL
•
•
•
•
É muito mais do que um estilo (CSS).
CSS provê um conjunto de estilos para o HTML.
XSL uma linguagem de transformação e de formatação.
Especifica como um documento se transforma num outro.
– ordenar
– filtrar/traduzir
– montar/compor, inserir, apresentar
Conversão de dados da origem para o destino
Sem XML
Com XML
Conteúdo dissociado da apresentação
PDF
HTML
Dados
xml
WML
XSLT
SVG
html
XSL
wml
XSL
XSL - extensible style language
svg
XSL
SMIL - synchronized multimedia integration
language
•
•
•
•
Pronunciação: “smile”
Permite integrar partes de arquivos de multimídia (Áudio/Vídeo)
Sincronizar arquivos do tipo: mp3, som, imagens, Flash, jpeg, etc.
Links:
– http://www.w3.org/AudioVideo/
– http://www.cwi.nl/~media/SMIL/
• Em Português: http://www.helio.org/products/smil/tutorial_pt/
Controlando a mídia com SMIL
<smil>
<head>
<layout>
<root-layout width="300" height="200"
background-color="white" />
<region id="vim_icon" left="75" top="50"
width="32" height="32" />
</layout>
</head>
<body>
<img src="vim32x32.gif" alt="The vim icon"
region="vim_icon" dur="6s" begin="2s" />
</body>
</smil>
Eventos em paralelo
Inserir elemento de mídia numa
apresentação especificando a região
Evento com tempo e duração
Sincronização baseada em eventos
<smil>
<head>
<layout>
<root-layout width="300" height="200"
background-color="white" />
<region id="vim_icon" left="75" top="50"
width="32" height="32" />
</layout>
</head>
<body>
<img src="vim32x32.gif" alt="The vim icon"
region="vim_icon" />
</body>
</smil>
Linguagem SVG (W3C)
• Adobe (Plug-in) – Apache - SVGView (IBM)
• Linguagem para descrever gráficos em 2-D
– Formas vetoriais gráficas;
– Imagens;
– Texto.
•
•
•
•
E operações gráficas: animações, clipping, etc.
Todas as facilidades providas no XML
Suporte do World Wide Web Consortium (W3C)
Conversões de outros formatos para SVG:
– Color Graphics Metafile (CGM)
• Alternativa ao GIF/JPEG para visualização em browser.
SVG: rect
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20001102//EN“
"http://www.w3.org/TR/2000/CR-SVG-20001102/DTD/svg-20001102.dtd">
<svg width="12cm" height="4cm">
<desc>Example rect01 - rectangle expressed in physical units</desc>
<rect x="4cm" y="1cm" width="4cm" height="2cm“
style="fill:yellow; stroke:navy; stroke-width:0.1cm" />
</svg>
SVG: rect
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20001102//EN“
"http://www.w3.org/TR/2000/CR-SVG-20001102/DTD/svg-20001102.dtd">
<svg width="12cm" height="4cm" viewBox="0 0 1200 400">
<desc>Example rect02 - rounded rectangles expressed in user coordinates</desc>
<rect x="1" y="1" width="1198" height="398“
style="fill:none; stroke:blue"/>
<rect x="100" y="100" width="400" height="200" rx="50“
style="fill:green;" />
<g transform="translate(700 210) rotate(-30)">
<rect x="0" y="0" width="400" height="200" rx="50“
style="fill:none; stroke:purple; stroke-width:30" />
</g>
</svg>
SVG: text
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20001102//EN“
"http://www.w3.org/TR/2000/CR-SVG-20001102/DTD/svg-20001102.dtd">
<svg width="10cm" height="3cm">
<desc>Example tspan01 - using tspan to change visual attributes</desc>
<g style="font-family:Verdana; font-size:12pt">
<text x="2cm" y="1.5cm" style="fill:blue">
You are
<tspan style="font-weight:bold; fill:red">not</tspan>
a banana.
</text>
</g>
</svg>
Recursos SVG
•
•
•
•
•
http://www.mozilla.org/projects/svg/
http://www.adobe.com/
http://www.sun.com/software/xml/developers/svg/
http://www.w3.org/TR/SVG/svgdtd.html
http://home.earthlink.net/~edwardsrg/Adobe/AdobeTutorial.html
GML e outras tecnologias
Ho
Objetivo
• Não se pretende convencer do uso de ferramentas ou de tecnologias
computacionais. Não é evangelização.
• Apresentar algumas tecnologias que estão em evidência.
• Levantar questões sobre novos rumos frente as tecnologias emergentes.
– Tipos de dados existentes e formas alternativas de armazenar. Ex:
SpringWeb poderia ler arquivos xml, via Corba, via DB, etc.
– Tipos de aplicações que poderiam ampliar o alcance do GIS, inclusive os
aparentemente impensáveis/impraticáveis.
– Integrar os componentes desenvolvidos ou a serem desenvolvidos.
• Atender as questões levantadas por Laércio, JP, etc.
Um contexto de desenvolvimento
• Ferramentas básicas
– Programação Orientado a Objeto e uso de Design Patterns
– UML
• Tecnologia voltada ao domínio de trabalho.
– OpenGIS: OpenGIS Corba IDL, GML
• Tecnologia de suporte
– Corba, XML, EJB, BD de objetos (OODBMS), BD p/ XML
• Software de visualização
– Spring, SpringWeb, SVG, browsers
Padronização
• Estabelecer/documentar/uniformizar o vocabulário (específico ao
domínio) que definem elementos GIS.
• Utilizar especificações/recomendações estabelecidas por consenso por
instituições: OpenGIS (Features)
• Uso de padrões (abertos) consagrados para facilitar a
interoperabilidade de dados, serviços e programas.
Where Does GIS Live?
Java
XMI
Security
SQL-2
IIOP
CORBA
XML
e-commerce
Internet
W3C
Wide band
Legacy
SQL-MM
UML
Wireless
COM
Objects
IDL
Standards
A tough neighborhood
An Infrastructure of Agreements
Wireless Global
Communication
Limited Speech
Recognition
Object
Request
Brokers
Thematic
Data Providers
"Yellow Page"
Databases
Mobile
Devices
Spatial
Query
Engines
Interfaces
Spatial Data
Manipulation Engines
Advertisement
Pathways
Map
Portrayal
Servers
CORBA
Traders
Um exemplo de arquivo XML
<address>
<name>
<title>Mrs.</title>
<first-name>Mary </ first-name>
<last-name>McGoon </ last -name>
</ name>
<street> 10 Main street </ street>
<city> Dallas </ city>
.....
<zipcode>34829</zipcode>
</ address>
XML -eXtensible Markup Language
• Vem a ser um novo padrão de armazenamento/formatação de dados na
Internet. Projetado para descrever dados resolvendo em parte a questão
da interoperabilidade.
• Parecido com o HTML. Supre as deficiências do HTML como
representação de conteúdo.
• Facilita a manipulação de dados dentro e fora de programas. Pode-se
definir um conjunto de “tags”.
• Facilita a customização da apresentação de dados através de XSL.
Alternativa e complemento para CGI, JSP, ASP, ...
• É uma especificação mais simples e concisa do SGML.
Arquivos em formato XML
• Um arquivo XML deve ser “well formed”.
• Documentos XML pode ter a sua gramática especificada e validada
por Document Type Definitions (DTDs)
• XML pode ser usada de diversas maneiras
– com Banco de dados (por meio de toolkits)
• Armazenar arquivos (ou os elementos do) XML no
BD.
• consulta SQL sob forma de XML.
• Recuperar o ResultSet sob forma de XML.
– programas: Java, C++ (por meio de API)
– uso com todas as outras tecnologias: Corba, Servlet, JavaBeans (XML
integrando o processo de engenharia das aplicações)
O problema do “Best viewed with IE”
•
•
•
•
HTML combina conteúdo e apresentação numa estrutura.
Há problemas em estender o HTML para atender uma feature a mais.
No HTML tolera-se códigos ruins visíveis apenas no IE.
Extensões de tags no HTML é uma forma de entrincheirar num padrão
menos geral.
• Faz-se uso de JavaScript, applets, plug-ins para dar mais vida ao
HTML.
• O uso de CSS ajuda a estruturar melhor um documento HTML.
CSS - Cascading Style Sheets
H3 {font-family :
Arial,
Helvetica,
sans-serif;
color
: blue;
text-align : center;
}
<H3>1.3 Histórico</H3>
<P> Este trabalho tem origem .... </P>
XML usando DOM API
<?xml version="1.0"?>
<numbers-to-sum>
<number>20.5</number>
<number>34</number>
<number>16.0</number>
<number>50.5</number>
</numbers-to-sum>
Usando APIs: SAX e DOM
<Course>
<Name> Java 101 </Name>
<Dept> EECS </Dept>
</Course>
Informação: XML e código de aplicação
<ORDER>
<CUSTOMER>Bob</CUSTOMER>
<PART>Anvil
<QUANTITY>1</QUANTITY>
<SKU>012343QASD</SKU>
</PART>
</ORDER>
Order Customer myCustomer;
Part[] myPart;
1..n
1..n
XML Parser
Customer
String name;
Part long quantity;
long sku;
XML
Código da aplicação
Uso do XML como formato intermediário
• Exemplo fictício de um usuário de MS Office. (devido ao fato de se ter
o XML como o formato intermediário)
– Usuários salvam documentos do Office em HTML.
– Modificam os documentos como HTML (máquinas sem o MSO).
– E importar de volta no MS Office
Exemplo de um módulo da Oracle
1 - Request Manager atende um usuário.
2 - Request Manager envia o pedido para o Master Service.
3 - Master Service invoca um adapter para recuperar um conteúdo.
4 - O Adapter retorna o conteúdo sob forma de XML.
5 - O Transformer converte o conteúdo XML para o formato apropriado.
6 - O Request Manager retorna a informação para o dispositivo.
Mais ferramentas Oracle
Oracle XSQL
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="emp.xsl"?>
<query connection = "demo"
doc-element = "employee-list"
row-element = "employee"
tag-case = "lower" >
SELECT * FROM EMP ORDER BY ENAME
</query>
OpenGIS: Features
• "A feature is an abstraction of a real world phenomenon;”
• A representação do mundo real pode ser tratado como sendo uma
coleção de features.
• O estado de uma feature é definido por um conjunto de propriedades
(ou atributos): nome, tipo, valor.
• Uma feature collection pode ser por sua vez uma feature.
• Uma feature geográfica tem com uma de suas propriedades uma
geometria.
• “River” feature type pode ter uma propriedade “name” do tipo
“string”.
Geography Markup Language (GML)
• GML diz respeito ao “Simple Features” com propriedades geométricas
restritas a “simple geometry”, e;
• Codificação baseada em XML.
• Diz respeito à descrição de estrutura e relacionamento no mundo real.
• Para visualizar:
– leitura direta dos dados codificados em GML, ou
– transformar para uma codificação SVG, VML, VRML, etc.
• Para servir de dados para programas não visuais.
Exemplo: elemento de coordenadas
<decimal>::='.'
<D>:=[0-9]
<cs>::=","
<ts>::=whitespace (see XML 1.0 [XML]
<coordinate>::='-'<D>+(<decimal><D>+)?
<ctuple>::=<ctuple>|<coordinate><cs><ctuple>
<coordinatelist>::=<coordinatelist>|<ctuple><ts><coordinatelist>
<!ELEMENT coordinates (#PCDATA) >
<!ATTLIST coordinates
decimal CDATA #IMPLIED
cs
CDATA #IMPLIED
ts
CDATA #IMPLIED>
DTD
<coordinates decimal="." cs="," ts="whitespace">
GML
1.03,2.167 4.167,2.34 4.87,3.0 1.06,2.3
</coordinates>
Exemplo de elementos GML
Ponto
Região
srsName="EPSG:4326
<!ELEMENT Point (coordinates)<Point
>
<coordinates>
<!ATTLIST Point
56.1,0.45
ID
CDATA #IMPLIED
</coordinates>
srsName CDATA #IMPLIED>
</Point>
<!ELEMENT Box (coordinates) ><Box srsName="EPSG:4326">
<coordinates>
<!ATTLIST Box
0.0,0.0 100.0,100.0
ID
CDATA #IMPLIED
</coordinates>
srsName CDATA #REQUIRED>
</Box>
Elemento GeometryCollection
<GeometryCollection srsName="EPSG:4326">
<geometryMember>
<Point>
<coordinates>
50.0,50.0
</coordinates>
</Point>
</geometryMember>
<geometryMember>
<LineString>
<coordinates>
0.0, 0.0 0.0, 50.0 100.0, 50.0 100.0, 100.0
</coordinates>
</LineString>
</geometryMember>
<geometryMember>
<Polygon>
<outerBoundaryIs>
<LinearRing>
<coordinates>
0.0,0.0 100.0,0.0 50.0,100.0 0.0,0.0
</coordinates>
</LinearRing>
</outerBoundaryIs>
</Polygon>
</geometryMember>
</GeometryCollection>
Exemplo de codificação da Feature “River”
<Feature typeName="River">
<name>
Cam
</name>
<description>
The river that runs through Cambridge.
</description>
<geometricProperty typeName="centerLineOf">
<LineString srsName="EPSG:4326">
<coordinates>
0.0,50.0 100.0,50.0
</coordinates>
</LineString>
</geometricProperty>
</Feature>
Banco de Dados RDMS
• Arquitetura dual combinando
– Campos de Banco de Dados e
– Dados vetoriais/imagens em Diretórios.
• Dados em diretórios especificados por:
– Clobs & blobs
– Instancias de objetos
– Estruturas oriundas de XML
Object DataBase
• JDO - Java Data Objects - alternativa para JDBC
• API: JavaBlend mapea ODMG -> JDBC
• Poet - object DB solution
• Vantagens:
– Escreve menos código. Não há necessidade de escrever código chamando
SQL, ODBC, ou JDBC.
– Desempenho muito maior quando se lida com dados complexos.
– Combina com o modelo de objeto XML.
Armazenamento de dados: persistência de obj
Opções de armazenamento/persistência
•
•
•
•
BLOBS (e XML) no RDBMS
Serialização Java
JDO - BD de objetos Java
Entity Beans no EJB
Middle Tiers - Middlewares (infra-estruturas
de comunicação)
• Corba
• Enterprise JavaBeans
• Servlets, JSP
• Atendem a serviços num servidor (ou ambiente)
• Os serviços têm interfaces (“bem”) conhecidas
• Atuam como meio (substrato) para chamadas e transferências de
dados.
Download

Material XML