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=">="> <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="<>"> <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