XDCL: uma proposta para controle
de restrições de integridade de
domínio em documentos XML
Universidade Federal de Santa Catarina
Programa de Pós-Graduação em Ciência da Computação
Alexandre Tagliari Lazzaretti
Prof. Dr. Ronaldo Santos Mello
Orientador
Trabalho Individual – PPGCC/UFSC – 2004
1/46
Roteiro
•
•
•
•
•
•
•
•
Objetivos
Restrições de Integridade e SQL (Structured
Query Language)
XML (eXtensible Markup Language)
Restrições de Integridade vs. XML
Motivação
Proposta
Dificuldades
Cronograma
Trabalho Individual – PPGCC/UFSC – 2004
2/46
Objetivo geral
•
Propor um controle de restrições de
integridade de domínio em documentos
XML, inexistente na especificação de
esquemas XML (DTD – Document Type
Definition e XSD – XML Schema
Definition), através de recursos
semelhantes aos existentes na linguagem
SQL.
Trabalho Individual – PPGCC/UFSC – 2004
3/46
Objetivos específicos
•
•
•
•
•
•
Classificar as restrições de integridade do modelo
relacional e comparar com os recursos existentes na
linguagem SQL para seu tratamento;
Analisar as especificações de esquemas XML com
relação à imposição de restrições de integridade;
Concentrar as necessidades levantadas no item
anterior, na categoria de restrições de integridade de
domínio;
Analisar trabalhos relacionados;
Propor um controle de restrições de integridade de
domínio, com base nos recursos da linguagem SQL;
Aplicar o controle num estudo de caso.
Trabalho Individual – PPGCC/UFSC – 2004
4/46
Restrições de Integridade (conceitos)
•
•
•
•
“O termo integridade refere-se a precisão ou correção
dos dados em um banco de dados.” (Date,2000)
Para garantir a integridade de um banco de dados são
necessárias regras que estabelecem a consistência dos
dados, essas regras são chamadas “restrições de
integridade”;
Os autores estudados, Date, Silberchatz, Elmasri &
Navathe e Heuser, classificam as restrições de
integridade de várias formas;
Foi estabelecida uma classificação única, com base nos
autores, para restrições de integridade.
Trabalho Individual – PPGCC/UFSC – 2004
5/46
Restrições de Integridade (classificação)
•
Classificação:
•
Domínio
•
Chaves
•
Integridade Referencial
•
Momento de Verificação
•
Baseada em eventos
Trabalho Individual – PPGCC/UFSC – 2004
6/46
Restrições de Integridade (classificação)
•
Classificação:
•
Domínio
•
Chaves
•
•
•
• Especificam quais os valores válidos
cada atributo deve ter;
• Subdivide-se em:
• Restrições de atributo
Integridade Referencial
• Restrições de tipo
• Restrições de tuplas
• Restrições de banco de dados
Momento de Verificação
• Restrições de transição de estado
Baseada em eventos
Trabalho Individual – PPGCC/UFSC – 2004
7/46
Restrições de Integridade (classificação)

Classificação:
•
Domínio
•
Chaves
• Identificam as tuplas e estabelecem
relações entre tuplas de tabelas;
•
• Classifica-se em:
• candidatas
Integridade Referencial
• primárias ou alternativas
• estrangeiras
Momento de Verificação
•
Baseada em eventos
•
Trabalho Individual – PPGCC/UFSC – 2004
8/46
Restrições de Integridade (classificação)
• Classificação:
• Domínio
• Chaves
• Integridade Referencial
• Momento de Verificação
• Baseada em eventos
• Visam garantir que o
banco de dados não
inclua valores inválidos
para chaves estrangeiras;
• Se B faz relação a A
então A tem que existir.
Trabalho Individual – PPGCC/UFSC – 2004
9/46
Restrições de Integridade (classificação)
• Classificação:
• Domínio
• Chaves
• Integridade Referencial
• Momento de Verificação
• Indica a questão de
quando a verificação é
feita;
• Pode ser de dois tipos:
imediata e postergada.
• Baseada em eventos
Trabalho Individual – PPGCC/UFSC – 2004
10/46
Restrições de Integridade (classificação)
• Classificação:
• Domínio
• Chaves
• Integridade Referencial
• Momento de Verificação
• Baseada em eventos
• São restrições
programadas pelos
usuários;
• Sua verificação é
independente das
operações de
atualização.
Trabalho Individual – PPGCC/UFSC – 2004
11/46
SQL (conceitos)
•
SQL é a linguagem padrão para bancos
de dados relacionais;
•
Objetivo: verificar como SQL trata as
restrições de integridade do modelo
relacional.
Trabalho Individual – PPGCC/UFSC – 2004
12/46
Relacional vs. SQL
SQL
Domínio
Básicas de
Tabelas
Gerais
Gatilhos
Procedimentos
Transaçoes
Momento de
verificação
DOMAIN,
CHECK
CHECK
_


