SERVIÇO DE DISTRIBUIÇÃO DE CONTEÚDOS RSS PARA DISPOSITIVOS MÓVEIS ATRAVÉS DE WEB SERVICES - PDF
SERVIÇO DE DISTRIBUIÇÃO DE CONTEÚDOS RSS PARA DISPOSITIVOS MÓVEIS ATRAVÉS DE WEB SERVICES
Download "SERVIÇO DE DISTRIBUIÇÃO DE CONTEÚDOS RSS PARA DISPOSITIVOS MÓVEIS ATRAVÉS DE WEB SERVICES"
Neuza Belo Balsemão
1 SERVIÇO DE DISTRIBUIÇÃO DE CONTEÚDOS RSS PARA DISPOSITIVOS MÓVEIS ATRAVÉS DE WEB SERVICES Trabalho de Conclusão de Curso Engenharia da Computação Rafael Bandeira de Oliveira Orientador: Prof. Dr. Sérgio Castelo Branco Soares Recife, dezembro de 2005
2 SERVIÇO DE DISTRIBUIÇÃO DE CONTEÚDOS RSS PARA DISPOSITIVOS MÓVEIS ATRAVÉS DE WEB SERVICES Trabalho de Conclusão de Curso Engenharia da Computação Este Projeto é apresentado como requisito parcial para obtenção do diploma de Bacharel em Engenharia da Computação pela Escola Politécnica de Pernambuco Universidade de Pernambuco. Rafael Bandeira de Oliveira Orientador: Prof. Dr. Sérgio Castelo Branco Soares Recife, dezembro de 2005
3 Rafael Bandeira de Oliveira SERVIÇO DE DISTRIBUIÇÃO DE CONTEÚDOS RSS PARA DISPOSITIVOS MÓVEIS ATRAVÉS DE WEB SERVICES
4 i Resumo Este trabalho apresenta um estudo sobre dispositivos móveis e a tecnologia Java, especificamente na plataforma J2ME, interagindo com um servidor web através de um Web Service. O principal objetivo deste estudo é especificar e implementar um serviço de busca, para posterior leitura, de informações contidas em documentos RSS disponíveis publicamente na Internet. Um segundo objetivo é permitir o envio de informações para um arquivo RSS, realizada pelo usuário do aplicativo a partir de um arquivo de propriedade dele. Esse serviço foi dividido em dois sistemas, um cliente e um servidor, caracterizando uma arquitetura cliente-servidor. O software cliente foi desenvolvido em J2ME e é responsável por fazer requisições ao Web Service disponível no servidor e exibir os dados recebidos na tela do dispositivo. O servidor de aplicação disponibiliza o serviço, o qual coleta as informações contidas nos arquivos RSS solicitados, processa as informações encontradas, e as retorna ao cliente. A transmissão dessas informações é realizada através de trocas de mensagens entre o cliente e o servidor, utilizando protolocos pré-definidos quando tratamos de Web Services. O estudo demonstra uma inovação na maneira de integração entre dispositivos móveis e servidores de aplicações, explicando como as tecnologias encontradas em cada sistema são interligadas, demonstrando ser uma solução viável. Palavras chave: Dispositivos Móveis; Web Services; RSS
5 ii Abstract This work presents a study on mobile devices and the Java technology, specifically in the J2ME platform, interacting with a server web through a Web Service. The objective of this study is to specify and to implement a search service for reading information contained in available documents RSS public in the internet. A second function is to allow sending information into an RSS file, which is made by the application user using an archive of his property. This service was splited into two systems: one as a client and the other as a server, complying with a clientserver architecture. The client software was developed in J2ME and is responsible for making requests to the Web Service available in the server and for presenting the data received in the device screen. The server application makes available the service to collect the information in requested RSS files, it processes the information returning them to the customer. The transmission of this information is carried through messages exchanges between the client and the server using specific protocols to deal with Web Services. The study demonstrates an innovation in the way mobile and applications servers integrate also explaining how such technologies are linked, also demonstrating to be a viable solution. Keywords: Mobile devices; Web Services; RSS
6 iii Sumário Índice de Figuras Índice de Tabelas Tabela de Símbolos e Siglas 1 Introdução 11 2 Conceitos Fundamentais XML História Exemplo Namespaces RSS O que são documentos RSS? História e Versões Abordagem RSS no Projeto Web Services O que são Web Services? Funcionamento Tecnologias Tecnologias no Projeto Plataforma J2ME Configurações Perfis KVM Ofuscador Arquitetura J2ME Ferramentas utilizadas Servidor Apache Tomcat TCP Monitor Java Wireless Toolkit 36 3 Integração J2ME e Web Services Pacote Apache Axis Arquitetura Pacote ksoap Parser Mapeamento de Tipos 43 4 Estudo de Caso Arquitetura Metodologia Requisitos Funcionais Importar Lista do Servidor Buscar Informações 49 v viii ix
7 iv Escrever Notícia Outros Implementação RSSAnywhereService Registrando o Serviço Web RSSAnywhere Interface Gráfica RSSAnywhere importwslist searchnews writenews 72 5 Conclusões Trabalhos Relacionados Contribuições Trabalhos Futuros 78
8 v Índice de Figuras Figura 1. Visão geral do software JPlucker e Hands 13 Figura 2. Visão geral do software proposto 14 Figura 3. Exemplo de formato XML 17 Figura 4. Exemplos de arquivos XML 18 Figura 5. Exemplo de arquivo XML usando namespaces 18 Figura 6. Trecho de código de um arquivo RSS 20 Figura 7. Estrutura hierárquica básica de um documento RSS 22 Figura 8. Esquema de funcionamento de um Web Service 23 Figura 9. Diagrama de modelo conceitual de Web Services 24 Figura 10. Pilha básica de Web Services 25 Figura 11. Diagrama de encapsulamento de objetos 26 Figura 12. Representação conceitual de mensagem SOAP 27 Figura 13. Trecho de código de mensagem SOAP 27 Figura 14. Diagrama dos principais componentes WSDL 28 Figura 15. Pilha básica das tecnologias de Web Services 30 Figura 16. Janela Inicial do TCPMonitor 35 Figura 17. TCPMonitor monitorando as mensagens SOAP enviadas 36 Figura 18. Esquema de mapeamentos entre tipos Java e SOAP 38 Figura 19. Fluxo de comunicação entre componentes do Axis 40 Figura 20. Representação hierárquica usando SoapObject 42 Figura 21. Arquitetura do Projeto 45 Figura 22. Esquema de camadas do aplicativo cliente 46 Figura 23 Principais requisitos funcionais do aplicativo RSSAnywhere 48 Figura 24. Diagrama de seqüência do método importwslist 49 Figura 25. Diagrama de seqüência do método searchnews 50 Figura 26. Diagrama de seqüência do método writenews 51
9 Figura 27. Outros requisitos funcionais do aplicativo RSSAnywhere 51 Figura 28. Diagrama de classe RSSAnywhereService 52 Figura 29. Código da classe RSSAnywhereService 52 Figura 30. Classe servidora FeedRSS 53 Figura 31. Classe servidora FeedRSS com a interface Serializable 53 Figura 32. Trecho do código da classe FeedRSS implementado a interface 54 Serializable Figura 33. Código Java da classe ImportWSList 55 Figura 34. Trecho do código da classe RSSNews 56 Figura 35. Trecho de código da classe XMLHandler 57 Figura 36. Trecho de código da classe writenews (parsexmlfile) 58 Figura 37. Trecho de código da classe writenews (writexmlfile) 59 Figura 38. Código do método updatenews da classe writenews 59 Figura 39. Descritor de organização do Web Service RSSAnywhereService 60 Figura 40. Processo de deploy do Web Service no Axis 61 Figura 41. Diagrama de classe RSSAnywhere 61 Figura 42. Classe cliente FeedRSS com a interface kvmserializable 62 Figura 43. Objetos PropertyInfo na classe FeedRSS 63 Figura 44. Implementação dos métodos da interface kvmserializable 64 Figura 45. Mapeamento entre tipo SOAP e tipo Java no ksoap 64 Figura 46. Trecho de código da classe ConnectWS do método importwslist 66 Figura 47. Trecho de código da classe ConnectWS do método searchnews 67 Figura 48. Trecho de código da classe ConnectWS do método writenews 68 Figura 49. a) tela inicial da aplicação, com detalhamento b) opções do menu 69 principal Figura 50. Seqüência do processo do método importwslist 70 Figura 51. Telas da aplicação a) descrição do fornecedor b) salvar fornecedor 71 Figura 52. Tela MyFeeds a) lista gravada do usuário b) opções de gerenciamento 71 Figura 53. Seqüência do processo do método searchnews 72 Figura 54. Seqüência do processo do método writenews 73 Figura 55. MobileRSS - Tela de visualização de notícias num celular 76 Figura 56. Representação em árvore do formato RSS Figura 57. Representação em árvore do formato RSS vi
10 Figura 58. Representação em árvore do formato RSS Figura 59. Trecho de código do formato RSS vii
11 viii Índice de Tabelas Tabela 1. Camadas do J2ME 34 Tabela 2. Mapeamento de Tipos Padrão do ksoap 41 Tabela 3. Sumário dos métodos da interface kvmserializable 43
12 ix Tabela de Símbolos e Siglas API CDC CLDC DOM GPL HTML HTTP JAR JVM J2EE J2ME J2SE KVM MIDP MVC PC PDA RPC RSS SAX SMS SGML SOAP UDDI URL WAP WML WSDL XML W3C Application Programming Interface Connected Device Configuration Connected Limited Device Configuration Document Object Model General Public License Hyper Text Markup Language Hyper Text Transport Protocol Java Arquive Java Virtual Machine Java 2 EnterpriseEdition Java 2 Micro Edition Java 2 Standard Edition Kilo Virtual Machine Mobile Information Device Profile Model-View-Controller Personal Computer Personal Digital Assistants Remote Procedure Call Rich Site Summary Simple API for XML Short message service Standard Generalized Markup Language Simple Object Access Protocol Universal Discovery, Description, and Integration Uniform Resource Locator Wireless Application Protocol Wireless Markup Language Web Service Description Language Extensible Markup Language World Wide Web Consortium
13 x Agradecimentos Gostaria de agradecer a Deus por tudo que tem me proporcionado; a fé persistente, a saúde forte, os desejos alcançados e o sonho ainda melhor do futuro. Agradeço ao meu pai Luiz Alberto e a minha mãe Teresinha Bandeira, cuja educação e caráter me ensinam até hoje. Aos meus irmãos, Isabella e Rodrigo Bandeira, pelas experiências do dia-a-dia. E a todos os meus familiares pelas ausências que tive que fazer. Aos professores da Escola Politécnica de Pernambuco que se esforçam o melhor de si para manter e melhorar este curso, em especial Ricardo Massa e Carlos Alexandre pelos ensinamentos aprendidos. Ao meu professor orientador Sergio Soares pelo tempo e correções necessários. Ao professor Emanuel Leite pelo apoio e crença dados na iniciativa de seguir com minha empresa. Aos meus amigos da Poli, em particular, os amigos e engenheiros da 1ª Turma de Engenharia da Computação formada, Os cobaias da Poli. Aos amigos que seguiram outros caminhos, mas que são ainda presentes nas nossas lembranças, aos que, simplesmente, foram especiais e aos que darão vida a novas esperanças no mundo, aqui representados por Kíssia Cavalcanti, Aretha Maria, Aline Senna, Lívia Brito, Reinaldo Melo e Rodrigo Brayner. Ao amigo e sócio Rodrigo Cursino por todos os obstáculos enfrentados e recompensas alcançadas. Aos demais amigos, que mesmo longe da faculdade se fazem presentes na minha vida. E agradeço especialmente a minha namorada Greice Paola, por tudo.
14 11 Capítulo 1 Introdução Através das tecnologias sem fio, qualquer pessoa tem hoje a possibilidade de acessar informações importantes para o seu dia-a-dia, de qualquer lugar que disponha de um serviço de comunicação - como um shopping center, aeroporto, loja de conveniência, ou mesmo da rua; e a qualquer momento que se queira obter tais informações. Para isso utilizam-se aparelhos capazes de se comunicar com tais tecnologias, seja um notebook, PDA, ou celular; como menciona Genilson César [11] em seu artigo. Tais informações estão accessíveis na rede mundial de computadores, a Internet, nos mais diferentes formatos, como texto, imagens, áudio ou vídeo. Essas podem ser encontradas desde em sites pessoais, como diários virtuais (conhecidos por blogs), álbuns virtuais (conhecidos por fotoblogs), sites institucionais, sejam privados ou públicos, sites jornalísticos especializados em dispor os mais novos fatos (notícias) do Brasil ou do mundo, praticamente no momento em que eles acontecem. Em particular, os sites jornalísticos diferenciam-se dos demais web sites por terem no seu dinamismo o fator decisivo para o interesse dos usuários. Esse dinamismo é caracterizado pela rápida atualização das informações contidas na página web e pelas informações ditas em primeira mão, as quais, até aquele determinado momento, não haviam sido publicadas em qualquer outro site. Logo, para os usuários que buscam por informações novas, de fácil acesso e precisas, esse dinamismo e a correta publicação dessas, tornam-se características importantes na escolha de qual web site acessar em busca das notícias que possam interessá-los. De fato, o que acontece no dia-a-dia é um internauta ter não apenas um site de notícias preferido, mas sim, vários; além de ter também alguns blogs prediletos. Desta forma, para saber se existe ou não novas informações de seu interesse, o usuário acessa todos os seus sites/blogs prediletos em busca de alguma atualização pertinente, o que demanda um tempo razoavelmente grande para essa tarefa. Percebendo essa dificuldade e pensando no gasto de tempo de busca e visualização dessas notícias, em meados do ano de 1999, foi criado um arquivo de texto padronizado, no qual estaria um resumo das últimas notícias inseridas no web site/blog. Nesse arquivo, encontram-se informações sobre o web site, como seu nome, uma descrição de seus serviços e link para o mesmo, assim como, uma listagem contento o título, uma pequena descrição e um link, das últimas notícias/matérias/informações inseridas na respectiva página web. O link, nesse caso, dá acesso ao conteúdo completo da notícia desejada. Dessa forma, os usuários podem acessar esse resumo disponibilizado por alguns web sites, para saber quais são, se existirem, as informações mais atuais desde sua última visita. Assim, o usuário não perde mais tempo à procura por informações em seus sites preferidos; basta agora, acessar esse resumo
15 12 e ter de forma clara, simples e objetiva uma listagem das últimas notícias cadastradas nos mesmos. Esse resumo encontrado nos web sites é um arquivo de texto conhecido pela sigla RSS (Rich Site Summary) [3] disponível abertamente por eles. Entraremos em mais detalhes nesse arquivo posteriormente. O arquivo RSS tem sua estrutura padronizada, ou seja, tem sempre a mesma estrutura independente das informações contidas nele, o que o torna uma referência para a criação de sumários de informações em páginas web de forma segura, rápida e simples. Essa estrutura padrão é baseada na tecnologia XML (Extensible Markup Language) [47]. Dessa forma, através desse arquivo, o usuário tem como permanecer atualizado com as principais notícias de seu interesse, não mais acessando diretamente o site e seus canais favoritos, mas agora, simplesmente acessando esse arquivo disponibilizado pela página web e verificando se foi inserida alguma nova notícia ou não. Esse trabalho de verificação pode ser feito através de softwares específicos chamados de Agregadores, capazes de verificar centenas desses arquivos em poucos segundos e informar na tela do programa, quais notícias e de quais sites são os mais recentes. Para saber mais sobre os Agregadores, veja [18]. Toda essa facilidade é encontrada para usuários de computadores pessoais, os chamados PCs, que possuem alta capacidade de processamento da máquina, ampla tela de visualização das informações colhidas, e que, por muitas vezes, estão conectados 24 horas por dia na Internet. Por outro lado, para os usuários de aparelhos móveis, como celulares ou PDAs, terem acesso a essas mesmas informações, os celulares, por exemplo, têm que contar com o serviço que sua operadora oferece, normalmente através de trocas de mensagens SMS (Short Message Service), o qual (serviço) normalmente não é muito agradável e tem seu conteúdo muito restrito e curto. Outra opção seria buscar as notícias acessando a Internet diretamente pelo celular, onde a navegabilidade e usabilidade não são as ideais devido a restrições de hardware do celular como display pequeno e pela pouca aceitação da tecnologia WAP (Wireless Application Protocol) [10] pelos web sites de notícias. Pois ainda hoje o padrão HTML (Hyper Text Markup Language) [28] da Internet tem que ser adaptado ao padrão requerido pelo WAP (WML - Website META Language [10]), o que torna o acesso a web sites pelo dispositivo, restrito e pouco usual. Já os aparelhos Personal Digital Assistant, conhecidos por PDAs, tem uma facilidade maior de buscar informações devido ao fato de poderem se conectar ao computador e baixar as notícias dos sites da Internet por programas específicos como o Hands [27], tornando mais ágil, rápido e em maior quantidade as informações procuradas. Contudo, nem sempre se tem em mãos um computador ligado à internet ou a interface requerida para conexão entre o PC e o aparelho, ou mesmo o software adequado instalado na máquina para fazer tal integração. Portanto, para se ter acesso as notícias de web sites na Internet por um dispositivo móvel, o dispositivo tem que acessar o serviço que a operadora de telefonia celular lhe dispõe, que é restrito e com poucas informações, ou, conectar o dispositivo a um computador e, a partir desse, busca pelas informações desejadas, o que é um processo demorado e que nem sempre se tem disponibilidade de fazê-lo. Tendo essas características em mente, surgiram no mercado vários softwares e serviços direcionados para tais dispositivos, capazes de buscar pelos arquivos de resumo (RSS) dos web sites desejados de forma peculiar para cada programa, funcionando de forma semelhante aos já existentes Agregadores para PCs. Um deles, já mencionado, é o Hands, que se assemelha a um outro software chamado, JPluck [29]. Para se ter acesso às informações contidas nos arquivos RSS, precisa-se, em ambos os casos, conectar o PDA ao computador, e com uma conexão à Internet disponível, o software realiza uma busca pelas informações, o qual converte e comprime as informações encontradas e, uma vez o processo realizado, as informações são transferidas para o dispositivo através do HotSync (sincronismo) de forma que se possa ter as informações para leitura posterior. Uma visão dessa solução é apresentada na Figura 1.
16 13 Figura 1. Visão geral do software JPlucker e Hands A principal diferença entre os softwares é que o Hands além de se conectar com o PC para colher as informações desejadas, pode também baixar as informações diretamente por uma conexão Internet do próprio PDA. Isso facilita o acesso aos arquivos RSS e aumenta a facilidade de aprendizado pelo usuário. Contudo, uma desvantagem de ambos é o fato de ter o processamento das informações colhidas da Internet a cargo do próprio dispositivo, acarretando um trabalho de processamento maior por parte desse e estar disponível apenas para PDAs. Com o mesmo objetivo, existem também serviços na Internet que se dispõem em realizar tal tarefa. Podemos destacar o MobileRSS [33] por estar disponível há mais tempo. Criado em meados de julho de 2003, esse serviço traz uma maneira diferente de buscar as informações nos arquivos RSS: ao invés de instalar um programa no PDA, o serviço MobileRSS disponibiliza as informações colhidas diretamente numa página web dentro do seu próprio web site. Essa página web atualiza a lista de RSS que o usuário cadastrou previamente e, quando acessada, busca as informações mais atuais naquele momento; esse acesso é feito diretamente pelo browser do dispositivo, incluindo aqui, aparelhos celulares. Esse serviço é gratuito, porém é necessário um registro prévio no site do mesmo, para definir ou editar quais documentos RSS são de interesse do usuário. Também é necessário ter instalado no dispositivo móvel um browser para visualizar páginas na Internet, uma vez que a visualização de seus arquivos prediletos é feita on-line diretamente no site do serviço. Por esse motivo, torna-se uma desvantagem, pois é necessário estar conectado à Internet tempo suficiente para ler todas as informações desejadas; também encontramos dificuldades em não poder definir quais sites RSS escolher para fazer uma busca mais especifica e restrita (todos os sites cadastrados na área restrita do usuário são usados na busca). Apesar de um funcionamento simples, encontramos dificuldades em simular um acesso através de um aparelho celular, mesmo seguindo todos os passos indicados no site do serviço, fato que impossibilitou uma abordagem mais detalhada. Vislumbrando os cenários supracitados, este trabalho tem como objetivo disponibilizar um Web Services que busque informações em documentos RSS para dispositivos móveis, em especial, celulares. Para isso, será apresentado um estudo sobre dispositivos móveis e a tecnologia Java, especificamente na plataforma J2ME, interagindo com a tecnologia de Web Services com o fim de especificar e implementar um software cliente-servidor. A arquitetura do projeto proposto tem a visão geral mostrada na Figura 2.
17 14 Figura 2. Visão geral da arquitetura proposta A parte de transmissão das informações pela operadora de telefonia móvel, não será tratada no projeto, uma vez que há muitos detalhes da forma e das tecnologias envolvidas nesse processo. O aplicativo cliente foi desenvolvido na plataforma J2ME [6][9] voltado em especial para aparelhos celulares que faz requisições e recebe respostas de um Web Service. O aplicativo servidor será um Web Service [2][7] disponível num servidor web. Esse serviço tem como finalidade buscar, processar e retornar as informações contidas nos documentos RSS publicamente disponíveis na Internet. Para tanto, um estudo detalhado nessa tecnologia também é abordada neste trabalho. O software sugerido dá ao usuário duas formas de obter acesso às informações desejadas, contidas em arquivos RSS: Na primeira delas, o cliente faz uma requisição ao servidor por uma listagem que contém os últimos web sites que dispõem suas informações no formato RSS, conhecidos por fornecedores. O servidor tem uma listagem de fornecedores que podem ser atualizados, até então, de forma manual. Ao retornar essa listagem ao dispositivo móvel, o usuário pode escolher dentre os fornecedores existentes, de quais deseja receber informações. Uma vez feita a seleção, uma nova requisição será feita ao servidor, e esse, através da preferência escolhida pelo usuário, fará uma busca pelas informações desejadas - arquivos RSS dos fornecedores escolhidos. Uma vez terminada a busca, o servidor pré-processa os dados colhidos e envia as informações pertinentes ao dispositivo móvel para visualização pelo usuário. Na segunda forma, o próprio usuário do software, cadastra quais fornecedores RSS específicos tem interesse em obter informações, dando ao usuário flexibilidade de obter informações que são de seu interesse e não estão contidas na listagem do servidor. O único detalhe nessa forma, é que o endereço completo do arquivo RSS deve ser conhecido pelo usuário, algo como, exigindo um pouco mais de conhecimento por parte do usuário do aplicativo. Resumindo, o que este trabalho propõe é fazer um estudo na tecnologia RSS utilizado como fonte de informações de um Web Service, que se comunica com um aplicativo num dispositivo móvel, mostrando as tecnologias envolvidas nesse processo e como é possível tal integração. A razão de escolher como cliente um dispositivo móvel deve-se ao fato de termos poucos softwares específicos para buscar informações nos aparelhos celulares e para permanecer proporcionando mobilidade ao usuário do mesmo. Já a escolha de um Web Service como
18 15 aplicativo servidor para dispor tais buscas e processamentos, deve-se à questão de torná-lo um serviço accessível publicamente para que outros sistemas também possam acessá-lo. Já a tecnologia RSS foi utilizada por se tratar de um padrão já aceito e usado mundialmente para trocas de resumos de informações. Esta monografia está organizada da seguinte forma. No Capítulo 2 são apresentados alguns conceitos sobre as tecnologias abordadas no trabalho, incluindo os softwares do cliente e do servidor utilizados no desenvolvimento da aplicação. A integração da plataforma J2ME com o servidor Web Services é apresentada no Capítulo 3. O Capítulo 4 aborda a arquitetura do sistema, a metodologia adotada, diagramas de classes e de casos de uso, assim como a interface gráfica gerada pelo sistema. E Capítulo 5, serão expostas as conclusões finais sobre este trabalho e os trabalhos que podem ser realizados a partir desta monografia.
19 16 Capítulo 2 Conceitos Fundamentais Para um melhor aproveitamento deste trabalho, este capítulo aborda conceitos sobre as tecnologias utilizadas ao longo do desenvolvimento da aplicação. 2.1 XML Extensible Markup Language, que em português corresponde a "Linguagem de Marcação Expansível", ou simplesmente XML [47], é um formato de texto simples, muito flexível, que provê uma representação estruturada dos dados. O contexto de XML no projeto é compreendido nas próximas Seções, quando falarmos das demais tecnologias utilizadas tendo como base o formato XML, por isso a necessidade de conhecer e detalhar essa tecnologia nesse momento História O XML é derivado da linguagem SGML - Standard Generalized Markup Language - ISO 8879 [34] e da linguagem HTML [28]. Essa última ganhou popularidade e força com o advento e avanço da Internet. Já o SGML mostrou qualidade e força industrial inerente ao formato estruturado em árvore dessa linguagem, em aplicações industriais. A principal diferença do SGML para o XML é que esse último foi elaborado para distribuição através da web A diferença para o HTML é que o XML é extensível, formalmente estruturado e possui poucos elementos pré-definidos. A especificação do formato XML foi definida pelo consórcio W3C - Word Wide Web Consortium, a qual assegura que os dados estruturados serão uniformes e independentes de sistemas tanto em hardware quanto em software. O XML é um formato padrão que pode exemplificar o conteúdo, as semânticas e os esquemas de uma enorme variação de sistemas desde os mais simples até os mais complexos. Uma característica importante é que uma vez que o dado seja recebido pelo cliente, o mesmo pode ser manipulado, alterado e visualizado sem a necessidade de acionar novamente o servidor que o enviou. Dessa forma, os servidores têm menor sobrecarga de requisições, o que
20 17 reduz o processamento da máquina, reduzindo também o tráfego de dados pela rede para as comunicações entre cliente e servidor Exemplo De forma a esclarecer quaisquer dúvidas quanto ao formato e estrutura, vamos, através de um exemplo, mostrar detalhadamente as características de um documento XML. A Figura 3 mostra um exemplo de seu formato. 1 <?xml version= xmlns:xsd= 3?> 4 <book> 5 <title>learning XML</title> 6 <authors> 7 <author city= Cidade1 type= xsd:string > 8 Nome do 1 autor </author> 9 <author city= Cidade2 type= xsd:string > 10 Nome do 2 autor </author> 11 </authors> 12 </book> Figura 3. Exemplo de formato XML Como se pode ver, um arquivo XML é muito semelhante a um arquivo HTML. Assim como no HTML, o XML também possui elementos marcadores (tags). Na quarta linha, por exemplo, temos o início de um novo elemento (tag) <book> e a linha doze indica o fim desse elemento, indicado pela inserção do símbolo da barra (/), </book>. De forma geral, os elementos que dão início a uma tag e o seu fechamento, são chamados de start tag e end tag, respectivamente. Entretanto, o XML possui algumas diferenças básicas como, por exemplo: XML não possui um conjunto de tags definidas pela sua especificação. As tags são criadas e definidas de acordo com a aplicação desejada; Todo documento XML possui uma tag raiz. No caso da Figura 3, a raiz é a tag <book>; Além disso, não são permitidas tags mal formadas, isto é, todas as tags devem estar presentes no documento aos pares - um indicando seu inicio e outra tag indicando seu fim; também não deve haver violações na hierarquia das tags. A primeira linha do documento é a definição do documento XML. Nela, definimos a versão do XML que estamos usando. A segunda linha mostra a referência para um namespace que está definido fora do documento. A implicação disso no documento é explicada mais claramente na próxima Seção. Dentro da tag <book>, encontramos mais dois elementos, ou filhos, <title> e <authors>, linhas 5 a 11; e para cada autor, temos um atributo city. Claramente podemos perceber que se trata de um arquivo XML que define um determinado livro, contendo seu título, seus autores, e a cidade dos autores. Nos documentos XML, os atributos são freqüentemente usados para metadados (i.e. informações sobre os dados), descrevendo propriedades para seus índices. No nosso exemplo, a propriedade city, na tag <author>, contém a cidade de cada autor referenciado. O usuário da linguagem XML pode construir suas próprias representações, criando nomes
21 18 de elementos (tags) e atributos específicos a sua necessidade. E como seu principal objetivo é a estruturação de dados, o usuário pode criar múltiplas formas de visualização desses dados estruturados Namespaces Na segunda linha da Figura 3, vimos que existe uma definição de um namespace no arquivo XML exemplificado, e uma referência a ele visto nos tipos dos elementos <author>. Namespaces [48] provê um método para evitar conflito de nomes (elementos, atributos e tipos) dentro de um documento XML. Como as representações de nomes não são fixados neste tipo de documento, frequentemente, há um conflito de nomes quando dois diferentes documentos usam os mesmos nomes descrevendo dois diferentes tipos de elementos. Vejamos a Figura 4 para entender melhor essa situação. <book> <title>about XML</title> <authors> <author city= Cidade1 > Nome do 1 autor </author> <author city= Cidade2 > Nome do 2 autor </author> </authors> </book> (a) <book title= About XML > <author city= Cidade1 > Nome do 1 autor </author> <author city= Cidade2 > Nome do 2 autor </author> </book> Figura 4. Exemplos de arquivos XML Pela Figura 4, vemos que ambos os documentos são similares, contendo inclusive vários elementos definidos com o mesmo nome, mas definem uma estrutura totalmente diferente entre si. No caso de juntarmos esses arquivos em um único documento, como poderíamos distinguir os elementos que estão definidos com o mesmo nome (o que nos exemplifica um conflito)? A resposta para essa questão está nos namespaces. Com o uso de namespace, podemos definir, ou reutilizar, uma referência única e distinta para ambos os documentos um prefixo de forma a serem identificados sem conflito. A inserção de namespace num documento XML é feita através do atributo padrão xmlns dentro do elemento desejado. Essa situação pode ser vislumbrada na Figura 5. <x:book xmlns:x=" <x:title>about XML</x:title> <x:authors> <x:author city= Cidade1 > Nome do 1 autor </x:author> <x:author city= Cidade2 > Nome do 2 autor </x:author> </x:authors> </x:book> <y:book title= About XML xmlns:y=" <y:author city= Cidade1 > Nome do 1 autor </y:author> <y:author city= Cidade2 > Nome do 2 autor </y:author> </y:book> Figura 5. Exemplo de arquivo XML usando namespaces (b)