java e xml
DESCRIPTION
Palestra apresentada no seminário One Day Java.TRANSCRIPT
![Page 1: Java e XML](https://reader035.vdocuments.us/reader035/viewer/2022062300/5590ac841a28abb22a8b46c0/html5/thumbnails/1.jpg)
Java e XMLwrite once, publish
anywhereArmênio Cardoso
Consultor, Arquiteto de Sistemas e Professor
![Page 2: Java e XML](https://reader035.vdocuments.us/reader035/viewer/2022062300/5590ac841a28abb22a8b46c0/html5/thumbnails/2.jpg)
[email protected] e XML
O que é XML?
• Extensible Markup Language ou XML é uma nova tecnologia para aplicações Web.
• XML é um padrão definido pelo World Wide Web Consortium que permite que você crie as suas próprias tags.
• XML simplifica as transações B2b.
![Page 3: Java e XML](https://reader035.vdocuments.us/reader035/viewer/2022062300/5590ac841a28abb22a8b46c0/html5/thumbnails/3.jpg)
[email protected] e XML
Porque precisamos de XML?
• Porque precisamos de XML se os browsers suportam HTML?
• Vamos ver um trecho de código HTML:<p><b>Universidade Católica de Petrópolis</b><br>Rua Benjamim Constant<br>Petrópolis – Rio de Janeiro</p>
![Page 4: Java e XML](https://reader035.vdocuments.us/reader035/viewer/2022062300/5590ac841a28abb22a8b46c0/html5/thumbnails/4.jpg)
[email protected] e XML
Qual é o propósito do HTML?
• A linguagem HTML foi definida para interação homem-máquina.
• A sua função principal é a de diagramação e publicação de documentos.
• Quando renderizado, o html do exemplo anterior se transforma em “apresentação”.
![Page 5: Java e XML](https://reader035.vdocuments.us/reader035/viewer/2022062300/5590ac841a28abb22a8b46c0/html5/thumbnails/5.jpg)
[email protected] e XML
HTML vs. XML
• HTML é uma linguagem para a construção de IHM – Interface Homem-Máquina.
• O HTML não dispõe de nenhum recurso que descreva os dados contidos no documento.
• O papel do HTML é definir como dados devem se parecer.
![Page 6: Java e XML](https://reader035.vdocuments.us/reader035/viewer/2022062300/5590ac841a28abb22a8b46c0/html5/thumbnails/6.jpg)
[email protected] e XML
Exemplo de XML
• Vamos então ver como o XML se parece:<endereco><nome>
<titulo>Sr.</titulo><primeiro-nome>Armênio</primeiro-nome><ultimo-nome>Cardoso</ultimo-nome>
</nome><rua>Benjamim Constant</rua></endereco>
![Page 7: Java e XML](https://reader035.vdocuments.us/reader035/viewer/2022062300/5590ac841a28abb22a8b46c0/html5/thumbnails/7.jpg)
[email protected] e XML
Semântica
• Com XML você pode entender o significado das tags e estruturar informações.
• Mais do que isso, é possível escrever aplicações em Java, por exemplo, que “entendam” o significado dessas tags.
![Page 8: Java e XML](https://reader035.vdocuments.us/reader035/viewer/2022062300/5590ac841a28abb22a8b46c0/html5/thumbnails/8.jpg)
[email protected] e XML
Renderizando XML
• O XML do exemplo anterior poderia ser renderizado em uma tela exatamente como o exemplo em HTML.
• Mesmo que as tags sejam diferentes do HTML, é possível gerar saídas idênticas no browser.
![Page 9: Java e XML](https://reader035.vdocuments.us/reader035/viewer/2022062300/5590ac841a28abb22a8b46c0/html5/thumbnails/9.jpg)
[email protected] e XML
Write Once...
• XML é uma tecnologia que define o conceito de “folhas de estilo” (stylesheets).
• Esse recurso permite que um mesmo XML de origem possa ser renderizado em diversos formatos:
HTML – PDF – RTF - ...
![Page 10: Java e XML](https://reader035.vdocuments.us/reader035/viewer/2022062300/5590ac841a28abb22a8b46c0/html5/thumbnails/10.jpg)
[email protected] e XML
...Publish Anywhere
• A chave está na separação entre o arquivo que contém as informações do arquivo que contém as instruções de publicação (renderização).
• Em outras palavras, conteúdo e apresentação estão separados.
![Page 11: Java e XML](https://reader035.vdocuments.us/reader035/viewer/2022062300/5590ac841a28abb22a8b46c0/html5/thumbnails/11.jpg)
[email protected] e XML
Conteúdo e ApresentaçãoConteúdo
XML
DTD
XSL
Renderização Browser
HTML
PDFXSLT
DTD – document type definitionXSL/XSLT - stylesheet
![Page 12: Java e XML](https://reader035.vdocuments.us/reader035/viewer/2022062300/5590ac841a28abb22a8b46c0/html5/thumbnails/12.jpg)
[email protected] e XML
Como XML Muda a Web
• O ponto forte da linguagem XML é o intercâmbio de dados.
• Sistemas computacionais têm peculiaridades e muitas diferenças entre si.
• As diferenças aparecem em função das “idades” dos sistemas, equipes e ferramentas diferentes etc.
![Page 13: Java e XML](https://reader035.vdocuments.us/reader035/viewer/2022062300/5590ac841a28abb22a8b46c0/html5/thumbnails/13.jpg)
[email protected] e XML
Como XML Muda a Web
• Essas diferenças impõem barreiras na integração de sistemas.
• XML simplifica a troca de dados estruturados entre aplicações e entre organizações.
• Nada se perde nem precisa ser “compatibilizado” nas transações.
![Page 14: Java e XML](https://reader035.vdocuments.us/reader035/viewer/2022062300/5590ac841a28abb22a8b46c0/html5/thumbnails/14.jpg)
[email protected] e XML
Como XML Muda a Web
• Sistemas escritos por empresas diferentes, em linguagens diferentes e plataformas diferentes têm a chance de integração com XML.
• As únicas regras a serem seguidas são as da linguagem XML.
![Page 15: Java e XML](https://reader035.vdocuments.us/reader035/viewer/2022062300/5590ac841a28abb22a8b46c0/html5/thumbnails/15.jpg)
[email protected] e XML
Como XML Muda a Web
• O maior desafio enfrentado pelos mecanismos de pesquisa é conseguir interpretar o HTML de forma inteligente.
• Se você pesquisar pela palavra “chip”, provavelmente encontrará milhares de sites que falam sobre chips de computador ou sobre o Tico e Teco (Chip and Dale).
• Nesse caso o XML poderia diferenciar nomes próprios de coisas.
![Page 16: Java e XML](https://reader035.vdocuments.us/reader035/viewer/2022062300/5590ac841a28abb22a8b46c0/html5/thumbnails/16.jpg)
[email protected] e XML
Acessando XML no Browser
• Vimos que XML muda a forma com que os dados trafegam pela rede.
• XML encapsula dados dentro de tags customizadas, que carregam informações semânticas sobre os dados.
• Surge então uma questão: uma vez que eu tenho um arquivo XML como visualizá-lo?
![Page 17: Java e XML](https://reader035.vdocuments.us/reader035/viewer/2022062300/5590ac841a28abb22a8b46c0/html5/thumbnails/17.jpg)
[email protected] e XML
Acessando XML no Browser
• Um exemplo de solução para essa questão é o XML Enabler da IBM.
• Esse recurso permite converter XML em HTML usando “folhas de estilo” diferentes para diferentes browsers.
• Esse recurso é baseado em um servlet Java.
![Page 18: Java e XML](https://reader035.vdocuments.us/reader035/viewer/2022062300/5590ac841a28abb22a8b46c0/html5/thumbnails/18.jpg)
[email protected] e XML
Acessando XML no Browser
• Existem outras soluções de código aberto baseados em Java, que permitem transformar XML em diversos formatos, inclusive HTML.
• Um exemplo é o projeto Cocoon originado do grupo www.apache.org.
![Page 19: Java e XML](https://reader035.vdocuments.us/reader035/viewer/2022062300/5590ac841a28abb22a8b46c0/html5/thumbnails/19.jpg)
[email protected] e XML
Como as Coisas se Encaixam?
• Para construir um aplicativo XML é necessário:• Selecionar ou escrever um DTD –
document type definition• Gerar os documentos XML• Interpretar os documentos XML• Exibir os documentos XML
![Page 20: Java e XML](https://reader035.vdocuments.us/reader035/viewer/2022062300/5590ac841a28abb22a8b46c0/html5/thumbnails/20.jpg)
[email protected] e XML
Selecionar ou Escrever um DTD
• O que é o DTD (document type definition)? • Que tags fazem parte do seu documento.• Que tags contém outras tags.• O número e a sequência das tags.• Os atributos das tags e, opcionalmente, os
valores de domínio que esses atributos podem ter.
![Page 21: Java e XML](https://reader035.vdocuments.us/reader035/viewer/2022062300/5590ac841a28abb22a8b46c0/html5/thumbnails/21.jpg)
[email protected] e XML
Gerar um Documento XML
• Pense no DTD como um gabarito a ser preenchido.
• Para cada elemento, você deve obter os dados a partir da sua origem, tal como se fizesse uma query em um banco de dados.
• Quando o gabarito estiver preenchido, este pode ser enviado para quem pediu o documento.
![Page 22: Java e XML](https://reader035.vdocuments.us/reader035/viewer/2022062300/5590ac841a28abb22a8b46c0/html5/thumbnails/22.jpg)
[email protected] e XML
Regras de Validação
• Existem algumas regras para que um documento seja aceito como válido.• Por exemplo, as tags não podem se
sobrepor:<a><b></a></b>
• Uma tag não pode ser deixada sem a tag de fechamento.
• E outras regras...
![Page 23: Java e XML](https://reader035.vdocuments.us/reader035/viewer/2022062300/5590ac841a28abb22a8b46c0/html5/thumbnails/23.jpg)
[email protected] e XML
Documentos: Situações Possíveis
• Inválido:• Esse documento tem um DTD, mas não
segue as regras anteriores.
• “Well-formed”:• Seguem as regras, mas não têm um DTD.
• Válidos:• Seguem as regras e têm um DTD.
![Page 24: Java e XML](https://reader035.vdocuments.us/reader035/viewer/2022062300/5590ac841a28abb22a8b46c0/html5/thumbnails/24.jpg)
[email protected] e XML
Interpretando Documentos XML
• Quando você precisa interpretar um documento XML, existem duas APIs que podem ser usadas:• DOM – Document Object Model.• SAX – Simple API for XML.
![Page 25: Java e XML](https://reader035.vdocuments.us/reader035/viewer/2022062300/5590ac841a28abb22a8b46c0/html5/thumbnails/25.jpg)
[email protected] e XML
Interpretando Documentos XML
• DOM é um padrão do World Wide Web Consortium, que cria uma estrutura em árvore do seu documento XML.
• DOM define funções padronizadas para a manipulação dos elementos do seu documento.
![Page 26: Java e XML](https://reader035.vdocuments.us/reader035/viewer/2022062300/5590ac841a28abb22a8b46c0/html5/thumbnails/26.jpg)
[email protected] e XML
Interpretando Documentos XML
• SAX o notifica quando determinados eventos ocorrem, a medida em que o processo de “parsing” é executado sobre o seu documento.
• Quando você responde a um evento, quaisquer dados que não são armazenados, serão descartados.
![Page 27: Java e XML](https://reader035.vdocuments.us/reader035/viewer/2022062300/5590ac841a28abb22a8b46c0/html5/thumbnails/27.jpg)
[email protected] e XML
Interpretando Documentos XML
• SAX ou DOM?• Porque você deve usar SAX ou DOM? Se
os seus documentos são muito longos, o emprego da API SAX pode ser mais eficiente em termos do uso de memória.
• Por outro lado, DOM é uma API mais rica em funções do que SAX.
![Page 28: Java e XML](https://reader035.vdocuments.us/reader035/viewer/2022062300/5590ac841a28abb22a8b46c0/html5/thumbnails/28.jpg)
[email protected] e XML
Exibindo Documentos XML
• Existem diversas formas de exibir um documento XML:• Se o seu browser contiver lógica para
renderizar páginas XML.• Empregar XSL para transformar o
documento XML para algo que o seu browser entenda.
![Page 29: Java e XML](https://reader035.vdocuments.us/reader035/viewer/2022062300/5590ac841a28abb22a8b46c0/html5/thumbnails/29.jpg)
[email protected] e XML
Exibindo Documentos XML
• Caso o documento XML seja complexo em termos de estrutura de dados, é possível utilizar DOM.
• Dessa forma, você executa o “parsing” do documento e escreve código Java para manipular a árvore DOM, gerando o “output” que você quiser.
![Page 30: Java e XML](https://reader035.vdocuments.us/reader035/viewer/2022062300/5590ac841a28abb22a8b46c0/html5/thumbnails/30.jpg)
[email protected] e XML
Exemplo em Java
try
{
DOMParser parser = new DOMParser();
parser.parse(uri);
doc = parser.getDocument();
}
if (doc != null)
printDOMTree(doc);
![Page 31: Java e XML](https://reader035.vdocuments.us/reader035/viewer/2022062300/5590ac841a28abb22a8b46c0/html5/thumbnails/31.jpg)
[email protected] e XML
Exemplo em Java
public void printDOMTree(Node node){
int nodeType = Node.getNodeType();switch (nodeType){
case DOCUMENT_NODE:printDOMTree(((Document)node);GetDocumentElement());...
case ELEMENT_NODE:...
![Page 32: Java e XML](https://reader035.vdocuments.us/reader035/viewer/2022062300/5590ac841a28abb22a8b46c0/html5/thumbnails/32.jpg)
[email protected] e XML
Exemplo em Java
• Document Statistics for xpto.xml:• ====================================• Document Nodes: 1• Element Nodes: 23• Entity Reference Nodes: 0• CDATA Sections: 0• Text Nodes: 45• Processing Instructions: 0• ----------• Total: 69 Nodes
![Page 33: Java e XML](https://reader035.vdocuments.us/reader035/viewer/2022062300/5590ac841a28abb22a8b46c0/html5/thumbnails/33.jpg)
[email protected] e XML
Recursos
• Java Parsers• IBM - XML4J
http://www.alphaWorks.ibm.com
• James Clark –XPhttp://www.jclark.com/xml/xp
• Sun XML Parserhttp://developer.java.sun.com/developer/products/xml/
• DataChannel – XJParserhttp://xdev.datachannel.com/downloads/xjparser/
![Page 34: Java e XML](https://reader035.vdocuments.us/reader035/viewer/2022062300/5590ac841a28abb22a8b46c0/html5/thumbnails/34.jpg)
[email protected] e XML
Recursos
• Projeto Cocoon:http://www.apache.org
• Livro:• Java and XML – Brett McLaughlin – Editora
O’Reillyhttp://www.ora.com