Java e XML

34
Java e XML write once, publish anywhere Armênio Cardoso Consultor, Arquiteto de Sistemas e Professor

description

Palestra apresentada no seminário One Day Java.

Transcript of Java e XML

Page 1: Java e XML

Java e XMLwrite once, publish

anywhereArmênio Cardoso

Consultor, Arquiteto de Sistemas e Professor

Page 2: Java e XML

[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

[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

[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

[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

[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

[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

[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

[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

[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

[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

[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

[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

[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

[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

[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

[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

[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

[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

[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

[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

[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

[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

[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

[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

[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

[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

[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

[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

[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

[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

[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

[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

[email protected] e XML

Recursos

• Projeto Cocoon:http://www.apache.org

• Livro:• Java and XML – Brett McLaughlin – Editora

O’Reillyhttp://www.ora.com