Java e XML write once, publish anywhere Armênio Cardoso Consultor, Arquiteto de Sistemas e Professor
O que é XML? <ul><li>Extensible Markup Language ou XML é uma nova tecnologia para aplicações Web. </li></ul><ul><li>XML é ...
Porque precisamos de XML? <ul><li>Porque precisamos de XML se os browsers suportam HTML? </li></ul><ul><li>Vamos ver um tr...
Qual é o propósito do HTML? <ul><li>A linguagem HTML foi definida para interação homem-máquina. </li></ul><ul><li>A sua fu...
HTML vs. XML <ul><li>HTML é uma linguagem para a construção de IHM – Interface Homem-Máquina. </li></ul><ul><li>O HTML não...
Exemplo de XML <ul><li>Vamos então ver como o XML se parece: </li></ul><ul><li><endereco> </li></ul><ul><li><nome> </li></...
Semântica <ul><li>Com XML você pode entender o significado das tags e estruturar informações. </li></ul><ul><li>Mais do qu...
Renderizando XML <ul><li>O XML do exemplo anterior poderia ser renderizado em uma tela exatamente como o exemplo em HTML. ...
Write Once... <ul><li>XML é uma tecnologia que define o conceito de “folhas de estilo” (stylesheets). </li></ul><ul><li>Es...
...Publish Anywhere <ul><li>A chave está na separação entre o arquivo que contém as informações do arquivo que contém as i...
Conteúdo e Apresentação Conteúdo XML DTD XSL Renderização Browser HTML PDF XSLT DTD – document type definition XSL/XSLT - ...
Como XML Muda a Web <ul><li>O ponto forte da linguagem XML é o intercâmbio de dados. </li></ul><ul><li>Sistemas computacio...
Como XML Muda a Web <ul><li>Essas diferenças impõem barreiras na integração de sistemas. </li></ul><ul><li>XML simplifica ...
Como XML Muda a Web <ul><li>Sistemas escritos por empresas diferentes, em linguagens diferentes e plataformas diferentes t...
Como XML Muda a Web <ul><ul><li>O maior desafio enfrentado pelos mecanismos de pesquisa é conseguir interpretar o HTML de ...
Acessando XML no Browser <ul><li>Vimos que XML muda a forma com que os dados trafegam pela rede.  </li></ul><ul><li>XML en...
Acessando XML no Browser <ul><li>Um exemplo de solução para essa questão é o XML Enabler da IBM. </li></ul><ul><li>Esse re...
Acessando XML no Browser <ul><li>Existem outras soluções de código aberto baseados em Java, que permitem transformar XML e...
Como as Coisas se Encaixam? <ul><li>Para construir um aplicativo XML é necessário: </li></ul><ul><ul><li>Selecionar ou esc...
Selecionar ou Escrever um DTD <ul><li>O que é o DTD ( document type definition) ?  </li></ul><ul><ul><li>Que tags fazem pa...
Gerar um Documento XML <ul><li>Pense no DTD como um gabarito a ser preenchido. </li></ul><ul><li>Para cada elemento, você ...
Regras de Validação <ul><li>Existem algumas regras para que um documento seja aceito como válido. </li></ul><ul><ul><li>Po...
Documentos: Situações Possíveis <ul><li>Inválido: </li></ul><ul><ul><li>Esse documento tem um DTD, mas não segue as regras...
Interpretando Documentos XML <ul><li>Quando você precisa interpretar um documento XML, existem duas APIs que podem ser usa...
Interpretando Documentos XML <ul><li>DOM é um padrão do World Wide Web Consortium, que cria uma estrutura em árvore do seu...
Interpretando Documentos XML <ul><li>SAX o notifica quando determinados eventos ocorrem, a medida em que o processo de “pa...
Interpretando Documentos XML <ul><li>SAX ou DOM? </li></ul><ul><ul><li>Porque você deve usar SAX ou DOM? Se os seus docume...
Exibindo Documentos XML <ul><li>Existem diversas formas de exibir um documento XML: </li></ul><ul><ul><li>Se o seu browser...
Exibindo Documentos XML <ul><li>Caso o documento XML seja complexo em termos de estrutura de dados, é possível utilizar DO...
Exemplo em Java <ul><li>try </li></ul><ul><li>{ </li></ul><ul><li>DOMParser parser = new DOMParser(); </li></ul><ul><li>pa...
Exemplo em Java <ul><li>public void printDOMTree(Node node) </li></ul><ul><li>{ </li></ul><ul><li>int nodeType = Node.getN...
Exemplo em Java <ul><li>Document Statistics for xpto.xml: </li></ul><ul><li>==================================== </li></ul...
Recursos <ul><li>Java Parsers </li></ul><ul><ul><li>IBM - XML4J </li></ul></ul><ul><ul><ul><li>http://www.alphaWorks.ibm.c...
Recursos <ul><li>Projeto Cocoon: </li></ul><ul><ul><li>http://www.apache.org </li></ul></ul><ul><li>Livro: </li></ul><ul><...
Upcoming SlideShare
Loading in …5
×

Java e XML

1,475 views

Published on

Palestra apresentada no seminário One Day Java.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,475
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
20
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Java e XML

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

×