_
NOT DEFERRABLE
Tipo
_
TIPOS DE
DADOS
_
_
_
_
NOT DEFERRABLE
Tuplas
_
_
ASSERTION,
CHECK


_
NOT DEFERRABLE
Banco de dados
_
_
ASSERTION,
CHECK



NOT DEFERRABLE ou
DEFERRABLE
DOMAIN,
CHECK
_
_


_
NOT DEFERRABLE
candidatas
_
UNIQUE,
_
_
_
_
NOT DEFERRABLE
primárias
_
PRIMARY KEY
_
_
_
_
NOT DEFERRABLE
estrangeiras
_
FOREIGN KEY
_
_
_
_
NOT DEFERRABLE
_
PRIMARY E
FOREIGN KEY
_


_
NOT DEFERRABLE
d) Momento de
Verificação
IMEDIATO
IMEDIATO
IMEDIATO
IMEDIATO
IMEDIATO
POSTERGADO
NOT DEFERRABLE ou
DEFERRABLE
e) Baseada em
eventos
_
_
_


_
NOT DEFERRABLE ou
DEFERRABLE
Relacional
a) Domínio
Atributos
*
Transição de estado
b) Chaves
c) Integridade
referencial
Trabalho Individual – PPGCC/UFSC – 2004
13/46
SQL (recursos)
•
Assertions: predicados que expressam uma condição
que deve ser sempre verdadeira no banco de dados;
•
Checks: asseguram que os valores dos atributos
possam satisfazer determinadas condições;
•
Gatilhos: é um conjunto de instruções executadas
automaticamente em decorrência de algum evento
(ação);
•
Procedimentos: são programas escritos que são
executados através de uma chamada de aplicação.
Trabalho Individual – PPGCC/UFSC – 2004
14/46
XML (conceitos)
•
XML vem se consolidando um padrão para intercâmbio
de dados na Web;
•
Um conjunto de dados XML é descrito num documento
XML;
•
Características de um documento XML
•
•
•
•
•
•
estrutura hierárquica;
composto por texto e marcação;
um dado XML é chamado elemento;
tags (inicial e final) delimitam o conteúdo de um elemento;
possui um elemento raiz;
atributos são informações adicionais sobre um elemento.
Trabalho Individual – PPGCC/UFSC – 2004
15/46
XML
(documento)
Elemento raiz
<? xml version = ”1.0” encoding = ”UTF-8” standalone = “yes” >
<pessoas>
<codigo cpf=”68458371049”>
Atributo de um elemento
<nome>
<primeiro> Maria </primeiro>
<meio> Aparecida </meio>
<sobrenome> Tavares </sobrenome>
</nome>
<endereco>
Elemento
<rua> Rua das Flores </rua>
<numero> 1789 </numero>
<bairro> Centro </bairro>
</endereco>
<cidade> Rio de Janeiro </cidade>
</codigo>
</pessoas>
Trabalho Individual – PPGCC/UFSC – 2004
16/46
XML (restrições)
•
•
•
•
Um documento XML, no que se refere a restrições,
classifica-se em: bem formado e válido;
Documento XML bem formado deve estar de acordo
com a sintaxe XML, ou seja, deve conter:
• elementos com tag inicial e tag final;
• elementos conter um único pai, com exceção do
elemento raiz;
• valor dos atributos estar entre aspas.
Um documento XML é dito válido se possui um esquema
hierárquico definido e se a sua estrutura está de acordo
com esse esquema;
Existem 2 tipos de esquemas: DTD e XSD.
Trabalho Individual – PPGCC/UFSC – 2004
17/46
XML (esquemas)
“esquemas XML expressam vocabulários compartilhados,
e fornecem uma maneira de definição de estrutura,
conteúdo e semântica de documentos XML.” (W3C)
•
DTD
• descreve o que cada elemento e atributo faz;
• os elementos podem ser simples ou complexos;
• ao declarar elementos, podem-se definir controles de
conteúdo, seqüência e cardinalidade;
• ao declarar atributos, podem-se definir controles de
tipo do atributo e de ocorrência.
Trabalho Individual – PPGCC/UFSC – 2004
18/46
XML (DTD)
Exemplo DTD
•
<?xml version =“1.0” encoding =“UTF-8” standalone =”yes”>
<!DOCTYPE pessoas [
<! ELEMENT pessoa (codigo+)>
<! ELEMENT codigo (nome, endereco, cidade)*>
<! ATTLIST codigo cpf CDATA #REQUIRED>
<! ELEMENT nome (primeiro, meio?, sobrenome)>
<!ELEMENT primeiro (#PCDATA)>
<!ELEMENT meio (#PCDATA)>
<!ELEMENT sobrenome (#PCDATA)>
<!ELEMENT endereco (rua, numero, bairro)>
<!ELEMENT tipopessoa (cgc | rg)>
<!ELEMENT rua (#PCDATA)>
<!ELEMENT numero (#PCDATA)>
<!ELEMENT bairro (#PCDATA)>
<!ELEMENT cidade (#PCDATA)>
<!ELEMENT cgc EMPTY>
<!ELEMENT rg EMPTY>
]>
•
Cardinalidade
Declaração de atributo
Seqüência de sub-elementos
Declaração de elemento
Conteúdo de um elemento
Controles de integridade da DTD
Conteúdos de
elementos
Seqüência de
sub-elementos
ANY, EMPTY, MIXED,
PCDATA
VÍRGULA, BARRA
VERTICAL
Cardinalidade de
elementos
Tipos de
atributos
Ocorrência de
atributos
+, *. ?
CDATA, ENTITY,
ENTITIES, NMTOKEN,
NMTOKENS,NOTATION,
ID, IDREF
REQUIRED, IMPLIED,
FIXED
Trabalho Individual – PPGCC/UFSC – 2004
19/46
XML (XSD)
•
•
•
Também é utilizado para definir elementos e
atributos, semelhante a DTD, porém, com mais
recursos;
Principais vantagens do XSD com relação a
DTD:
• tipos de dados (tanto para elementos quanto
para atributos);
• permite herança;
• sintaxe XML;
• oferece mais controles.
Permite definir elementos simples e complexos;
Trabalho Individual – PPGCC/UFSC – 2004
20/46
XML (XSD)
Conteúdo de elementos
Qualquer conteúdo, Elementos vazios,
Conteúdo simples, Conteúdo misto, Elementos
referencia, Elementos complexos, Elementos
ANY, Elementos GROUP
Conteúdo de
atributos
Em elementos vazios, Em
elementos com conteúdo,
Pertencentes a namespaces
Seqüência e escolha
de elementos
Elemento SEQUENCE,
Elemento CHOICE, Modelo complexo
(SEQUENCE e CHOICE)
Padrões de
atributos
Padrões de
elementos
Valores padrão (DEFAULT), Valores
fixos (FIXED), Valores Enumerados
(ENUMERATION)
Ocorrência de
atributos
Com valores padrão (DEFAULT),
Com valores fixos (FIXED), Valores
enumerados (ENUMERATION)
Requeridos e opcionais
(USE)
Tipos de dados
Tipos simples (SIMPLETYPE,
FACETS), Tipos complexos
(Devivações por extensão e
restrição)
Trabalho Individual – PPGCC/UFSC – 2004
Ocorrência de
elementos
Elementos opcionais repetitivos
(maxOccurs e minOccurs),
Elemento ALL
Chaves e
referências
UNIQUE, KEY, KEYREF
21/46
XML (exemplo XSD)
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="nome">
<xs:complexType>
<xs:attribute name="primeiro" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element name="endereco">
<xs:complexType mixed="true">
<xs:attribute name="complemento" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element name="cidade">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="uf" type="estados" default=”SC”/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:simpleType name="estados">
<xs:restriction base="xs:string">
<xs:enumeration value="RS"/>
<xs:enumeration value="SC"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="pessoas">
<xs:complexType>
<xs:sequence>
<xs:element ref="nome"/>
<xs:element ref="endereco"/>
<xs:element ref="cidade"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
tipos de dados
Controle de conteúdo
herança
Controle de seqüência
Trabalho Individual – PPGCC/UFSC – 2004
22/46
Restrições de integridade vs. DTD
DTD
Conteúdos de
elementos
Seqüência de subelementos
Cardinalidade de
elementos
Tipos de atributos
Ocorrência de
atributos
ANY, EMPTY, MIXED,
PCDATA
VÍRGULA, BARRA
VERTICAL
+, *. ?
CDATA, ENTITY,
ENTITIES, NMTOKEN,
NMTOKENS,NOTATION
_
Atributos
_
_
_
_
REQUIRED,
IMPLIED, FIXED
Tuplas
_
_
_
_
_
Banco de dados
_
_
_
_
_
Candidatas
_
_
_
ID
_
Primárias
_
_
_
ID
_
Estrangeiras
_
_
_
IDREF
_
_
_
_
ID, IDREF
_
d) Momento de
Verificação
IMEDIATO
IMEDIATO
IMEDIATO
IMEDIATO
IMEDIATO
e) Baseada em eventos
SAX/ DOM
SAX/ DOM
SAX/ DOM
SAX/DOM
SAX/ DOM
Relacional
a) Domínio
Tipo
b) Chaves
c) Integridade
referencial
Trabalho Individual – PPGCC/UFSC – 2004
23/46
Restrições de integridade vs. XSD
XSD
Conteúdo de elementos
Padrões de
elementos
Ocorrência de
elementos
Tipo
Qualquer conteúdo, Elementos vazios,
Conteúdo simples, Conteúdo misto,
Elementos referencia, Elementos
complexos, Elementos ANY, Elementos
GROUP
Elemento SEQUENCE,
Elemento CHOICE, Modelo
complexo (SEQUENCE e
CHOICE)
_
Elementos opcionais
repetitivos (maxOccurs
e minOccurs),
Elemento ALL
Atributos
_
_
Valores padrão (DEFAULT),
Valores fixos (FIXED),
Valores Enumerados
(ENUMERATION)
_
Tuplas
_
_
_
_
banco de dados
_
_
_
_
Candidatas
_
_
_
_
Primárias
_
_
_
_
Estrangeiras
_
_
_
_
c) Integridade referencial
_
_
_
_
d) Momento de
Verificação
IMEDIATO
IMEDIATO
IMEDIATO
IMEDIATO
e) Baseada em eventos
SAX/ DOM
SAX/ DOM
SAX/ DOM
SAX/ DOM
Relacional
Seqüência e escolha de
elementos
a) Domínio
b) Chaves
Trabalho Individual – PPGCC/UFSC – 2004
24/46
Restrições de integridade vs. XSD
XSD
Relacional
Conteúdo de
atributos
Padrões de atributos
Ocorrência de
atributos
Tipos de dados
Chaves e
referências
a) Domínio
Em elementos vazios,
Em elementos com
conteúdo,
Pertencentes a
namespaces
_
Requeridos e opcionais
(USE)
Tipos simples
(SIMPLETYPE,
FACETS), Tipos
complexos (Devivações
por extensão e restrição)
_
_
Com valores padrão
(DEFAULT), Com valores
fixos (FIXED), Valores
enumerados
(ENUMERATION)
Atributos
_
FACETS
_
Tuplas
_
_
_
_
_
Banco de dados
_
_
_
_
_
Candidatas
_
_
_
_
UNIQUE, KEY
Primárias
_
_
_
_
KEY
Estrangeiras
_
_
_
_
KEYREF
_
_
_
_
UNIQUE, KEY,
KEYREF
d) Momento de
Verificação
IMEDIATO
IMEDIATO
IMEDIATO
IMEDIATO
IMEDIATO
e) Baseada em
eventos
SAX/ DOM
SAX/ DOM
SAX/ DOM
SAX/ DOM
SAX/ DOM
Tipo
b) Chaves
c) Integridade
referencial
Trabalho Individual – PPGCC/UFSC – 2004
25/46
Trabalhos Relacionados
•
•
•
Alguns trabalhos buscam adicionar restrições de
integridade de domínio em documentos XML;
“para incorporar restrições de integridade são
necessários, uma linguagem para definí-las, e um
mecanismo para controlá-las”; (Provost, 2002)
Tabela – trabalhos vs relacional
Trabalhos
OGBUJI (2001)
PROVOST
(2002)
BENEDIKT et al.
(2002)
BAYLEY et al.
(2002)
Tipo
√
√
√
-
Atributos
-
-
-
-
Tuplas
√
√
√
√
Banco de dados
√
√
√
√
-
-
-
√
Relacional
Domínio
Baseada em eventos
Trabalho Individual – PPGCC/UFSC – 2004
26/46
Trabalhos Relacionados
•
Tabela – trabalhos vs SQL
OGBUJI (2001)
PROVOST (2002)
BENEDIKT et al. (2002)
BAYLEY et al. (2002)
Domain
-
-
-
-
Check
-
-
-
-
Assertion
-
-
-
-
Gatilhos
-
-
-
√
Procedimentos
√
√
√
-
Transações
-
-
-
-
Trabalhos
SQL
Trabalho Individual – PPGCC/UFSC – 2004
27/46
Conclusões
MOTIVAÇÕES
•
Apenas um trabalho possui enfoque semelhante a
maneira que SQL trata restrições de integridade de
domínio, porém serve apenas para inserir e apagar
elementos (Bayley et al., 2002);
•
Necessidade de incorporar elementos predefinidos
para controle de restrições de integridade nos
esquemas XML (Ogbuji, 2001 e Benedikt et al., 2002);
•
Geração de códigos extensos para a validação de
documentos XML (Provost, 2002);
Trabalho Individual – PPGCC/UFSC – 2004
28/46
Proposta
•
•
•
•
Um mecanismo de controle de restrições de integridade
de domínio para documentos
XML,
em específico,
Como
?
restrições de integridade de tuplas e de banco de dados;
Para isso, usar como referência mecanismos existentes
na linguagem SQL como: gatilhos, asserções e a
cláusula check;
Através de uma linguagem para especificação de
restrições de integridade, que será chamada XDCL
(XML Domain Constraints Language);
Através de um parser de validação, chamado parser
XDCL.
Trabalho Individual – PPGCC/UFSC – 2004
29/46
Arquitetura
Validação
de RIs
Trabalho Individual – PPGCC/UFSC – 2004
30/46
Arquitetura
Em parte
Representado
bem formado/válido
Validação
de RIs
Trabalho Individual – PPGCC/UFSC – 2004
31/46
Linguagem XDCL
•
Características:
• independência do contexto XML;
• pode ser referenciado por um banco de dados nativo
XML ou por um documento XML;
• documento texto, com extensão XDC;
• sintaxe XML (pode-se utilizar todos os recursos da
tecnologia);
•
•
é validado por um parser XML (questões de bem formado e
válido)
referência a um esquema XML (portanto, já
incorporando seus controles de restrições de
integridade).
Trabalho Individual – PPGCC/UFSC – 2004
32/46
Parser XDCL
•
Características:
• efetua a validação das expressões contidas no
documento XDC contra as instâncias XML;
• Mostra o resultado da validação;
• Validação correta;
• Indicação de inconsistências.
• Realiza
•
•
•
•
•
•
Checks
Updates
Inserts
Removes
Renames
Appends
Trabalho Individual – PPGCC/UFSC – 2004
33/46
Estudo de caso
•
Domínio – Operadora de planos de saúde;
•
Objetivo da operadora – prestar atendimento à saúde
de seus usuários;
•
Quem presta o atendimento – são os prestadores de
serviço (médicos, laboratórios, clínicas, hospitais)
•
MOTIVAÇÃO – troca constante de dados entre
prestadores e operadora através de documentos XML;
•
Finalidade dos dados – armazenamento num banco de
dados ou geração de novas instâncias;
Trabalho Individual – PPGCC/UFSC – 2004
34/46
Estudo de caso - exemplo
<dados>
<instituicao> 124 </instituicao>
<nome_instituicao> Hosp. Prontoclinicas Ltda </nome_instituicao>
<prestadores>
<prestador> 1452 </prestador>
<nome_prestador> Inst. de Neurologia </nome_prestador>
<responsavel> Maria da Silva </responsavel>
<data_geracao> 29-04-2004 </data_geracao>
<total_pagamentos> 54,00 </total_pagamentos>
<consultas>
<qtde_consultas> 2 </qtde_consultas>
<total_consultas> 54,00 </total_consultas>
<consulta>
<autorizacao> 813321 </autorizacao>
<data_lancamento> 15-04-2004 </data_lancamento>
<paciente> 14578 </paciente>
<nome_paciente> Adalgisa Severo </nome_paciente>
<convenio> 78 </convenio>
<nome_convenio> Saude Brasil Individual </nome_convenio>
<medico> 65 </medico>
<nome_medico> Adao Soares </nome_medico>
<data_realizacao> 12-04-2004 </data_realizacao>
<quantidade> 1 </quantidade>
<valor_consulta> 27,00 </valor_consulta>
</consulta>
<consulta>
<autorizacao> 81341 </autorizacao>
<data_lancamento> 12-04-2004 </data_lancamento>
<paciente> 1245 </paciente>
<nome_paciente> Maria do Carmo </nome_paciente>
<convenio> 77 </convenio>
<nome_convenio> Saude Brasil Coletivo </nome_convenio>
<medico> 65 </medico>
<nome_medico> Adao Soares </nome_medico>
<data_realizacao> 20-04-2004 </data_realizacao>
<quantidade> 1 </quantidade>
<valor_consulta> 27,00 </valor_consulta>
</consulta>
</consultas>
</prestadores>
</dados>
Trabalho Individual – PPGCC/UFSC – 2004
35/46
Estudo de caso - exemplo
<dados>
<instituicao> 124 </instituicao>
<nome_instituicao> Hosp. Prontoclinicas Ltda </nome_instituicao>
<prestadores>
<prestador> 1452 </prestador>
<nome_prestador> Inst. de Neurologia </nome_prestador>
<responsavel> Maria da Silva </responsavel>
<data_geracao> 29-04-2004 </data_geracao>
<total_pagamentos> 54, 00 </total_pagamentos>
<consultas>
<qtde_consultas> 2 </qtde_consultas>
<total_consultas> 54,00 </total_consultas>
<consulta>
<autorizacao> 813321 </autorizacao>
<data_lancamento> 15-04-2004 </data_lancamento>
<paciente> 14578 </paciente>
<nome_paciente> Adalgisa Severo </nome_paciente>
<convenio> 78 </convenio>
<nome_convenio> Saude Brasil Individual </nome_convenio>
<medico> 65 </medico>
<nome_medico> Adao Soares </nome_medico>
A data de
lançamento de
uma consulta
deve ser menor
ou igual a data
de realização da
mesma consulta
<data_realizacao> 12-04-2004 </data_realizacao>
<quantidade> 1 </quantidade>
<valor_consulta> 27,00 </valor_consulta>
</consulta>
<consulta>
<autorizacao> 81341 </autorizacao>
<data_lancamento> 12-04-2004 </data_lancamento>
<paciente> 1245 </paciente>
<nome_paciente> Maria do Carmo </nome_paciente>
<convenio> 77 </convenio>
<nome_convenio> Saude Brasil Coletivo </nome_convenio>
<medico> 65 </medico>
<nome_medico> Adao Soares </nome_medico>
<data_realizacao> 20-04-2004 </data_realizacao>
<quantidade> 1 </quantidade>
<valor_consulta> 27,00 </valor_consulta>
</consulta>
</consultas>
</prestadores>
</dados>
Trabalho Individual – PPGCC/UFSC – 2004
36/46
Estudo de caso - exemplo
<dados>
<instituicao> 124 </instituicao>
<nome_instituicao> Hosp. Prontoclinicas Ltda </nome_instituicao>
<prestadores>
<prestador> 1452 </prestador>
<nome_prestador> Inst. de Neurologia </nome_prestador>
<responsavel> Maria da Silva </responsavel>
<data_geracao> 29-04-2004 </data_geracao>
<total_pagamentos> 54,00 </total_pagamentos>
<consultas>
<qtde_consultas> 2 </qtde_consultas>
<total_consultas> 54,00 </total_consultas>
<consulta>
<autorizacao> 813321 </autorizacao>
<data_lancamento> 15-04-2004 </data_lancamento>
<paciente> 14578 </paciente>
<nome_paciente> Adalgisa Severo </nome_paciente>
<convenio> 78 </convenio>
<nome_convenio> Saude Brasil Individual </nome_convenio>
<medico> 65 </medico>
<nome_medico> Adao Soares </nome_medico>
<data_realizacao> 12-04-2004 </data_realizacao>
<quantidade> 1 </quantidade>
O valor do
elemento total de
consultas deve
ser igual ao
somatório dos
elementos valor
consulta
<valor_consulta> 27,00 </valor_consulta>
</consulta>
<consulta>
<autorizacao> 81341 </autorizacao>
<data_lancamento> 12-04-2004 </data_lancamento>
<paciente> 1245 </paciente>
<nome_paciente> Maria do Carmo </nome_paciente>
<convenio> 77 </convenio>
<nome_convenio> Saude Brasil Coletivo </nome_convenio>
<medico> 65 </medico>
<nome_medico> Adao Soares </nome_medico>
<data_realizacao> 20-04-2004 </data_realizacao>
<quantidade> 1 </quantidade>
<valor_consulta> 27,00 </valor_consulta>
</consulta>
</consultas>
</prestadores>
</dados>
Trabalho Individual – PPGCC/UFSC – 2004
37/46
Sintaxe XDCL
<xdcl_constraint xdcl_name=”nome_constraint”>
<xdcl_on> [Expressão XPath] </xdcl_on>
<xdcl_statements>
<xdcl_operations xdcl_operator=”[=,>=,<=,>,<,<>]”>
<xdcl_oper1 [xdcl_function1=”[sum, count, max, min]”]>
<xdcl_path1> [expressão XPath] </xdcl_path1>
</xdcl_oper1>
<xdcl_oper2 [xdcl_function2=”[sum, cont, max, min]”]>
<xdcl_path2> [expressão XPath] </xdcl_path2>
</xdcl_oper2>
</xdcl_operations>
<xdcl_return>
<xdcl_update> instruções XUpdate </xdcl_update>
<xdcl_insert> instruções XUpdate </xdcl_insert>
<xdcl_delete> instruções XUpdate </xdcl_delete>
<xdcl_message>
<xdcl_data_message> mensagem de aviso </xdcl_data_message>
</xdcl_message>
</xdcl_return>
</xdcl_statements>
</xdcl_constraint>
Trabalho Individual – PPGCC/UFSC – 2004
38/46
XSD da linguagem
Documento do Word
Trabalho Individual – PPGCC/UFSC – 2004
39/46
Exemplo de Check
<?xml version="1.0" encoding="UTF-8"?>
<xdcl_constraint xdcl_name="nome da restricao" xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance" xsi:noNamespaceSchemaLocation="C:\Mestrado\Trabalho Final\Dissertaçao\xdcl.xsd">
<!-- MOSTRA UMA MENSAGEM DE INCONSISTÊNCIA ENTRE OS ELEMENTOS DATA_LANCAMENTO
E DATA_REALIZACAO-->
<xdcl_on>/dados/prestadores/consultas/consulta</xdcl_on>
<xdcl_statements>
<xdcl_operations xdcl_operation="&gt;=">
<xdcl_oper1>
<xdcl_path1>/dados/prestadores/consultas/consulta/data_lançamento</xdcl_path1>
</xdcl_oper1>
<xdcl_oper2>
<xdcl_path2>/dados/prestadores/consultas/consulta/data_realização</xdcl_path2>
</xdcl_oper2>
</xdcl_operations>
<xdcl_return>
<xdcl_message>
<xdcl_data_return>DATAS INVÁLIDAS, VERIFIQUE !</xdcl_data_return>
</xdcl_message>
</xdcl_return>
</xdcl_statements>
</xdcl_constraint>
Trabalho Individual – PPGCC/UFSC – 2004
40/46
Exemplo de Update
<?xml version="1.0" encoding="UTF-8"?>
<xdcl_constraint xdcl_name="nome da restricao" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="C:\Mestrado\Trabalho Final\Dissertaçao\xdcl.xsd">
<!-- ATUALIZA O VALOR DO ELEMENTO QTDE_CONSULTAS COM O VALOR DE XDCL_OPER1-->
<xdcl_on>/dados/prestadores/consultas</xdcl_on>
<xdcl_statements>
<xdcl_operations xdcl_operation="&lt;&gt;">
<xdcl_oper1 xdcl_function="sum">
<xdcl_path1>/dados/prestadores/consultas/consulta/quantidade</xdcl_path1>
</xdcl_oper1>
<xdcl_oper2>
<xdcl_path2>/dados/prestadores/consultas/qtde_consultas</xdcl_path2>
</xdcl_oper2>
</xdcl_operations>
<xdcl_return>
<xdcl_update>
<xupdate_modifications version="1.0" xupdate_xmlns="http://www.xmldb.org/xupdate">
<xupdate_update select="/dados/prestadores/consultas/qtde_consultas">xdcl_oper1</xupdate_update>
</xupdate_modifications>
</xdcl_update>
</xdcl_return>
</xdcl_statements>
</xdcl_constraint>
Trabalho Individual – PPGCC/UFSC – 2004
41/46
Exemplo de Remove
<?xml version="1.0" encoding="UTF-8"?>
<xdcl_constraint xdcl_name="nome da restricao" xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance" xsi:noNamespaceSchemaLocation="C:\Mestrado\Trabalho Final\Dissertaçao\xdcl.xsd">
<!-- REMOVE O ELEMENTO 'CONFERIDO' DESDE QUE ELE ESTEJA COM O VALOR 'OK' -->
<xdcl_on>/dados/prestadores/consultas</xdcl_on>
<xdcl_statements>
<xdcl_operations xdcl_operation="=">
<xdcl_oper1>
<xdcl_path1>/dados/prestadores/consultas/conferido</xdcl_path1>
</xdcl_oper1>
<xdcl_oper2>
<xdcl_path2>OK</xdcl_path2>
</xdcl_oper2>
</xdcl_operations>
<xdcl_return>
<xdcl_delete>
<xupdate_modifications version="1.0" xupdate_xmlns="http://www.xmldb.org/xupdate">
<xupdate_remove select="conferido"></xupdate_remove>
</xupdate_modifications>
</xdcl_delete>
</xdcl_return>
</xdcl_statements>
</xdcl_constraint>
Trabalho Individual – PPGCC/UFSC – 2004
42/46
Exemplo de Insert
<?xml version="1.0" encoding="UTF-8"?>
<xdcl_constraint xdcl_name="nome da restricao" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="C:\Mestrado\Trabalho Final\Dissertaçao\xdcl.xsd">
<!-- INSERE O ELEMENTO CONFERIDO APÓS O ELEMENTO TOTAL_PAGAMENTOS COM O VALOR 'OK'
-->
<xdcl_on>/dados/prestadores/consultas</xdcl_on>
<xdcl_statements>
<xdcl_return>
<xdcl_insert>
<xupdate_modifications version="1.0" xupdate_xmlns="http://www.xmldb.org/xupdate">
<xupdate_insert-before select="\dados\prestadores\total_pagamentos">
<element name="conferido">ok</element>
</xupdate_insert-before>
</xupdate_modifications>
</xdcl_insert>
</xdcl_return>
</xdcl_statements>
</xdcl_constraint>
Trabalho Individual – PPGCC/UFSC – 2004
43/46
Dificuldades
•
•
Implementar no xsd controles da linguagem
xupdate
Momento que o parser de verificação será
executado
•
•
Bancos XML (eventos?)
Documentos XML (ao alterar o documento)
Trabalho Individual – PPGCC/UFSC – 2004
44/46
Cronograma de atividades
Meses
Atividades
Julho
(2004)
Agosto
(2004)
Setembro
(2004)
Defesa TI
OK
Adequação da proposta
com sugestões da
Banca do TI
OK OK
Estudo detalhado da
sintaxe de checks,
triggers e assertions da
SQL
OK
Definição da linguagem
XDCL com base no
estudo da etapa
anterior
OK OK
Outubro
(2004)
Novembro
(2004)
Dezembro
(2004)
Janeiro
(2005)
Implementação do
parser XDCL
Validação
Redação da
dissertação
Defesa da dissertação
Trabalho Individual – PPGCC/UFSC – 2004
45/46
Obrigado !
Trabalho Individual – PPGCC/UFSC – 2004
46/46
Download

Transparências do grupo de estudos