Instituto de Ciências Matemáticas e de Computação ISSN - 0103 ...
Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de...
Transcript of Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de...
Universidade de São PauloInstituto de Ciências Matemáticas e de ComputaçãoDepartamento de Computação e Estatística
Servidor de Documentos Servidor de Documentos XML Usando JavaXML Usando Java
Aluno: Werley Ribeiro MartinsAluno: Werley Ribeiro Martins
Orientador: Prof. Dr. Dilvan de Abreu MoreiraOrientador: Prof. Dr. Dilvan de Abreu Moreira
Setembro - 2001Setembro - 2001
2
Organização da Apresentação
IntroduçãoIntrodução
Tecnologias UtilizadasTecnologias Utilizadas
Arquitetura do Servidor XMLArquitetura do Servidor XML
Funcionamento dos MétodosFuncionamento dos Métodos
Aplicação GráficaAplicação Gráfica
Testes RealizadosTestes Realizados
ConclusõesConclusões
3
Introdução
Crescimento de aplicações no ambiente WWW (Crescimento de aplicações no ambiente WWW (World World
Wide WebWide Web))
Disponibilização de uma variedade de informaçõesDisponibilização de uma variedade de informações
Documentos eletrônicos estão cada vez mais complexosDocumentos eletrônicos estão cada vez mais complexos
Surgimento de novos e complexos tipos de dados Surgimento de novos e complexos tipos de dados
O padrão HTML (O padrão HTML (HyperText Markup LanguageHyperText Markup Language) não ) não
fornece recursos suficientes para formatar tais documentosfornece recursos suficientes para formatar tais documentos
4
Introdução
XML (XML (Extensible Markup LanguageExtensible Markup Language))
criada para resolver as limitações da linguagem HTMLcriada para resolver as limitações da linguagem HTML
separa o conteúdo de sua apresentaçãosepara o conteúdo de sua apresentação
permite criar seus próprios tipos de elementos (permite criar seus próprios tipos de elementos (tagstags))
XSL (XSL (Extensible Stylesheet LanguageExtensible Stylesheet Language))
expressa como o conteúdo dos documentos XML é apresentadoexpressa como o conteúdo dos documentos XML é apresentado
converte um documento XML em outras linguagensconverte um documento XML em outras linguagens
5
Introdução
MotivaçãoMotivação Como os dados XML podem ser extraídos de grandes documentos Como os dados XML podem ser extraídos de grandes documentos
XMLXML??
XQL (XML XQL (XML Query LanguageQuery Language)) é uma linguagem de consulta para é uma linguagem de consulta para
documentos XMLdocumentos XML
A partir daí, deseja-se realizar algum tipo de manipulação com os A partir daí, deseja-se realizar algum tipo de manipulação com os
dados de documentos XMLdados de documentos XML
Executar diversas operações sobre esses dados, que podem ser Executar diversas operações sobre esses dados, que podem ser
obtidos através da linguagem de consulta XQLobtidos através da linguagem de consulta XQL
6
Introdução
ObjetivoObjetivo Desenvolver um servidor capaz de realizar diversas operações Desenvolver um servidor capaz de realizar diversas operações
sobre documentos XML e XSL como:sobre documentos XML e XSL como:
incluir novos documentos no repositório ou dentro de um incluir novos documentos no repositório ou dentro de um
documento já existentedocumento já existente
apagar um documento por inteiro ou somente parte deleapagar um documento por inteiro ou somente parte dele
realizar consultas sobre esses documentos, retornando realizar consultas sobre esses documentos, retornando
conteúdos em diversos formatosconteúdos em diversos formatos
transformar um documento XML em outras linguagens, transformar um documento XML em outras linguagens,
através da linguagem XSLatravés da linguagem XSL
7
Tecnologias Utilizadas
DOM (DOM (Document Object ModelDocument Object Model)) Representa um documento XML bem formado na forma de uma Representa um documento XML bem formado na forma de uma
árvoreárvore
Cria um modelo de objeto na forma como estão organizados os Cria um modelo de objeto na forma como estão organizados os
dados do documentodados do documento
Fornece um conjunto de objetos e interfaces que representam o Fornece um conjunto de objetos e interfaces que representam o
conteúdo e a estrutura de documentos XML sem perda de conteúdo e a estrutura de documentos XML sem perda de
informações significativasinformações significativas
Permite acessar e manipular a informação contida em documentos Permite acessar e manipular a informação contida em documentos
XMLXML
8
Tecnologias Utilizadas
<?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE documento SYSTEM "Documento.dtd"><?xml-stylesheet type="text/xsl" href="Documento.xsl"?><documento>
<título>Servidor de Documentos XML Usando JAVA</título><capítulo>
<título>Capítulo 1 - Introdução</título><conteúdo>... </conteúdo>
</capítulo></documento>
documentodocumento
títulotítulo
títulotítulo conteúdoconteúdo
capítulocapítulo
Servidor de Documentos
XML Usando Java
Servidor de Documentos
XML Usando Java
Capítulo 1 - Introdução
Capítulo 1 - Introdução
......
DOM (Document Object Model)
Documento XML Representação DOM
9
Tecnologias Utilizadas
Interfaces DOMInterfaces DOM
NodeNode - qualquer objeto em uma árvore de nós - qualquer objeto em uma árvore de nós
DocumentDocument - documento XML como uma árvore de nós - documento XML como uma árvore de nós
ElementElement - um elemento em uma árvore de nós - um elemento em uma árvore de nós
AttrAttr - um atributo contido em um - um atributo contido em um ElementElement
TextText - texto contido em um - texto contido em um ElementElement ou ou AttrAttr
DocumentTypeDocumentType - DTD associado à árvore de nós - DTD associado à árvore de nós
10
Tecnologias Utilizadas
JavaSpacesJavaSpaces
Pode ser utilizado como um repositório para armazenamento de Pode ser utilizado como um repositório para armazenamento de
objetos JAVAobjetos JAVA
Documentos XML são armazenados na forma de objetos DOM, que Documentos XML são armazenados na forma de objetos DOM, que
são objetos JAVAsão objetos JAVA
Um espaço compartilhado onde objetos (entradas) são armazenadosUm espaço compartilhado onde objetos (entradas) são armazenados
Permite armazenamento de forma transiente ou persistentePermite armazenamento de forma transiente ou persistente
Possui um conjunto de operações reduzidoPossui um conjunto de operações reduzido
11
Tecnologias Utilizadas
JavaSpaces
12
Tecnologias Utilizadas
Utilização de bibliotecas para a realização das operações:Utilização de bibliotecas para a realização das operações:
Xerces – Xerces – parserparser XML para converter um documento XML em um XML para converter um documento XML em um
objeto DOM, além de verificar sua validade, caso tenha um DTDobjeto DOM, além de verificar sua validade, caso tenha um DTD
Xalan – processador XSL para transformar documentos XML em Xalan – processador XSL para transformar documentos XML em
documentos HTML, texto ou em outros documentos XMLdocumentos HTML, texto ou em outros documentos XML
GMD-IPSI XQL – ferramenta de consulta e armazenamento que GMD-IPSI XQL – ferramenta de consulta e armazenamento que
utiliza a linguagem XQL para consultar dados de documentos utiliza a linguagem XQL para consultar dados de documentos
XML, podendo ser aplicadas em qualquer nó de uma árvore DOMXML, podendo ser aplicadas em qualquer nó de uma árvore DOM
13
Arquitetura do Servidor XML
InterfaceInterface define quais os métodos que são executados pelo servidor sobre os define quais os métodos que são executados pelo servidor sobre os
documentos armazenadosdocumentos armazenados
ProxyProxy realiza a conexão entre as aplicações cliente e o servidorrealiza a conexão entre as aplicações cliente e o servidor implementa a interfaceimplementa a interface esconde do usuário o que é feito localmente do que é feito no esconde do usuário o que é feito localmente do que é feito no
servidorservidor permite a migração de funcionalidade entre os lados cliente e permite a migração de funcionalidade entre os lados cliente e
servidor, implementando a mesma interfaceservidor, implementando a mesma interface
14
Arquitetura do Servidor XML
Acesso aosDocumentosSolicitação
dos Serviços
Conexão
Manipulaçãodos Serviços
JavaSpacesJavaSpaces
ServidorXML
ServidorXML
ProxyProxy
InterfaceInterface
ClienteCliente
15
Arquitetura do Servidor XML
16
Funcionamento dos Métodos
Os objetos DOM são armazenados dentro de uma classe, Os objetos DOM são armazenados dentro de uma classe, chamada chamada NameName, que são as entradas do espaço , que são as entradas do espaço JavaSpacesJavaSpaces
Name Name possui 3 campos:possui 3 campos: documentdocument - representação DOM do documento a ser armazenado - representação DOM do documento a ser armazenado namename - - namename único para identificar um DOM único para identificar um DOM dtddtd - conteúdo do arquivo DTD, caso exista, ou - conteúdo do arquivo DTD, caso exista, ou nullnull, caso contrário, caso contrário
Uma estrutura Uma estrutura VectorVector contém os campos contém os campos namename para para identificar quais identificar quais namesnames estão armazenados no espaço estão armazenados no espaço
JavaSpacesJavaSpaces possui vários possui vários NamesNames e um e um VectorVector em seu espaço em seu espaço
17
Funcionamento dos Métodos
Manipulações com Manipulações com NamesNames
isName(doc)isName(doc)
createName(Java_course)createName(Java_course)
getNames(//título)getNames(//título)
destroyName(course)destroyName(course)
truetrue
OKOK
[[docdoc]]
getNames(null)getNames(null)
[[doc, course, server, Java_coursedoc, course, server, Java_course]]
doc
course
Java_course
server
18
Funcionamento dos Métodos
Manipulações com Manipulações com NamesNames
isName(doc)isName(doc)
createName(Java_course)createName(Java_course)
getNames(//título)getNames(//título)
changeName(server, XMLServer)changeName(server, XMLServer)
destroyName(course)destroyName(course)
truetrue
OKOK
[[docdoc]]
coursecourse
getNames(null)getNames(null)
[[doc, course, server, Java_coursedoc, course, server, Java_course]]
XMLServerXMLServer
doc
Java_course
serverXMLServer
19
Funcionamento dos Métodos
Adicionando um novo documento no repositórioAdicionando um novo documento no repositórioString add(String name, Document XML, boolean DTD)String add(String name, Document XML, boolean DTD)
String add(String name, Reader XML, boolean DTD)String add(String name, Reader XML, boolean DTD)
VerificarValidade
VerificarValidade
XERCESXERCESDocumento
XML
DocumentoXML
Tem DTD
Não tem DTD
name = name
document = Document(XML)
dtd = null
name = name
document = Document(XML)
dtd = null
Name
20
O Servidor XML
VerificarValidade
VerificarValidade
Documentonão é
adicionado norepositório
Documentonão é
adicionado norepositório
name = name
document = Document(XML)
dtd = null
name = name
document = Document(XML)
dtd = null
Inválido
Válido
DTD não está embutidono documento XML
DTD está embutidono documento XML
name = name
document = Document(XML)
dtd = String(DTD(XML))
name = name
document = Document(XML)
dtd = String(DTD(XML))
Name
Name
- Pode ser adicionado no- Pode ser adicionado no
repositório se DTD = repositório se DTD = falsefalse
21
Funcionamento dos Métodos
Adicionando um novo documento em um já existenteAdicionando um novo documento em um já existenteString addIn(String name, String XQLquery, Document xml) String addIn(String name, String XQLquery, Document xml) String addIn(String name, String XQLquery, Reader xml) String addIn(String name, String XQLquery, Reader xml) String addIn(String name, Reader XQLquery, Document xml) String addIn(String name, Reader XQLquery, Document xml) String addIn(String name, Reader XQLquery, Reader xml)String addIn(String name, Reader XQLquery, Reader xml)
DocumentoXML já
existente norepositório
DocumentoXML já
existente norepositório
DocumentoXML jáexistente
com o novodocumento
DocumentoXML jáexistente
com o novodocumento
GMD-IPSIXQL
GMD-IPSIXQL
Novodocumento
XML
Novodocumento
XML
22
Funcionamento dos Métodos
títulotítulo conteúdoconteúdo
capítulocapítulo
Capítulo 2 - Linguagens de Programação
Capítulo 2 - Linguagens de Programação
......
Adicionando um novo documento em um já existenteAdicionando um novo documento em um já existenteEx: addIn(doc, /documento, capitulo2.xml)Ex: addIn(doc, /documento, capitulo2.xml)
documentodocumento
títulotítulo
títulotítulo conteúdoconteúdo
capítulocapítulo
Servidor de Documentos
XML Usando Java
Servidor de Documentos
XML Usando Java
Capítulo 1 - Introdução
Capítulo 1 - Introdução
......
Documento XML já existente no repositório
Novo documento XML
23
Funcionamento dos Métodos
títulotítulo conteúdoconteúdo
capítulocapítulo
Capítulo 2 - Linguagens de Programação
Capítulo 2 - Linguagens de Programação
......
Adicionando um novo documento em um já existenteAdicionando um novo documento em um já existenteEx: addIn(doc, /documento, capitulo2.xml)Ex: addIn(doc, /documento, capitulo2.xml)
documentodocumento
títulotítulo
títulotítulo conteúdoconteúdo
capítulocapítulo
Servidor de Documentos
XML Usando Java
Servidor de Documentos
XML Usando Java
Capítulo 1 - Introdução
Capítulo 1 - Introdução
......
Documento após a operação
24
Funcionamento dos Métodos
Adicionando um novo documento em um já existenteAdicionando um novo documento em um já existente
QueryQuery indica onde o novo documento será adicionado no indica onde o novo documento será adicionado no
documento existente no repositóriodocumento existente no repositório
QueryQuery deve retornar um único elemento deve retornar um único elemento
Documento é adicionado sem verificar sua validadeDocumento é adicionado sem verificar sua validade
A validade pode ser verificada através do método A validade pode ser verificada através do método validateDOMvalidateDOM
25
Funcionamento dos Métodos
Validar um objeto DOMValidar um objeto DOMString validateDOM(String name)String validateDOM(String name)
DocumentoVálido
DocumentoVálido
DocumentoInválido
DocumentoInválido
XERCESXERCESXML
RepresentaçãoXML do
objeto DOM
XMLRepresentação
XML doobjeto DOM
DTDValor contidono campo dtd
da classe Name
DTDValor contidono campo dtd
da classe Name
Cria dois arquivos temporários:Cria dois arquivos temporários:
26
Funcionamento dos Métodos
Apagando dados XMLApagando dados XMLvoid delete(String name[], String XQLquery)void delete(String name[], String XQLquery)
void delete(String name[], Reader XQLquery)void delete(String name[], Reader XQLquery)
QueryQuery deve retornar um ou mais elementos deve retornar um ou mais elementos
GMD-IPSIXQL
GMD-IPSIXQL
DocumentoXML
DocumentoXML
DocumentoXML sem os dados
consultados
DocumentoXML sem os dados
consultados
27
Funcionamento dos Métodos
Apagando dados XMLApagando dados XMLEx:Ex: delete(doc, //capítulo/título) delete(doc, //capítulo/título)
documentodocumento
títulotítulo
conteúdoconteúdo
capítulocapítulo
Servidor de Documentos
XML Usando Java
Servidor de Documentos
XML Usando Java
......
Documento antes da operação
títulotítulo
Capítulo 1 - Introdução
Capítulo 1 - Introdução
28
Funcionamento dos Métodos
Apagando dados XMLApagando dados XMLEx:Ex: delete(doc, //capítulo/título) delete(doc, //capítulo/título)
documentodocumento
títulotítulo
conteúdoconteúdo
capítulocapítulo
Servidor de Documentos
XML Usando Java
Servidor de Documentos
XML Usando Java
......
Documento após a operação
29
Funcionamento dos Métodos
Operações de ConsultaOperações de Consultaboolean isQuery(String name[], String XQLquery) boolean isQuery(String name[], String XQLquery)
boolean isQuery(String name[], Reader XQLquery)boolean isQuery(String name[], Reader XQLquery)
Document[] getDoc(String name[], String XQLquery)Document[] getDoc(String name[], String XQLquery)
Document[] getDoc(String name[], Reader XQLquery) Document[] getDoc(String name[], Reader XQLquery)
Reader[] getText(String name[], String XQLquery) Reader[] getText(String name[], String XQLquery)
Reader[] getText(String name[], Reader XQLquery)Reader[] getText(String name[], Reader XQLquery)
GMD-IPSIXQL
GMD-IPSIXQL
DocumentoXML
DocumentoXML
Um novodocumento
com os dadosconsultados
Um novodocumento
com os dadosconsultados
30
Funcionamento dos Métodos
documentodocumento
títulotítulo
títulotítulo conteúdoconteúdo
capítulocapítulo
Servidor de Documentos XML
Usando Java
Servidor de Documentos XML
Usando Java
Capítulo 1 - Introdução
Capítulo 1 - Introdução
......
Operações de ConsultaOperações de ConsultaEx: getDoc(doc, //título)Ex: getDoc(doc, //título)
títulotítulo
Servidor de Documentos XML
Usando Java
Servidor de Documentos XML
Usando Java
títulotítulo
Capítulo 1 - Introdução
Capítulo 1 - Introdução
xql:resultxql:result
Documento após a operaçãoDocumento antes da operação
31
Funcionamento dos Métodos
Operações de TransformaçãoOperações de TransformaçãoDocument[] transformDoc(String name[], String XSLname)Document[] transformDoc(String name[], String XSLname)
Document[] transformDoc(String name[], Document XSL)Document[] transformDoc(String name[], Document XSL)
Document[] transformDoc(String name[], Reader XSL)Document[] transformDoc(String name[], Reader XSL)
Reader[] transformText(String name[], String XSLname)Reader[] transformText(String name[], String XSLname)
Reader[] transformText(String name[], Document XSL)Reader[] transformText(String name[], Document XSL)
Reader[] transformText(String name[], Reader XSL)Reader[] transformText(String name[], Reader XSL)
XSLname é um campo XSLname é um campo namename que identifica um documento que identifica um documento
XSL armazenado no repositórioXSL armazenado no repositório
32
Funcionamento dos Métodos
DocumentoXML
DocumentoXML
DocumentoHTML
DocumentoHTML
XALANXALANDocumento
XSL
DocumentoXSL
Operações de TransformaçãoOperações de Transformação
Xalan possui recursos suficientes para converter um Xalan possui recursos suficientes para converter um documento XML em outras linguagensdocumento XML em outras linguagens
33
Aplicação Gráfica
Ilustra como podem ser Ilustra como podem ser
realizadas algumas das realizadas algumas das
manipulações permitidasmanipulações permitidas
Realiza a conexão com o Realiza a conexão com o
servidorservidor
Demonstra a funcionalidade Demonstra a funcionalidade
de alguns métodos definidos de alguns métodos definidos
na interfacena interface
34
Aplicação Gráfica
35
Aplicação Gráfica
36
Aplicação Gráfica
37
Testes Realizados
Testes básicos realizados:Testes básicos realizados: cada método da interface foi testado ao menos uma vezcada método da interface foi testado ao menos uma vez
foram conectados 3 clientes ao servidor, solicitando as mesmas foram conectados 3 clientes ao servidor, solicitando as mesmas
manipulações e ao mesmo tempomanipulações e ao mesmo tempo
em métodos como em métodos como deletedelete, , getDocgetDoc e e transformDoctransformDoc, foram , foram
realizados testes sobre 3 documentos do repositório, de modo que realizados testes sobre 3 documentos do repositório, de modo que
foram retornados 3 objetos de acordo com o resultado desejadoforam retornados 3 objetos de acordo com o resultado desejado
foram criadas situações em que a operação solicitada não foram criadas situações em que a operação solicitada não
retornava resultados válidosretornava resultados válidos
38
Testes Realizados
Resultados obtidos:Resultados obtidos:
O servidor atendeu a todas as solicitações que lhe foram feitasO servidor atendeu a todas as solicitações que lhe foram feitas
O servidor não parou de funcionar em nenhum dos testes O servidor não parou de funcionar em nenhum dos testes
efetuadosefetuados
O resultado foi obtido conforme o esperado ou foi retornada uma O resultado foi obtido conforme o esperado ou foi retornada uma
mensagem de erro adequadamensagem de erro adequada
O servidor possui uma funcionalidade mínimaO servidor possui uma funcionalidade mínima
39
Conclusões
Resultados e contribuiçõesResultados e contribuições
Construção de um servidor capaz de realizar operações, sobre um Construção de um servidor capaz de realizar operações, sobre um
repositório de documentos XML e XSL, como adicionar, repositório de documentos XML e XSL, como adicionar,
consultar, apagar e transformarconsultar, apagar e transformar
Facilita diversos tipos de manipulações que podem ser aplicadas Facilita diversos tipos de manipulações que podem ser aplicadas
aos documentosaos documentos
Utilização e integração de diversas tecnologiasUtilização e integração de diversas tecnologias
40
Conclusões
Sugestões para trabalhos futurosSugestões para trabalhos futuros
Desenvolvimento de uma interface gráfica mais amigávelDesenvolvimento de uma interface gráfica mais amigável
Implementação do método Implementação do método validateDOMvalidateDOM de uma outra maneira de uma outra maneira
que não necessite criar os arquivos temporáriosque não necessite criar os arquivos temporários
Inclusão do serviço de transaçõesInclusão do serviço de transações
Estudo de novos métodos de armazenamento e manipulação de Estudo de novos métodos de armazenamento e manipulação de
documentos XML que dispensem o uso de documentos XML que dispensem o uso de JavaSpacesJavaSpaces