XDCL: uma proposta para controle de restrições de integridade de domínio em documentos XML
-
Upload
kennedy-larsen -
Category
Documents
-
view
15 -
download
2
description
Transcript of XDCL: uma proposta para controle de restrições de integridade de domínio em documentos XML
Trabalho Individual – PPGCC/UFSC – 2004 1/46
XDCL: uma proposta para controle de restrições de integridade de domínio em documentos XML
Universidade Federal de Santa CatarinaPrograma de Pós-Graduação em Ciência da Computação
Alexandre Tagliari Lazzaretti
Prof. Dr. Ronaldo Santos MelloOrientador
Trabalho Individual – PPGCC/UFSC – 2004 2/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 3/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 4/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 5/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 6/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 7/46
Restrições de Integridade (classificação)
• Classificação:
• Domínio
• Chaves
• Integridade Referencial
• Momento de Verificação
• Baseada em eventos
• Especificam quais os valores válidos cada atributo deve ter;
• Subdivide-se em:• Restrições de atributo• Restrições de tipo• Restrições de tuplas• Restrições de banco de dados• Restrições de transição de estado
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
• Identificam as tuplas e estabelecem relações entre tuplas de tabelas;
• Classifica-se em:• candidatas• primárias ou alternativas• estrangeiras
Trabalho Individual – PPGCC/UFSC – 2004 9/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 10/46
Restrições de Integridade (classificação)
• Classificação:
• Domínio
• Chaves
• Integridade Referencial
• Momento de Verificação
• Baseada em eventos
• Indica a questão de quando a verificação é feita;
• Pode ser de dois tipos: imediata e postergada.
Trabalho Individual – PPGCC/UFSC – 2004 11/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 12/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 13/46
SQLRelacional
DomínioBásicas de Tabelas
Gerais GatilhosProcedi-mentos
Transa-çoes
Momento de verificação
a) Domínio
AtributosDOMAIN, CHECK
CHECK _ _ NOT DEFERRABLE
Tipo _TIPOS DE
DADOS _ _ _ _ NOT DEFERRABLE
Tuplas _ _ASSERTION,
CHECK _ NOT DEFERRABLE
Banco de dados _ _ASSERTION,
CHECK NOT DEFERRABLE ou DEFERRABLE
Transição de estadoDOMAIN, CHECK
_ _ _ NOT DEFERRABLE
b) Chaves
candidatas _ UNIQUE, _ _ _ _ NOT DEFERRABLE
primárias _ PRIMARY KEY _ _ _ _ NOT DEFERRABLE
estrangeiras _ FOREIGN KEY _ _ _ _ NOT DEFERRABLE
c) Integridade referencial
_PRIMARY E
FOREIGN KEY _ _ NOT DEFERRABLE
d) Momento de Verificação
IMEDIATO IMEDIATO IMEDIATO IMEDIATO IMEDIATOPOSTERGA-
DONOT DEFERRABLE ou
DEFERRABLE
e) Baseada em eventos _ _ _ _ NOT DEFERRABLE ou
DEFERRABLE
Relacional vs. SQL
*
Trabalho Individual – PPGCC/UFSC – 2004 14/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 15/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 16/46
XML (documento)
<? xml version = ”1.0” encoding = ”UTF-8” standalone = “yes” ><pessoas>
<codigo cpf=”68458371049”><nome>
<primeiro> Maria </primeiro><meio> Aparecida </meio><sobrenome> Tavares </sobrenome>
</nome><endereco>
<rua> Rua das Flores </rua><numero> 1789 </numero><bairro> Centro </bairro>
</endereco><cidade> Rio de Janeiro </cidade>
</codigo></pessoas>
Atributo de um elemento
Elemento
Elemento raiz
Trabalho Individual – PPGCC/UFSC – 2004 17/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 18/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 19/46
XML (DTD)
Conteúdos de elementos
Seqüência de sub-elementos
Cardinalidade de elementos
Tipos de atributos
Ocorrência de atributos
ANY, EMPTY, MIXED, PCDATA
VÍRGULA, BARRA VERTICAL +, *. ?
CDATA, ENTITY, ENTITIES, NMTOKEN,
NMTOKENS,NOTATION, ID, IDREF
REQUIRED, IMPLIED, FIXED
• Controles de integridade da 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>
]>
Declaração de atributo
Declaração de elemento
Conteúdo de um elemento
Seqüência de sub-elementos
Cardinalidade
Trabalho Individual – PPGCC/UFSC – 2004 20/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 21/46
XML (XSD)
Conteúdo de elementos Seqüência e escolha de elementos
Padrões de elementos
Ocorrência de elementos
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)
Valores padrão (DEFAULT), Valores fixos (FIXED), Valores Enumerados
(ENUMERATION)
Elementos opcionais repetitivos (maxOccurs e minOccurs),
Elemento ALL
Conteúdo de atributos
Padrões de atributos
Ocorrência de atributos
Tipos de dados Chaves e referências
Em elementos vazios, Em elementos com conteúdo,
Pertencentes a namespaces
Com valores padrão (DEFAULT), Com valores fixos (FIXED), Valores
enumerados (ENUMERATION)Requeridos e opcionais
(USE)
Tipos simples (SIMPLETYPE, FACETS), Tipos complexos (Devivações por extensão e
restrição)
UNIQUE, KEY, KEYREF
Trabalho Individual – PPGCC/UFSC – 2004 22/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
herança
Controle de conteúdo
Controle de seqüência
Trabalho Individual – PPGCC/UFSC – 2004 23/46
Restrições de integridade vs. DTDDTD
RelacionalConteúdos de
elementosSeqüência de sub-
elementosCardinalidade de
elementosTipos de atributos
Ocorrência de atributos
a) Domínio
TipoANY, EMPTY, MIXED,
PCDATAVÍRGULA, BARRA
VERTICAL +, *. ?CDATA, ENTITY,
ENTITIES, NMTOKEN, NMTOKENS,NOTATION
_
Atributos _ _ _ _REQUIRED,
IMPLIED, FIXED
Tuplas _ _ _ _ _
Banco de dados _ _ _ _ _
b) Chaves
Candidatas _ _ _ ID _
Primárias _ _ _ ID _
Estrangeiras _ _ _ IDREF _
c) Integridade referencial
_ _ _ 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
Trabalho Individual – PPGCC/UFSC – 2004 24/46
Restrições de integridade vs. XSDXSD
RelacionalConteúdo de elementos Seqüência e escolha de
elementosPadrões de elementos
Ocorrência de elementos
a) Domínio
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 _ _ _ _
b) Chaves
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
Trabalho Individual – PPGCC/UFSC – 2004 25/46
Restrições de integridade vs. XSDXSD
RelacionalConteúdo de
atributosPadrões de atributos Ocorrência de
atributosTipos de dados Chaves e
referências
a) Domínio
Tipo
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)
_
Atributos _
Com valores padrão (DEFAULT), Com valores
fixos (FIXED), Valores enumerados
(ENUMERATION)
_ FACETS _
Tuplas _ _ _ _ _
Banco de dados _ _ _ _ _
b) Chaves
Candidatas _ _ _ _ UNIQUE, KEY
Primárias _ _ _ _ KEY
Estrangeiras _ _ _ _ KEYREF
c) Integridade referencial
_ _ _ _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
Trabalho Individual – PPGCC/UFSC – 2004 26/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
TrabalhosRelacional
OGBUJI (2001) PROVOST (2002)
BENEDIKT et al. (2002)
BAYLEY et al. (2002)
Domínio
Tipo √ √ √ -
Atributos - - - -
Tuplas √ √ √ √
Banco de dados √ √ √ √
Baseada em eventos - - - √
Trabalho Individual – PPGCC/UFSC – 2004 27/46
Trabalhos Relacionados
• Tabela – trabalhos vs SQL
TrabalhosSQL
OGBUJI (2001) PROVOST (2002) BENEDIKT et al. (2002) BAYLEY et al. (2002)
Domain - - - -
Check - - - -
Assertion - - - -
Gatilhos - - - √
Procedimentos √ √ √ -
Transações - - - -
Trabalho Individual – PPGCC/UFSC – 2004 28/46
Conclusõ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);
MOTIVAÇÕES
Trabalho Individual – PPGCC/UFSC – 2004 29/46
Proposta• Um mecanismo de controle de restrições de integridade
de domínio para documentos XML, em específico, 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.
Como ?
Trabalho Individual – PPGCC/UFSC – 2004 31/46
Arquitetura
Representado
Em parte
bem formado/válido
Validação
de RIs
Trabalho Individual – PPGCC/UFSC – 2004 32/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 33/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 34/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 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> <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> <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>
A data de lançamento de uma consulta
deve ser menor ou igual a data
de realização da mesma consulta
A data de lançamento de uma consulta
deve ser menor ou igual a data
de realização da mesma consulta
Trabalho Individual – PPGCC/UFSC – 2004 37/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>
O valor do elemento total de consultas deve
ser igual ao somatório dos
elementos valor consulta
O valor do elemento total de consultas deve
ser igual ao somatório dos
elementos valor consulta
Trabalho Individual – PPGCC/UFSC – 2004 38/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 40/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/XMLSchema-
instance" 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=">="> <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 41/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="<>">
<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 42/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/XMLSchema-
instance" 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 43/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 44/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 45/46
Cronograma de atividadesMeses
AtividadesJulho (2004)
Agosto (2004)
Setembro (2004)
Outubro (2004)
Novembro (2004)
Dezembro (2004)
Janeiro (2005)
Defesa TI OKAdequação da proposta com sugestões da Banca do TI OK OKEstudo detalhado da sintaxe de checks, triggers e assertions da SQL
OKDefinição da linguagem XDCL com base no estudo da etapa anterior
OK OKImplementação do parser XDCL
Validação
Redação da dissertação
Defesa da dissertação