O documento apresenta uma introdução a XML e tecnologias relacionadas, abordando tópicos como: estrutura de documentos XML, namespaces, validação com DTD e XML Schema, manipulação com DOM e SAX, transformação com XSLT e XPath, e onde XML pode ser usado.
O documento discute XML (Extensible Markup Language), comparando-o com HTML e descrevendo suas características, aplicações e como inseri-lo em documentos HTML. Explica também XSLT (Extensible Stylesheet Language Transformations) e como formatar documentos XML.
XML (eXtensible Markup Language) é uma recomendação da W3C para gerar linguagens de marcação para necessidades especiais.
É um dos subtipos da SGML (acrônimo de Standard Generalized Markup Language ou Linguagem Padronizada de Marcação Genérica) capaz de descrever diversos tipos de dados. Seu propósito principal é a facilidade de compartilhamento de informações através da internet.
O documento apresenta uma introdução à tecnologia XML, abordando: 1) os objetivos de oferecer uma visão geral de XML e responder questões sobre sua implementação; 2) os assuntos tratados como produção de documentos XML, validação, manipulação e transformação; 3) a definição do que é XML.
O documento discute como XML permite a separação entre conteúdo e apresentação, permitindo que os mesmos dados sejam publicados em diferentes formatos como HTML, PDF e outros. XML define tags personalizadas que carregam informações semânticas sobre os dados e podem ser interpretadas por sistemas computacionais. Isso facilita a integração de sistemas desenvolvidos com diferentes linguagens e tecnologias.
Este documento discute processamento de dados XML, abordando:
1) Como escrever e ler documentos XML;
2) As etapas de leitura de um documento XML, que envolvem validação, substituição de entidades e verificação de formatos;
3) As interfaces e classes da API SAX usadas para processamento baseado em eventos.
O documento discute as tecnologias XML e HTML, as regras de construção de documentos XML incluindo sintaxe, seções CDATA e esquemas DTD e XML Schema. Também aborda modelos de processamento como SAX e DOM.
O documento discute a arquitetura JAXB e como ela permite integrar aplicações Java com XML de forma transparente através do mapeamento entre classes Java e documentos XML. JAXB gera classes Java a partir de esquemas XML e permite serializar e desserializar objetos para XML e vice-versa sem precisar lidar diretamente com a sintaxe XML. O documento também explica conceitos como esquemas XML, tipos de dados, elementos e atributos.
[1] O documento discute formatos XML, incluindo objetivos da linguagem XML, documentos bem formados e válidos, DTD e esquemas XML. [2] Também aborda visualização e interrogação de documentos XML usando XSL e XPath, processamento de arquivos XML e APIs como SAX e DOM. [3] Fornece referências sobre XML e apresenta uma perspectiva histórica sobre HTML, SGML e as motivações por trás da criação da linguagem XML.
O documento discute XML (Extensible Markup Language), comparando-o com HTML e descrevendo suas características, aplicações e como inseri-lo em documentos HTML. Explica também XSLT (Extensible Stylesheet Language Transformations) e como formatar documentos XML.
XML (eXtensible Markup Language) é uma recomendação da W3C para gerar linguagens de marcação para necessidades especiais.
É um dos subtipos da SGML (acrônimo de Standard Generalized Markup Language ou Linguagem Padronizada de Marcação Genérica) capaz de descrever diversos tipos de dados. Seu propósito principal é a facilidade de compartilhamento de informações através da internet.
O documento apresenta uma introdução à tecnologia XML, abordando: 1) os objetivos de oferecer uma visão geral de XML e responder questões sobre sua implementação; 2) os assuntos tratados como produção de documentos XML, validação, manipulação e transformação; 3) a definição do que é XML.
O documento discute como XML permite a separação entre conteúdo e apresentação, permitindo que os mesmos dados sejam publicados em diferentes formatos como HTML, PDF e outros. XML define tags personalizadas que carregam informações semânticas sobre os dados e podem ser interpretadas por sistemas computacionais. Isso facilita a integração de sistemas desenvolvidos com diferentes linguagens e tecnologias.
Este documento discute processamento de dados XML, abordando:
1) Como escrever e ler documentos XML;
2) As etapas de leitura de um documento XML, que envolvem validação, substituição de entidades e verificação de formatos;
3) As interfaces e classes da API SAX usadas para processamento baseado em eventos.
O documento discute as tecnologias XML e HTML, as regras de construção de documentos XML incluindo sintaxe, seções CDATA e esquemas DTD e XML Schema. Também aborda modelos de processamento como SAX e DOM.
O documento discute a arquitetura JAXB e como ela permite integrar aplicações Java com XML de forma transparente através do mapeamento entre classes Java e documentos XML. JAXB gera classes Java a partir de esquemas XML e permite serializar e desserializar objetos para XML e vice-versa sem precisar lidar diretamente com a sintaxe XML. O documento também explica conceitos como esquemas XML, tipos de dados, elementos e atributos.
[1] O documento discute formatos XML, incluindo objetivos da linguagem XML, documentos bem formados e válidos, DTD e esquemas XML. [2] Também aborda visualização e interrogação de documentos XML usando XSL e XPath, processamento de arquivos XML e APIs como SAX e DOM. [3] Fornece referências sobre XML e apresenta uma perspectiva histórica sobre HTML, SGML e as motivações por trás da criação da linguagem XML.
O documento discute o armazenamento e publicação de documentos XML. Resume os principais pontos sobre mapeamento de estruturas XML para bancos de dados relacionais utilizando ferramentas como XML-DBMS, Altova XML Spy, JAXB e Castor, além do suporte nativo de SGBDs como Oracle, SQL Server e IBM DB2. A análise aponta limitações dessas abordagens como geração de esquemas e reconstrução de documentos.
1) O documento discute XML, incluindo suas características, regras de construção e modelos de processamento como SAX e DOM.
2) XML é usado para estruturar dados hierarquicamente e permite a criação de novas tags, diferente de HTML que tem tags pré-definidas.
3) As regras de XML incluem ter um elemento raiz, tags de abertura e fechamento correspondentes, e diferenciar maiúsculas de minúsculas.
O documento introduz os conceitos básicos de XML, definindo-o como uma linguagem de marcação extensível criada pelo W3C para facilitar o compartilhamento de informações na internet. Ele descreve características como a separação de conteúdo e formatação, a possibilidade de criação de elementos personalizados e a simplicidade da linguagem.
O documento descreve as tecnologias XML, Webservices e RSS. XML é uma linguagem para marcação de dados que permite compartilhar informações na internet. Webservices permitem a integração de sistemas através do envio e recebimento de dados em formato XML. RSS é um formato XML para agregar conteúdo de sites e permitir que usuários assinem feeds para receber atualizações.
O documento discute a linguagem XML (eXtensible Markup Language) como um padrão para descrever dados estruturados que podem ser compartilhados na web. XML oferece vantagens em relação a HTML ao separar os dados de sua apresentação e permitir a criação de tags personalizadas. A adoção de XML pode facilitar a automação, buscas precisas e o intercâmbio de dados entre empresas.
1) O documento discute as diferenças entre HTML e XML, afirmando que HTML é para formatação gráfica enquanto XML é para estrutura de dados.
2) Detalha as regras de construção de documentos XML, incluindo sintaxe, seções CDATA, esquemas DTD e XML Schema.
3) Explica dois modelos de processamento XML - SAX e DOM - e como cada um lida com documentos XML.
O documento discute: 1) como dados estruturados, semi-estruturados e não estruturados são armazenados e acessados; 2) como XML é usado para estruturar dados na web de forma mais flexível que HTML; 3) como esquemas XML especificam a estrutura de documentos XML de forma mais genérica que DTDs.
O documento apresenta um seminário sobre XML realizado por uma equipe de estudantes. Apresenta o que é XML, seu histórico, objetivos, vantagens, características, benefícios e padrões. Explica que XML é uma linguagem de marcação que organiza dados estruturados e permite a descrição precisa de conteúdo, facilitando buscas significativas. Compara XML ao HTML e destaca que XML descreve conteúdo enquanto HTML descreve formatação.
1. O documento discute tecnologias relacionadas a XML e seu uso no SQL Server, incluindo noções básicas de XML, XPath, XQuery, XSLT, SVG, MathML e XML Schema.
2. É apresentado o suporte nativo do SQL Server para armazenamento e processamento de dados XML, incluindo o tipo de dado xml e XML Schema Collections.
3. São demonstrados exemplos de uso de XQuery para consultar dados XML armazenados e métodos do tipo xml no SQL Server.
Este documento descreve a linguagem XML, incluindo sua origem, objetivos, estrutura e elementos. XML foi desenvolvido para permitir a distribuição de qualquer tipo de informação estruturada na web e define regras para a criação de documentos auto-descritivos.
1) O documento discute os conceitos básicos de XML, incluindo suas características, definições e padrões.
2) É feita uma comparação entre XML e HTML, destacando que XML descreve o conteúdo do documento enquanto HTML descreve a aparência.
3) São apresentados exemplos de estruturas em HTML e XML, incluindo uma receita.
O documento discute XML (Linguagem de Marcação Extensível), definindo-o como uma linguagem para padronizar sequências de dados e organizar conteúdo para integrá-lo com outras linguagens. Ele também discute conceitos como Schema, WSDL, SOAP e UDDI que são usados com web services baseados em XML, além de exemplos de produtos e como XML é usado atualmente para integrar sistemas corporativos e fornecer uma boa experiência ao usuário.
Arquitetura: XML + RDF ate WebSemanticaSergio Crespo
O documento descreve as principais tecnologias da Web Semântica: XML, RDF e ontologias. XML fornece uma estrutura para dados estruturados e sua separação de apresentação. RDF modela dados e relacionamentos em triplos para representar informações sobre recursos na Web. Ontologias como RDFS criam vocabulários e hierarquias de classes para recursos de determinados domínios.
Mercia regina portfólio-interdisciplinar-individual - analise-de-sistemas-1º-...Mércia Regina da Silva
Este documento apresenta um trabalho interdisciplinar sobre o desenvolvimento de sistemas web para a Universidade Norte do Paraná (UNOPAR). O trabalho aborda conceitos básicos de HTML e edição de documentos HTML, e foi apresentado para as disciplinas de Educação à Distância, Desenvolvimento de Sistemas Web, Metodologia Científica e outras.
1) Web services usam principalmente XML para transmitir dados entre aplicações e integrar sistemas de forma interoperável.
2) XML possui vantagens como comunicação de dados, migração de dados e aplicações web.
3) SOAP é um protocolo padrão para web services que usa XML para troca estruturada de informações em ambientes distribuídos.
Web services são soluções para integrar sistemas e permitir comunicação entre aplicações diferentes baseadas em HTTP/XML, onde cada aplicação pode ter sua própria linguagem traduzida para o formato XML. Conceitos como XML, Schema, WSDL, SOAP e UDDI formam a base dos web services. Exemplos de uso incluem Amazon Web Services, notas fiscais eletrônicas e PayPal.
José Lino Neto apresenta suas credenciais como desenvolvedor .NET com foco em C#, segurança privada e experiência com plataformas abertas. O documento descreve brevemente Web Services, XML e suas vantagens para comunicação entre sistemas, incluindo independência de plataforma e padronização.
O documento discute o XHTML, uma evolução do HTML que segue os padrões do XML. O XHTML permite maior acessibilidade, navegabilidade e conformidade dos documentos na web. Ele define elementos e atributos de forma mais rigorosa que o HTML para permitir a extensão da linguagem e a preparação para o futuro da web.
O documento fornece uma introdução sobre o que é XML, sua história, princípios, vantagens, características, estrutura de documentos XML, especificação da estrutura, uso em bancos de dados e casos de uso em empresas. XML é uma linguagem de marcação que permite compartilhar informações estruturadas de forma independente de layout e plataforma.
O documento discute conceitos fundamentais de tecnologia web, incluindo arquitetura cliente-servidor, linguagens de programação do lado do cliente e servidor, armazenamento de dados em bancos de dados, e frameworks e APIs.
O documento discute o armazenamento e publicação de documentos XML. Resume os principais pontos sobre mapeamento de estruturas XML para bancos de dados relacionais utilizando ferramentas como XML-DBMS, Altova XML Spy, JAXB e Castor, além do suporte nativo de SGBDs como Oracle, SQL Server e IBM DB2. A análise aponta limitações dessas abordagens como geração de esquemas e reconstrução de documentos.
1) O documento discute XML, incluindo suas características, regras de construção e modelos de processamento como SAX e DOM.
2) XML é usado para estruturar dados hierarquicamente e permite a criação de novas tags, diferente de HTML que tem tags pré-definidas.
3) As regras de XML incluem ter um elemento raiz, tags de abertura e fechamento correspondentes, e diferenciar maiúsculas de minúsculas.
O documento introduz os conceitos básicos de XML, definindo-o como uma linguagem de marcação extensível criada pelo W3C para facilitar o compartilhamento de informações na internet. Ele descreve características como a separação de conteúdo e formatação, a possibilidade de criação de elementos personalizados e a simplicidade da linguagem.
O documento descreve as tecnologias XML, Webservices e RSS. XML é uma linguagem para marcação de dados que permite compartilhar informações na internet. Webservices permitem a integração de sistemas através do envio e recebimento de dados em formato XML. RSS é um formato XML para agregar conteúdo de sites e permitir que usuários assinem feeds para receber atualizações.
O documento discute a linguagem XML (eXtensible Markup Language) como um padrão para descrever dados estruturados que podem ser compartilhados na web. XML oferece vantagens em relação a HTML ao separar os dados de sua apresentação e permitir a criação de tags personalizadas. A adoção de XML pode facilitar a automação, buscas precisas e o intercâmbio de dados entre empresas.
1) O documento discute as diferenças entre HTML e XML, afirmando que HTML é para formatação gráfica enquanto XML é para estrutura de dados.
2) Detalha as regras de construção de documentos XML, incluindo sintaxe, seções CDATA, esquemas DTD e XML Schema.
3) Explica dois modelos de processamento XML - SAX e DOM - e como cada um lida com documentos XML.
O documento discute: 1) como dados estruturados, semi-estruturados e não estruturados são armazenados e acessados; 2) como XML é usado para estruturar dados na web de forma mais flexível que HTML; 3) como esquemas XML especificam a estrutura de documentos XML de forma mais genérica que DTDs.
O documento apresenta um seminário sobre XML realizado por uma equipe de estudantes. Apresenta o que é XML, seu histórico, objetivos, vantagens, características, benefícios e padrões. Explica que XML é uma linguagem de marcação que organiza dados estruturados e permite a descrição precisa de conteúdo, facilitando buscas significativas. Compara XML ao HTML e destaca que XML descreve conteúdo enquanto HTML descreve formatação.
1. O documento discute tecnologias relacionadas a XML e seu uso no SQL Server, incluindo noções básicas de XML, XPath, XQuery, XSLT, SVG, MathML e XML Schema.
2. É apresentado o suporte nativo do SQL Server para armazenamento e processamento de dados XML, incluindo o tipo de dado xml e XML Schema Collections.
3. São demonstrados exemplos de uso de XQuery para consultar dados XML armazenados e métodos do tipo xml no SQL Server.
Este documento descreve a linguagem XML, incluindo sua origem, objetivos, estrutura e elementos. XML foi desenvolvido para permitir a distribuição de qualquer tipo de informação estruturada na web e define regras para a criação de documentos auto-descritivos.
1) O documento discute os conceitos básicos de XML, incluindo suas características, definições e padrões.
2) É feita uma comparação entre XML e HTML, destacando que XML descreve o conteúdo do documento enquanto HTML descreve a aparência.
3) São apresentados exemplos de estruturas em HTML e XML, incluindo uma receita.
O documento discute XML (Linguagem de Marcação Extensível), definindo-o como uma linguagem para padronizar sequências de dados e organizar conteúdo para integrá-lo com outras linguagens. Ele também discute conceitos como Schema, WSDL, SOAP e UDDI que são usados com web services baseados em XML, além de exemplos de produtos e como XML é usado atualmente para integrar sistemas corporativos e fornecer uma boa experiência ao usuário.
Arquitetura: XML + RDF ate WebSemanticaSergio Crespo
O documento descreve as principais tecnologias da Web Semântica: XML, RDF e ontologias. XML fornece uma estrutura para dados estruturados e sua separação de apresentação. RDF modela dados e relacionamentos em triplos para representar informações sobre recursos na Web. Ontologias como RDFS criam vocabulários e hierarquias de classes para recursos de determinados domínios.
Mercia regina portfólio-interdisciplinar-individual - analise-de-sistemas-1º-...Mércia Regina da Silva
Este documento apresenta um trabalho interdisciplinar sobre o desenvolvimento de sistemas web para a Universidade Norte do Paraná (UNOPAR). O trabalho aborda conceitos básicos de HTML e edição de documentos HTML, e foi apresentado para as disciplinas de Educação à Distância, Desenvolvimento de Sistemas Web, Metodologia Científica e outras.
1) Web services usam principalmente XML para transmitir dados entre aplicações e integrar sistemas de forma interoperável.
2) XML possui vantagens como comunicação de dados, migração de dados e aplicações web.
3) SOAP é um protocolo padrão para web services que usa XML para troca estruturada de informações em ambientes distribuídos.
Web services são soluções para integrar sistemas e permitir comunicação entre aplicações diferentes baseadas em HTTP/XML, onde cada aplicação pode ter sua própria linguagem traduzida para o formato XML. Conceitos como XML, Schema, WSDL, SOAP e UDDI formam a base dos web services. Exemplos de uso incluem Amazon Web Services, notas fiscais eletrônicas e PayPal.
José Lino Neto apresenta suas credenciais como desenvolvedor .NET com foco em C#, segurança privada e experiência com plataformas abertas. O documento descreve brevemente Web Services, XML e suas vantagens para comunicação entre sistemas, incluindo independência de plataforma e padronização.
O documento discute o XHTML, uma evolução do HTML que segue os padrões do XML. O XHTML permite maior acessibilidade, navegabilidade e conformidade dos documentos na web. Ele define elementos e atributos de forma mais rigorosa que o HTML para permitir a extensão da linguagem e a preparação para o futuro da web.
O documento fornece uma introdução sobre o que é XML, sua história, princípios, vantagens, características, estrutura de documentos XML, especificação da estrutura, uso em bancos de dados e casos de uso em empresas. XML é uma linguagem de marcação que permite compartilhar informações estruturadas de forma independente de layout e plataforma.
O documento discute conceitos fundamentais de tecnologia web, incluindo arquitetura cliente-servidor, linguagens de programação do lado do cliente e servidor, armazenamento de dados em bancos de dados, e frameworks e APIs.
2. 2
Sumário
ƒ Parte I: XML e tecnologias relacionadas
ƒ Documentos XML; namespaces; processadores
ƒ DTD e XSchema
ƒ DOM e SAX
ƒ XSLT e XPath
ƒ Parte II: APIs Java para XML e Web Services
ƒ Introdução a Web Services: SOAP, WSDL, UDDI
ƒ JAXP - Java API for XML Processing, JDOM, SAX e XSLT
ƒ JAXB - Java API for XML Binding
ƒ JAXM - Java API for XML Messaging
ƒ JAXR - Java API for XML Registry
ƒ JAXRPC - como criar um Web Service com JAX-RPC
ƒ Java Web Service Development Kit
4. 4
Parte I - Introdução a XML
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
5. 5
Parte I - 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
6. 6
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>
<email>bill@norte.com.br</email>
<telefone tipo="celular">
<area>11</area>
<numero>9999 4321</numero>
</telefone>
</contato>
elemento
atributo
"nó" de texto
7. 7
XML versus HTML
HTML mostra
como
apresentar
XML mostra
o que
significa
<nome>Severino Severovitch</nome>
<email>bill@norte.com.br</email>
<telefone>
<ddd>11</ddd>
<numero>9999 4321</numero>
</telefone>
<h1>Severino Severovitch</h1>
<h2>bill@norte.com.br</h2>
<p>
<b>11</b>
<i>9999 4321</i>
</p>
8. 8
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):
ƒ Menor documento contendo elemento vazio
ƒ Menor documento contendo elemento e conteúdo texto
<nome> Северино Северович </nome>
<nome> Северино Северович </nome>
<nome> Северино Северович </nome>
Etiqueta
inicial
Conteúdo do
Elemento
Etiqueta
final
Elemento raiz
<nome/>
<nome></nome> =
9. 9
Partes de um documento
Partes de um documento
nó raiz ( / )
elemento raiz
elementos
atributos
<?xml version="1.0" encoding="iso-8859-1" ?>
<cartao-simples>
<logotipo href="/imagens/logo14bis.gif" />
<nome>Alberto Santos Dumont</nome>
<endereco>Rua do Encanto, 22 - 2o. andar -
Centro - 25600-000 - Petrópolis - RJ</endereco>
<email>dumont@14bis.com.br</email>
<telefone tipo="residencial" >
<ddd>21</ddd>
<numero>2313011</numero>
</telefone>
</cartao-simples>
declaração XML
11. 11
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
<cadastro xmlns:firma="01.234.567/0001-99">
<nome>Severino Severovitch</nome>
<firma:nome>Sibéria Informática Ltda.</firma:nome>
<email>bill@norte.com.br</email>
</cadastro>
identificador
prefixo
Este elemento <nome> pertence a outro namespace
12. 12
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
13. 13
Onde usar XML?
ƒ Dados armazenados em XML podem ser facilmente
transformados em outros formatos
PDF
PDF
PDF
2000 2001
SGBD
<xml>
<xml>
<xml>
<xml>
<xml>
Web
HTML
CSS
JavaScript
VRML
PDF e
PostScript
Gráficos SVG
Imagens
JPG e PNG
WML
VoiceXML
"custom"
XML
DOM
SAX
texto
W
W
RTF
TeX
SGML
XSLT
XSL-FO
14. 14
Como produzir XML
ƒ Criando um documento de texto Unicode a partir
de qualquer editor de textos
ƒ Gerando um documento a partir de uma árvore
montada dinamicamente
<contato codigo="33">
<nome>Severino Severovitch</nome>
<email>bill@norte.com.br</email>
<telefone tipo="celular">
<area>11</area>
<numero>9999 4321</numero>
</telefone>
</contato>
<contato codigo="33">
<nome>Severino Severovitch</nome>
<email>bill@norte.com.br</email>
<telefone tipo="celular">
<area>11</area>
<numero>9999 4321</numero>
</telefone>
</contato>
celular
11
9999 4321
33
Severino Severovitch
bill@norte.com.br
15. 15
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
16. 16
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
17. 17
Esquema
ƒ O esquema representa uma classe
ƒ Os documentos são instâncias
Esquema (universo de
documentos válidos)
Documentos que aderem à
especificação (válidos)
Documento
fora da
especificação
Como definir esquemas:
DTD - Document Type Definition
W3C XML Schema
18. 18
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
(nome, email, telefone)>
<!ATTLIST contato
codigo NMTOKEN #REQUIRED>
<xsd:schema
xmlns:xsd=".../XMLSchema">
<xsd:element name="contato">
<xsd:complexType>
<xsd:attribute name="codigo"
use="required">
• É XML, porém mais complexo
• Suporta namespaces
• Permite definição de tipos
• Simples mas não é XML
• Não suporta namespaces
• Limitado quando a tipos de dados
19. 19
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
20. 20
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
21. 21
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
22. 22
Criação de documentos com DOM (1)
ƒ Criação dos elementos
ƒ Atributos
/ Document
<carta> Element
<mensagem> Element
Bom dia! String texto = doc.createTextNode("Bom dia!")
mens = doc.createElement("mensagem")
carta = doc.createElement("carta")
Obter objeto do tipo Document (raiz)
(dependente de processador): doc
<mensagem id="1"> mens.setAttribute("id", "1")
23. 23
Criação de documentos com DOM (2)
Montagem da árvore passo-a-passo
1. Sub-árvore <mensagem>
2. Sub-árvore <carta>
3. Árvore completa
/
Bom dia!
mens.appendChild(texto)
carta.appendChild(mens)
doc.appendChild(carta)
Bom dia!
<carta>
Bom dia!
<mensagem id="1">
<mensagem id="1">
<mensagem id="1">
<carta>
24. 24
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
ƒ Expressões XPath são usadas dentro de atributos XML
ƒ Usadas em XSLT, XLink, XQuery e XPointer
celular
11
9999 4321
33
Severino Severovitch
bill@norte.com.br
• Caminhos absolutos
/contato/@codigo
/contato/telefone/@tipo
/contato/telefone/numero/text()
• Relativos ao contexto /contato:
@codigo (ou ./@codigo)
telefone@tipo (ou ./telefone/tipo)
telefone/numero/text()
* pode também ser padrão de busca
25. 25
XSLT
ƒ 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
Processador XSLT
Xalan, TrAX, Saxon
Netscape, I. Explorer
Folha de
estilos
Documento
Resultado
Documento
Fonte
fonteToHtml.xslt
fonte.xml
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="livro/titulo">
<td><xsl:value-of select="." /></td>
26. 26
Rio de Janeiro
08:15
XSLT: documento-fonte (1)
ƒ Considere o seguinte documento-fonte:
<aeronave id="PTGWZ">
<origem partida="08:15">Rio de
Janeiro</origem>
<destino>Itabuna</destino>
</aeronave>
ƒ Árvore-fonte
/
@id
@partida
<aeronave>
<origem>
<destino>
PTGWZ
Itabuna
27. 27
XSLT: folha de estilos (2)
ƒ O seguinte template (parte de uma folha de estilos XSLT)
pode extrair os dados do documento-fonte
<xsl:template match="aeronave">
<p>A aeronave de prefixo
<xsl:value-of select="@id" /> decolou
de <xsl:value-of select="origem" /> às
<xsl:value-of select="origem@partida" />
tendo como destino o aeroporto de
<xsl:value-of select="destino" />.</p>
</xsl:template>
ƒ Elementos XSLT geralmente são usados com um prefixo
associado ao seu namespace: <xsl:elemento> para evitar
conflitos com o documento-resultado.
documento-fonte
(em azul - XPath)
documento
resultado
(em preto)
elementos XSLT
(em vermelho, com prefixo xsl)
28. 28
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
29. 29
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
30. 30
XSL-FO
ƒ 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
Processador
XSLT
XSLT
Documento
XSLFO
Fonte
FOP Documento
PDF
XML
XML
XML
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master master-name="p1">
<fo:region-body/>
31. 31
XSL-FO: menor documento
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master master-name="p1">
<fo:region-body/>
</fo:simple-page-master>
</fo:layout-master-set>
<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>
</fo:page-sequence>
</fo:root>
Este é o "<body>"
do XSL-FO
Este é o "<head>"
do XSL-FO
Ligação entre as
regras de layout e
o conteúdo afetado
32. 32
XHTML
ƒ 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
Processador XSLT
XSLT
Documento
XHTML
Documento
Fonte
XML
XML
XML
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>Página XHTML</title></head>
<body>
<h1>Página XHTML</h1>
33. 33
SVG
ƒ 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
<svg>
<circle style="fill: red" cx="3cm" cy="3cm" r="2.5cm" />
<rect style="fill: blue" x="6cm" y="6cm"
height="2.5cm" width="1.5cm" />
Zoom +
Zoom +
35. 35
Algumas outras linguagens XML
MathML
SOAP
WSDL
UDDI
ebXML
CML
Web Services
XML-RPC
XMI
1 *
WML
VoiceXML
Classe3
oper(): void
oper2(): int
Classe
oper(): void
oper2(): int
Classe2
oper(): void
oper2(): int
36. 36
Demonstração
ƒ Exemplo de transformação XML
Xalan
FOP
JFOR
Texto texto
texto texto
texto texto
texto texto
texto
<xslt>
FO
<xslt>
HTML
PDF
2000 2001
<xml>
HTML
W
W
<xsl:fo>
(1)
(2)
<xslt>
SVG
(3)
<xslt>
Texto
(4)
(1.a)
(1.b)
SVG
37. 37
Ferramentas e APIs Java
ƒ Para programação
ƒ Parsers-validadores: Xerces, Crimson, MSXML 4.0
ƒ Validadores: MSV (Sun)
ƒ Transformadores XSL: TrAX (JAXP), Xalan, Xt, Saxon
ƒ APIs: JDOM, JAXP (DOM, SAX)
ƒ Veja mais em xml.apache.org e
www.alphaworks.ibm.com
ƒ Para edição (de XML genérico)
ƒ XML Spy Suite
ƒ Framemaker / ArborText
ƒ JEdit com plug-ins para XML, XSLT e XPath
ƒ Veja mais em www.w3.org/XML/
38. 38
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
39. 39
Fontes
[1] World Wide Web Consortium (W3C). eXtensible Markup Language.
http://www.w3.org/XML/. 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.
http://java.sun.com/xml/jaxp/dist/1.1/docs/tutorial/index.html.
[3] Adobe. SVG Tutorial. http://www.adobe.com/svg/. Contém tutorial sobre SVG e
links para o plug-in SVG da Adobe (Win/Mac).
[4] IBM Developerworks. http://www-106.ibm.com/developerworks/. 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 http://cafeconleche.org/books/bible2/
[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).
41. 41
Parte II - Java, XML e Web Services
ƒ Objetivos:
ƒ Definir Web Services
ƒ Descrever as tecnologias XML padrão que oferecem
suporte a Web Services
ƒ Descrever as APIs Java distribuídas com o Java Web
Services Development Pack 1.0
ƒ Mostrar como criar um Web Service
ƒ Utilizar a API JAX-RPC para desenvolver e implantar um
Web Service simples baseado no protocolo SOAP
ƒ Gerar uma interface WSDL e utilizá-la para construir um
cliente para o serviço
ƒ Registrar uma organização e a localização do arquivo
WSDL em um servidor UDDI local
42. 42
O que são Web Services
ƒ Ambiente de computação distribuída (DCE) que
utiliza XML em todas as camadas
ƒ No formato de dados usado na comunicação
ƒ Na interface usada para descrever as operações
suportadas
ƒ Na aplicação usada para registrar e localizar serviços
ƒ Serviços são transportados principalmente via HTTP
ƒ Podem também utilizar outros protocolos populares
ƒ Web Services visam comunicação entre máquinas
ƒ Serviços podem ser implementados usando CGI (com C,
Perl, etc.), ASP, PHP, servlets, JSP, CFML, etc.
ƒ Acesso é feito via clientes HTTP (ou de outros protocolos)
ƒ Tudo isto já existia! Qual a novidade?
43. 43
A novidade é a padronização!
ƒ Todas as camadas em XML!
ƒ Fácil de ler, transformar, converter
ƒ Existe ainda um esforço para padronizar os esquemas que
definem a estrutura e vocabulário do XML usado
ƒ Web Services dá nova vida ao RPC
ƒ Agora com formato universal para os dados!
Marshalling: converter dados em XML
Unmarshalling: extrair dados de XML
ƒ Principais características do RPC com Web Services
ƒ Formato padrão de dados usados na comunicação é XML
ƒ Interoperabilidade em todos os níveis
ƒ Transporte é protocolo de larga aceitação: HTTP, SMTP,...
ƒ Transparência de localidade e neutralidade de linguagem
44. 44
Arquitetura de Web Services: papéis
ƒ Provedor de serviços
ƒ Oferece serviços, alguns dos quais podem ser Web Services
ƒ Registro de serviços
ƒ Catálogo de endereços: repositório central que contém informações
sobre web services
ƒ Cliente de serviços
ƒ Aplicação que descobre um web service, implementa sua interface
de comunicação e usa o serviço
Provedor de
serviços
Registro de
serviços
Cliente
1
2
3
4
5
publica procura
mapeia interface
usa
acha
45. 45
ƒ Camada de transporte
ƒ Principais: HTTP (POST), FTP, SMTP
ƒ Emergentes: JRMP (Java RMI), IIOP (CORBA, EJB), JMS,
IMAP, POP, BEEP, JXTA, ...
ƒ Camada de mensagens
ƒ SOAP
ƒ Camada dados ou serviços
ƒ XML (formato de mensagens)
ƒ XML-RPC
ƒ Camada de descrição de serviços
ƒ WSDL
ƒ Camada de descoberta (registro)
ƒ UDDI, ebXML
Transporte
Mensagens
Arquitetura de Web Services: camadas
Dados
Descrição
Descoberta
46. 46
Requisição e resposta HTTP POST
ƒ Clientes HTTP usam o método POST para enviar dados
ƒ Tipicamente usado por browsers para enviar dados de
formulários HTML e fazer upload de arquivos
ƒ Exemplo
ƒ Formulário HTML
ƒ Requisição POST gerada pelo browser para o servidor
POST /cgi-bin/catalogo.pl HTTP/1.0
Content-type: text/x-www-form-urlencoded
Content-length: 15
isbn=2877142566
<FORM ACTION="/cgi-bin/catalogo.pl"
METHOD="POST">
<H3>Consulta preço de livro</H3>
<P>ISBN: <INPUT TYPE="text" NAME="isbn">
<INPUT TYPE="Submit" VALUE="Enviar">
</FORM>
Cabeçalho HTTP
Mensagem (corpo
da requisição)
Linha em branco
47. 47
Enviando XML sobre POST
ƒ Você pode criar um servico RPC simples (um Web Service!)
trocando mensagens XML via HTTP POST!
ƒ Defina esquemas para as mensagens de chamada e resposta
ƒ Escreva cliente que envie requisições POST para servidor Web
ƒ Escreva uma aplicação Web (JSP, ASP, PHP, servlet, CGI)
POST /ISBNService.jsp HTTP/1.0
Content-type: text/xml
Content-length: 90
<chamada>
<funcao>
<nome>getPrice</nome>
<param>2877142566</param>
</funcao>
</chamada>
HTTP/1.1 200 OK
Content-type: text/xml
Content-length: 77
<resposta>
<funcao>
<param>19.50</param>
</funcao>
</resposta>
ISBNService.jsp
ISBNClient
ISBNQuery
getPrice()
2877142566
19.50
BD
1
2
3
4
gera
requisição
gera
resposta
48. 48
XML-RPC
ƒ Especificação para RPC em XML via HTTP POST
ƒ Projetada para ser a solução mais simples possível
ƒ Várias implementações: veja www.xml-rpc.com
ƒ Exemplo anterior implementado com XML-RPC
(cabeçalhos HTTP omitidos)
<methodCall>
<methodName>getPrice</methodName>
<params>
<param>
<value><string>2877142566</string></value>
</param>
</param>
</methodCall>
<methodResponse>
<params>
<param>
<value><double>19.5</double></value>
</param>
</param>
</methodResponse>
Resposta
Requisição
49. 49
SOAP
ƒ Simple Object Access Protocol
ƒ Protocolo padrão baseado em XML para trocar
mensagens entre aplicações
ƒ SOAP não é um protocolo RPC, mas um par de mensagens
SOAP pode ser usado para esse fim
ƒ Transporte pode ser HTTP, SMTP ou outro
ƒ Mensagens podem conter qualquer coisa (texto, bytes)
ƒ É extensível (mecanismo de RPC, por exemplo, é extensão)
Envelope
Attachment
Attachment
XML
XML
Mensagem SOAP
Header
Body
Envelope
Estrutura de
uma mensagem
SOAP
Conteúdo
baseado em
esquema do
usuário
...
50. 50
Simples requisição SOAP-RPC
ƒ Principal aplicação do SOAP, hoje, é RPC sobre HTTP
ƒ Esquema do corpo da mensagem lida com RPC
POST /xmlrpc-bookstore/bookpoint/BookstoreIF HTTP/1.0
Content-Type: text/xml; charset="utf-8"
Content-Length: 585
SOAPAction: ""
<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope
xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/"
env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<env:Body>
<ans1:getPrice xmlns:ans1="http://mybooks.org/wsdl">
<String_1 xsi:type="xsd:string">2877142566</String_1>
</ans1:getPrice>
</env:Body>
</env:Envelope>
Parâmetro (ISBN)
52. 52
Descrição de um serviço RPC: WSDL
ƒ Para saber usar um Web Service, é preciso
ƒ Saber o que um serviço faz (quais as operações?)
ƒ Como chamar suas operações (parâmetros? tipos?)
ƒ Como encontrar o serviço (onde ele está?)
ƒ Web Services Description Language
ƒ Documento XML de esquema padrão que contém todas
as informações necessárias para que um cliente possa
utilizar um Web Service
ƒ Define informações básicas (operações, mapeamentos,
tipos, mensagens, serviço) e suporta extensões
ƒ Tem basicamente mesmo papel que linguagens IDL
usadas em outros sistemas RPC
ƒ Pode ser usada na geração automática de código
53. 53
Interoperabilidade com WSDL
ƒ WSDL serve apenas para descrever interfaces
ƒ Não serve para ser executada
ƒ Nenhuma aplicação precisa da WSDL (não faz parte da
implementação - é só descrição de interface)
ƒ WSDL pode ser mapeada a linguagens (binding)
ƒ Mapeamento: tipos de dados, estruturas, etc.
ƒ Pode-se gerar código de cliente e servidor a partir de
WSDL (stubs & skeletons) em tempo de compilação ou
execução
ƒ WSDL facilita a interoperabilidade
ƒ Viabiliza RPC via SOAP
ƒ Pode-se gerar a parte do cliente em uma plataforma (ex:
.NET) e a parte do servidor em outra (ex: J2EE),
viabilizando a comunicação entre arquiteturas diferentes.
55. 55
Registro e localização do serviço: UDDI
ƒ Universal Discovery and Description Integration
ƒ Registro global para Web Services: nuvem UDDI
ƒ Esquema padrão (XML) para representar firmas, serviços,
pontos de acesso dos serviços, relacionamentos, etc.
ƒ Objetivo é permitir a maior automação no uso dos serviços
ƒ Registro UDDI acha e devolve URL do WSDL ou serviço
ƒ Registro centralizado permite
ƒ Independencia de localização
ƒ Facilidade para pesquisar e utilizar serviços existentes
ƒ Tipos de informações armazenadas em UDDI
ƒ White pages: busca um serviço pelo nome
ƒ Yellow pages: busca um serviço por assunto
ƒ Green pages: busca com base em características técnicas
56. 56
Web Services: Resumo
ƒ Arquitetura de serviços usando SOAP, WSDL e UDDI
ƒ Comparação com outras soluções de RPC
Provedor de
serviços
Registro
UDDI
Cliente
1
2
3
4
5
publica procura
mapeia interface
usa
acha
SOAP
WSDL
Registro
Descrição
de Serviços
Transporte
Java RMI CORBA RMI / IIOP Web Services
RMI Registry COS Naming JNDI UDDI
Java OMG IDL Java WSDL
Java RMI IIOP IIOP SOAP
57. 57
Tecnologias Java para Web Services
ƒ Java 2 Enterprise Edition (J2EE)
ƒ Versão 1.3 (atual): já possui todos os recursos necessários
para infraestrutura de Web Services (servlets, JSP)
ƒ Versão 1.4 (2003): integração nativa com Web Services -
será mais fácil transformar EJBs e componentes Web em
clientes e provedores de Web Services
ƒ Para criar Web Services em Java hoje
ƒ (1) Java Servlet API 2.3, JSP 1.2, JSTL 1.0
ƒ (2) Implementações Java de XML, SOAP, UDDI (há várias:
IBM WSDL4J, UDDI4J, Apache SOAP, AXIS, Xerces, Xalan)
ƒ (3) Java XML Pack ("série JAX")
Java Web Services Development Pack = (1) + (3)
58. 58
Java Web Services Development Pack 1.0
ƒ APIs
ƒ Processamento XML: JAXP 1.1
ƒ Web Services: JAX-RPC 1.0, JAXM 1.1, SAAJ 1.1, JAXR 1.0
ƒ Aplicações Web: Servlet API 2.3, JSP 1.2, JSTL 1.0
ƒ Implementação de referência
ƒ Ferramentas de desenvolvimento: Web Deploytool,
Compilador JAXRPC (xrpcc), Jakarta Ant, Jakarta Tomcat,
Registry Browser e Apache Xindice (banco de dados XML)
ƒ Serviços de registro UDDI, roteamento SOAP e JAXRPC
(implementados como servlets no Tomcat)
59. 59
Aplicações Web em Java
ƒ Web Services podem ser desenvolvidos em Java
usando os pacotes javax.servlet.* que permitem criar
ƒ Servlets: componentes capazes de processar requisições
HTTP e gerar respostas HTTP
ƒ Páginas JSP: documentos de texto (HTML, XML) que são
transformados em servlets na instalação ou execução
ƒ Bibliotecas de tags: implementações que permitem o uso
de XML no lugar do código Java em paginas JSP
ƒ Deployment é muito simples
ƒ Escreva os servlets / JSPs que implementam Web Services
ƒ Escreva ou gere um deployment descriptor
ƒ Coloque tudo em um arquivo WAR
ƒ Instale o WAR no servidor (ex: copiar p/ pasta webapps/)
60. 60
Estrutura de um arquivo WAR
ƒ Aplicações Web são empacotadas em arquivos WAR para
instalação automática em servidores J2EE
Arquivos acessíveis
ao cliente a partir
da raiz do contexto
/exemplo
Deployment
descriptor
Área inaccessível
ao cliente
Bibliotecas
Classpath
web.xml
Servlet.class
my.properties
struts.jar
exemplo.war
WEB-INF/
classes/
lib/
c.tld
x.tld
...
XML
Nome default
do contexto dir/
mypkg/
Bean.class
Applet.class
HTML
XML
XML
XML
HTML
JSP
JPG
GIF GIF
JSP
JSP JPG
XML
http://servidor.com.br/exemplo
61. 61
Aplicações XML em Java
ƒ APIs padrão no J2SDK e J2EE
ƒ JAXP: suporte a APIs para processamento XML: DOM , SAX e
XSLT
ƒ APIs padrão no Java Web Services Development Pack
ƒ JAXM, JAX-RPC e SAAJ: suporte a protocolos de comunicação
baseados em XML
ƒ JAXR: suporte a sistemas de registro baseados em XML
ƒ Padrões propostos (em desenvolvimento)
ƒ JAXB (JSR-31: XML data binding): suporte à serialização de
objetos em XML
ƒ JDOM (JSR-102): outro modelo para processamento XML (que
não usa a interface W3C DOM)
ƒ JSR-181: linguagem de metadados para Web Services
62. 62
ƒ Java API for XML Processing
ƒ Para leitura, criação, manipulação, transformação de XML
ƒ Parte integrante do J2SDK 1.4
ƒ Pacotes
ƒ javax.xml.parsers
ƒ javax.xml.transform.*
ƒ org.w3c.dom
ƒ org.w3c.sax.*
ƒ Componentes
ƒ Parsers para SAX e DOM
ƒ Implementações em Java
das APIs padrão SAX e DOM
ƒ Implementações Java de API de transformação XSLT
JAXP
JAXP
Documento
XML
Estilo
XSLT
Documento
XML / HTML
DOM
SAX
Texto
DOM
63. 63
JAXB
ƒ Java API for XML Binding (JSR-31)
ƒ Mapeia classes Java a documentos XML
ƒ Permite gerar JavaBeans a partir de esquema XML
ƒ Permite serializar objetos para XML e vice-versa
ƒ Pacotes (community review jul-2002)
ƒ javax.xml.bind
ƒ javax.xml.marshall
ƒ Em desenvolvimento há 3 anos (29/ago/1999).
XML
unmarshal()
marshal()
Objeto
Java
JAXB
Classe
Java
xjc
Esquema XML
(DTD)
Java Binding
Schema
Binding Marshalling
64. 64
JAXR
ƒ Java API for XML Registries
ƒ Oferece acesso uniforme a diferentes sistemas de
registro de serviços baseados em XML
ƒ Possui mapeamentos para UDDI e ebXML
ƒ Permite a inclusão e pesquisa de organizações, serviços
ƒ Pacotes
ƒ javax.xml.registry
ƒ javax.xml.registry.infomodel
ƒ Arquitetura
Browsers de registro
Componentes J2EE
Aplicações cliente
UDDI
ebXML
Outros
JAXR
Registros
Clientes
65. 65
JAXM (e SAAJ)
ƒ Java API for XML Messaging (e SOAP with
Attachments API for Java)
ƒ Conjunto de APIs para manipular envelopes SOAP e
transportá-los sobre HTTP, SMTP ou outros protocolos
ƒ Suporta comunicação baseada em eventos (mensagens) e
baseada em RPC (par de mensagens requisição/resposta)
ƒ Suporta especificações SOAP 1.1 e SOAP with
Attachments
ƒ Pacotes:
ƒ javax.xml.soap
ƒ javax.xml.messaging
ƒ javax.xml.rpc.*
HTTP
Provedor SOAP
Cliente
SOAP
Provedor JAXM
Serviço
JAXM
Fonte da ilustração:
JAXM 1.0 specification
Mensagem
SOAP
Mensagem
SOAP
Empresa A Empresa B
HTTP
SMTP
IMAP
POP
66. 66
JAX-RPC
ƒ Java API for XML-Based Remote Procedure Calls
ƒ Um tipo de Java RMI sobre SOAP/HTTP
ƒ Alto nível de abstração permite ignorar envelope SOAP
ƒ Utiliza WSDL para gerar classes de servidor e cliente
ƒ Pacotes
ƒ javax.xml.rpc.*
ƒ Desenvolvimento semelhante a RMI (simples e
baseado em geração de código e container)
ƒ Escreve-se RMI, obtém-se SOAP e WSDL
ƒ Cliente pode obter interface para comunicação com o
serviço dinamicamente, em tempo de execução
ƒ Stubs também podem ser gerados em tempo de compilação
para maior performance
67. 67
JAXM vs. JAX-RPC
ƒ Soluções diferentes para manipular mesmo envelope SOAP
ƒ JAX-RPC implementa WSDL. JAXM não usa WSDL.
ƒ JAXM manipula mensagens sem ligar para seu conteúdo
ƒ JAX-RPC usa WSDL para formato de requisições e respostas
ƒ JAXM expõe todos os detalhes do envelope; JAX-RPC oculta
ƒ Tudo o que se faz em JAX-RPC, pode-se fazer com JAXM
ƒ RPC é mais fácil com JAX-RPC; JAXM é API de baixo nível e
pode ser usada tanto para messaging ou RPC
ƒ Cliente e serviço JAX-RPC rodam em container
ƒ Conclusão
ƒ Use JAX-RPC para criar aplicações SOAP-RPC com WSDL
ƒ Use JAXM para messaging ou quando precisar manipular o
envelope SOAP diretamente
69. 69
Criação de um Web Service com JAX-RPC (1)
1. Escrever uma interface RMI para o serviço
2. Implementar a interface
package example.service;
public interface BookstoreIF extends java.rmi.Remote {
public BigDecimal getPrice(String isbn)
throws java.rmi.RemoteException;
}
package example.service;
public interface BookstoreIF extends java.rmi.Remote {
public BigDecimal getPrice(String isbn)
throws java.rmi.RemoteException;
}
package example.service;
public class BookstoreImpl implements BookstoreIF {
private BookstoreDB database = DB.getInstance();
public BigDecimal getPrice(String isbn) {
return database.selectPrice(isbn);
}
}
package example.service;
public class BookstoreImpl implements BookstoreIF {
private BookstoreDB database = DB.getInstance();
public BigDecimal getPrice(String isbn) {
return database.selectPrice(isbn);
}
}
70. 70
gendir/
Criação de um Web Service com JAX-RPC (2)
3. Escrever arquivo de configuração*
4. Compilar classes e interfaces RMI
> javac -d mydir BookstoreIF.java BookstoreImpl.java
5. Gerar código do servidor
> xrpcc -classpath mydir
-server -keep
-d gendir
config_rmi.xml
* Não faz parte da especificação - procedimento pode mudar no futuro
<configuration xmlns="http://java.sun.com/xml/ns/jax-rpc/ri/config">
<service name="BookstoreService" targetNamespace="http://mybooks.org/wsdl"
typeNamespace="http://mybooks.org/types"
packageName="example.service">
<interface name="example.service.BookstoreIF"
servantName="example.service.BookstoreImpl"/>
</service>
</configuration> config_rmi.xml
71. 71
Criação de um Web Service com JAX-RPC (3)
ƒ 6. Criar web deployment descriptor web.xml
<web-app>
<servlet>
<servlet-name>JAXRPCEndpoint</servlet-name>
<servlet-class>
com.sun.xml.rpc.server.http.JAXRPCServlet
</servlet-class>
<init-param>
<param-name>configuration.file</param-name>
<param-value>
/WEB-INF/BookstoreService_Config.properties
</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>JAXRPCEndpoint</servlet-name>
<url-pattern>/bookpoint/*</url-pattern>
</servlet-mapping>
</web-app>
Nome do arquivo
gerado pelo xrpcc
subcontexto que será
o endpoint do serviço
Nosso
"container"
72. 72
webapps/
Criação de um Web Service com JAX-RPC (4)
ƒ 7. Colocar tudo em um WAR
8. Deployment no
servidor
Copiar arquivo para
diretório webapps
do Tomcat
jaxrpc-bookstore.war
73. 73
Construção e instalação do serviço com o Ant
ƒ Script do Ant para compilar as classes RMI, compilá-
las com xrpcc, gerar o WSDL, empacotar no WAR e
copiar para o diretório webapps/ do Tomcat
> ant BUILD.ALL.and.DEPLOY
ƒ Teste para saber se o serviço está no ar
ƒ Inicie o Tomcat do JWSDP
ƒ Acesse: http://localhost:8080/jaxrpc-bookstore/bookpoint
74. 74
Execução
ƒ O endpoint do serviço na implementação de
referência JWSDP 1.0 é um servlet
com.sun.xml.rpc.server.http.JAXRPCServlet
ƒ Próximas versões (e J2EE 1.4) devem oferecer
implementação em stateless session bean
ƒ Servlet é ponto de entrada para todas as requisições
JAXRPCServlet
Aplicação Web implantada no servidor
Requisição
WSDL
Config.properties
Tie
BookstoreImpl
Classes geradas
lê
publica
carrega
usa
despacha
75. 75
Registro do serviço
ƒ Podemos registrar o nosso Web Service
ƒ Automaticamente executando um cliente (ant REGISTER)
ƒ Interativamente usando o Registry Browser
ƒ Para usar o servidor UDDI do JWSDP
ƒ 1. inicie o Xindice
ƒ 2. inicie o Tomcat
Registry Browser
1. Selecione a localização do
servidor (http://localhost/...)
2. Crie uma nova organização
3. Crie novo serviço
4. Em "edit bindings" coloque
URLs dos serviços
5. Aperte submit. Use
"testuser" como nome e senha
76. 76
Cliente
ƒ Há três tipos de cliente JAX-RPC:
ƒ 1. Cliente estático tipo-RMI: usa stubs gerados em tempo
de compilação para se comunicar com o servidor e chama
métodos do serviço remoto como se fossem locais
ƒ 2. Cliente WSDL de interface dinâmica (DII): descobre a
interface de comunicação em tempo de execução e
chama métodos via mecanismo similar a Java reflection
ƒ 3. Cliente WSDL de interface estática: usa interface Java
implementada por stubs gerados em tempo de execução e
chama métodos remotos como se fossem locais
ƒ Clientes precisam aderir ao contrato com o Web
Service (WSDL) mas podem ser implementados e
usados com ou sem WSDL
77. 77
Clientes JAX-RPC
WSDL
Service
endpoint
1. Obtém informações
sobre o serviço
2. Chama o serviço
Cliente de implementação estática
Clientes de implementação dinâmica
stub (1)
proxy (3)
dynamic (2)
+ performance, + acoplamento
- performance, - acoplamento
79. 79
Execução
ƒ Para gerar os clientes
ƒ Cliente (1): gere stubs com xrpcc -client e arquivo WSDL
(use config_wsdl.xml) e depois compile classe do cliente
ƒ Clientes (2) e (3): apenas compile a classe do cliente
ƒ Script do Ant para compilar os três clientes e colocar
as classes em um JAR
> ant client.BUILD
ƒ Para rodar o cliente e executar o Web Service
> ant dynamic-client.RUN
Buildfile: build.xml
dynamic-client.RUN:
[java] ISBN 2877142566. Price R$ 19.50
BUILD SUCCESSFUL
80. 80
Conclusões
ƒ Nesta palestra apresentamos a arquitetura de Web
Services, suas tecnologias fundamentais SOAP, WSDL
e UDDI e as APIs Java que as implementam.
ƒ Java oferece APIs que permitem desde a manipulação
direta de XML (DOM e SAX) até a criação de Web
Services sem contato com XML (JAX-RPC)
ƒ JAX-RPC é a forma mais fácil e rápida de criar Web
Services em Java
ƒ Serviços desenvolvidos em JAX-RPC poderão ser
acessados de aplicações .NET e vice-versa.
ƒ Web Services viabilizam a integração de serviços entre
plataformas diferentes: interoperabilidade!
81. 81
Fontes
[1] JSR-101 Expert Group. Java™ API for XML-based RPC: JAX-RPC 1.0 Specification. Java
Community Process: www.jcp.org.
[2] Sun Microsystems. Java™ Web Services Tutorial. java.sun.com/webservices/. Coleção de
tutoriais sobre XML, JSP, servlets, Tomcat, SOAP, JAX-RPC, JAXM, etc.
[3] JSR-109 Expert Group. Web Services for J2EE 1.0 (Public Draft 15/04/2002). Java
Community Process: www.jcp.org. Descreve o suporte a Web Services em J2EE 1.3
[4] Nicholas Kassem et al. (JSR-67). Java™ API for XML Messaging (JAXM) e Soap with
Attachments API for Java 1.1. java.sun.com. Modelo de programação de baixo nível (lida
diretamente com SOAP enquanto JAX-RPC esconde) e mais abrangente.
[5] Roberto Chinnici. Implementing Web Services with the Java™ Web Services
Development Pack. JavaONE Session 1777. java.sun.com/javaone. Apresentação que
oferece uma visão garal de JAX-RPC e o Web Services Development Pack da Sun.
[6] Brett McLaughlin. Java & XML 2nd. Edition. O'Reilly and Associates, 2001. Explora as
APIs Java para XML e oferece uma introdução à programação de WebServices em Java
[7] Ethan Cerami. Web Services Essentials. O'Reilly, Fev 2002. XML-RPC, SOAP, UDDI e
WSDL são explorados de forma didática e exemplos são implementados em Java usando
ferramentas open-source.
[8] W3C Web Services Activity. http://www.w3.org/2002/ws/. Página que dá acesso aos
grupos de trabalho que desenvolvem especificações de SOAP (XMLP), WSDL e Arquitetura
82. 82
Fontes
[9] Apache XML Project. xml.apache.org. Duas implementações de SOAP e uma
implementação de XML-RPC em Java.
[10] IBM Developerworks Open Source Projects. http://www-124.ibm.com/.
Implementações UDDI4J e WSDL4J.
[11] Al Saganich. Java and Web Services Primer. O'Reilly Network 2001.
http://www.onjava.com/pub/a/onjava/2001/08/07/webservices.html. Ótimo tutorial
sobre Web Services.
[12] Al Saganich. Hangin' with the JAX Pack. Part 1: JAXP and JAXB, Part 2: JAXM, Part
3: Registries (JAXR), Part 4: JAX-RPC. O'Reilly Network 2001-2002.
http://www.onjava.com/pub/a/onjava/2001/11/07/jax.html Esta série de quatro artigos
publicados entre nov/2001 e abr/2002 é talvez o melhor ponto de partida para quem desejar
aprender a usar as APIs Java para Web Services.
[13] David Chappell, Tyler Jewel. Java Web Services. O'Reilly and Associates, Mar 2002.
Explora implementações Java de Apache SOAP, WSDL e UDDI em Java. Tem um capítulo
dedicado às APIs do JWSDP.
[14] Al Saganich. JSR-109 Web Services inside of J2EE Apps. O'Reilly Network, Aug
2002. http://www.onjava.com/pub/a/onjava/2002/08/07/j2eewebsvs.html Mostra um
resumo da proposta do JSR-109, que prevê a integração J2EE-Web Services.