Tópicos Avançados em Banco de Dados Sistemas de Informação Prof. Me. Everton C. Tetila.
Tópicos de Sistemas de Informação A
description
Transcript of Tópicos de Sistemas de Informação A
Tópicos de Sistemas de Informação A
Carlos Oberdan Rolim
Ciência da Computação
Validação de documentos XML
Um documento é válido com relação a um dado esquema XML se obdece este esquema
Documento XML
EsquemaXML
Parser
Documento XML válido
Documento XML inválido
Linguagens de Esquemas XML
DTD – Document Type Definition
XML Schema
XML DTD
Document Type Definition
O que é ?
A estrutura de um documento XML é definida no Document Type Definition (Definição do Tipo de Documento), que especifica o conjunto de elementos do documento, seus relacionamentos, seus atributos, entidades e o conjunto de tags associadas para marcar o documento.
Função
A principal função do DTD é definir todas as tags que um documento XML pode conter, determinando a ordem em que elas devem aparecer e se são obrigatórias ou opcionais
Define uma gramática para validar documentos, isto é, conjunto de regras que definem a estrutura do documento
Descreve a estrutura da árvore que pode ser aceita para o documento
A validação compara um documento em particular com uma DTD correspondente
É necessário que um documento seja bem-formado para ser validado
Exemplos de aplicação
registros médicos
enciclopédias
catálogos de produto
jornais
dicionários
contratos
políticas e procedimentos
artigos científicos
ordens de compra
normas/regulamentos
manuais de usuário
Componentes de um documento DTD
Componentes Definição
ElementosRefere-se a qualquer tag criada, ou seja, qualquer cadeia de
caracteres contida dentro dos delimitadores < e >.
TagsSão os elementos marcadores que possuem abertura e
encerramento.
AtributosFornece informações extras sobre os elementos e são
inseridos nas tags iniciais de um elemento.
Entidades São variáveis designadas para conter textos ou documentos.
Ao realizar a construção do DTD, é necessário que exista um entendimento muito claro do que se pretende armazenar nos documentos XML, ou seja, qual tipo de informação eles vão guardar e todos os outros elementos envolvidos citados anteriormente.
Validação
Com o DTD é possível ao software processador da XML realizar a validação de um documento, verificando se ele foi criado corretamente, segundo os padrões estabelecidos.
HTML x XML
Quando a HTML é utilizada em uma página da Web, não existe a necessidade de realizar uma declaração do tipo de documento, ou seja, atrelá-la a um DTD. Uma vez que suas tags são fixas, estas são controladas internamente pelo próprio browser.
Já o XML, por sua vez, devido a características de permitir a criação de tags, obriga a criação do DTD, para que o browser, ou qualquer outro interpretador XML, possa verificar a validade das tags utilizadas.
<company> <person> <ssn> 123456789 </ssn> <name> John </name> <office> B432 </office> <phone> 1234 </phone>
</person>
<person> <ssn> 987654321 </ssn> <name> Jim </name> <office> B123 </office>
</person>
<product> ... </product>
...
</company>
<!DOCTYPE company [
<!ELEMENT company ((person|product)*)>
<!ELEMENT person (ssn, name, office, phone?)>
<!ELEMENT ssn (#PCDATA)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT office (#PCDATA)>
<!ELEMENT phone (#PCDATA)>
<!ELEMENT product (pid, name, description?)>
<!ELEMENT pid (#PCDATA)>
<!ELEMENT description (#PCDATA)>
]>
XML DTD
Browser validando um documento XML
Formas de declaração do DTD
A definição das regras de um DTD, não necessita estar armazenada obrigatoriamente em um arquivo externo. Ela pode ser interna, ou seja, definida dentro do próprio documento XML, ou ainda uma parte interna e outra externa.
Declaração
Sintaxe:<!ELEMENT nome-do-elemento (lista de elementos e condições)>
Onde:<!ELEMENT: palavra reservada que indica a declaração de um elemento, tag. A utilização de letra maiúscula na palavra ELEMENT é obrigatória.
Nome-do-elemento: nome da tag.
Lista de elementos: nome de todas as tags que podem ser utilizadas dentro da tag que está sendo declarada.
Condições: caracteres que são utilizados para indicar opcionalidade e obrigatoriedade para as tags.
Caracteres de condições utilizados na declaração dos elementos
Caractere de Condição
Função
+
(Mais)
Indica que o elemento filho será utilizado pelo menos uma vez
dentro do elemento pai (ou mais de uma).
*
(Asterisco)
Indica que o elemento filho será utilizado várias vezes dentro
de um elemento pai, ou nem será utilizado (nenhuma ou mais
de uma).
?
(Interrogação)
Indica que o elemento filho será opcional, podendo ou não ser
utilizado (uma única vez) dentro do elemento pai.
|
(Barra Vertical)
Indica que um ou outro elemento filho será utilizado dentro de
um elemento pai.
Posições dos caracteres de condição
Posições dos caracteres de condição
<!ELEMENT cartao (nome, telefone+, email*, website?)>
<!ELEMENT trecho (ferroviário | aéreo | rodoviário | fluvial)>
<!ELEMENT livro (titulo, autor, editora, ano)*>
Posições dos caracteres de condição
Caractere de
CondiçãoExemplo
+
(Mais)
<!ELEMENT cliente (nome, fone+)>
<cliente>
<nome>... </nome>
<fone> ... </fone>
</cliente>
<cliente>
<nome> ... </nome>
<fone> ... </fone>
<fone> ... </fone>
</cliente>
*
(Asterisco)
<!ELEMENT cliente (nome, fone*)>
<cliente>
<nome>... </nome>
</cliente>
<cliente>
<nome> ... </nome>
<fone> ... </fone>
<fone> ... </fone>
</cliente>
Posições dos caracteres de condiçãoCaractere de
CondiçãoExemplo
?
(Interrogação)
<!ELEMENT cliente (nome, fone?, email?)>
<cliente>
<nome>...</nome>
</cliente>
<cliente>
<nome> ... </nome>
<fone> ... </fone>
</cliente>
<cliente>
<nome>... </nome>
<email>... </email>
</cliente>
<cliente>
<nome> ... </nome>
<fone> ... </fone>
<email> ... </email>
</cliente>
|
(Barra Vertical)
<!ELEMENT cliente (nome, (fone|email))>
<cliente>
<nome>... </nome>
<fone> ... </fone>
</cliente>
<cliente>
<nome> ... </nome>
<email> ... </email>
</cliente>
Variações na declaração dos elementos
Declaração de Sintaxe
Elementos que possuem apenas
texto.<!ELEMENT nome-do-elemento (#PCDATA)>
Única ocorrência para um
elemento.<!ELEMENT nome-do-elemento (elemento_1)>
Elementos que possuem
elementos filhos.
<!ELEMENT nome-do-elemento (elemento_1,
elemento_2, elemento_3, elemento_4)>
Ocorrência de um, os dois, vários
de cada um, ou nenhum dos
elementos para o elemento
principal.
<!ELEMENT nome-do-elemento (elemento_1,
elemento_2)*>
*PCDATA = Parsable Character Data
Variações na declaração dos elementos
Declaração de Sintaxe
Semelhante a anterior, porém
pelo menos um elemento deve
existir dentro do elemento
principal.
<!ELEMENT nome-do-elemento (elemento_1,
elemento_2)+>
Elemento principal pode ser
vazia ou conter apenas um dos
elementos.
<!ELEMENT nome-do-elemento (elemento_1,
elemento_2)?>
Atributo no documento DTD
Sintaxe
ou então
<!ATTLIST elemento atributo1 tipo valor_default><!ATTLIST elemento atributo2 tipo valor_default>
<!ATTLIST elemento atributo1 tipo valor_default atributo2 tipo valor_default>
Atributo no documento DTD
<!ATTLIST automovel marca NMTOKEN #IMPLIED ><!ATTLIST automovel modelo CDATA #FIXED "1000"><!ATTLIST automovel ano NMTOKEN #REQUIRED >
<!ATTLIST automovel marca NMTOKEN #IMPLIED modelo CDATA #FIXED “1000" ano NMTOKEN #REQUIRED>
Tipos de dados
CDATA (character data): representa qualquer texto. Pode conter espaços, pontuação, etc.
NMTOKEN (name token): caracteres alfanuméricos. Não pode conter espaços.
NMTOKENS: representa um ou mais NMTOKEN separados por espaços.
ID: tem que conter um nome que seja unívoco no documento.
IDREF: é referência para um ID.
IDREFS: lista de elementos IDREF.
CDATA
O valor de um atributo do tipo String é uma cadeia de caracteres de qualquer tamanho
Ex.:
<!ATTLIST livro titulo CDATA> Definição do atributo nome<livro titulo=“Data replication”/> Exemplo válido de elemento produto
ID
Os IDs identificam unicamente elementos individuais em um documento
Todos os valores usados para IDs em um documento devem ser diferentes
Os elementos podem ter um único atributo ID
O valor de um atributo do tipo ID deve ser único em um documento XML a fim de que o documento seja válido
Ex.:
<!ATTLIST livro ISBN ID> Definição do atributo codigo<livro ISBN=“123”/> Exemplo válido de elemento produto
IDREF
O valor de um atributo IDREF deve ser o valor de um único atributo ID algum elemento no documento
Ex.:
<!ATTLIST livro bib IDREF> Definição do atributo
<livro bib=“123”/> Documento válido
IDREFS
É uma variação do tipo IDREF
O valor de um atributo IDREFS pode conter valores IDREF múltiplos separados por espaços em branco.
Ex.:
<!ATTLIST livro bib IDREFS> Definição do atributo
<livro bib=“123 456”/> Documento válido
Valores default
#REQUIRED
preenchimento obrigatório para o atributo.<!DOCTYPE livro [<!ELEMENT livro EMPTY><!ATTLIST livro titulo CDATA #REQUIRED]>
<livro titulo = “Data Replication”/>
#IMPLIED
o atributo é opcional.<!DOCTYPE livro [<!ELEMENT livro EMPTY><!ATTLIST livro titulo CDATA #IMPLIED]>
<livro titulo = “Data Replication”/>
#FIXED
o atributo tem um valor fixo. Não pode se alterado.
<!ATTLIST valor moeda CDATA #FIXED “R$">
Entidades
Entidades podem ser usadas para representar caracteres especiais
As entidades também são usadas para referenciar um texto freqüentemente repetido ou alterado
Existem diferentes tipos de entidades:
Entidades gerais ou de parâmetro
Entidades internas ou externas
Entidades gerais e de parâmetro
Entidades Gerais
Referências de entidades gerais podem aparecer em qualquer lugar no texto ou na marcação
Geralmente são usadas como abreviação para um texto
As entidades gerais externas podem referenciar outros documentos em formato que não seja XML
<!DOCTYPE manual [<!ENTITY Direitos “<p> Este produto é fabricado pela &companhia;. </p>”><!ENTITY companhia “Intel”><!ELEMENT manual (p)+><!ELEMENT p (#PCDATA)>]><manual><p> Este é o manual da &companhia; </p>&Direitos;</manual>
Entidades gerais e de parâmetro
Entidades de parâmetro
Referências de entidade de parâmetro só podem aparecer na DTD
Existe um caractere extra na declaração antes do nome da entidade
As referências de entidade de parâmetro também substituem o símbolo & pelo sinal %
<!ENTITY % boolean “(true|false) ‘false’ “>
<!ELEMENT telefone (#PCDATA)>
<!ATTLIST telefone preferido %boolean; >
Entidades Internas e Externas
Entidades internas
São armazenadas no documento
Permitem definir atalhos para textos freqüentemente digitados ou textos a serem alterados
Entidades externas
Apontam para um identificador
Referenciam um conteúdo que não faz parte do documento atual
<!DOCTYPE manual [<!ENTITY maria SYSTEM “maria.ent”> <!ENTITY pedro SYSTEM “pedro.ent”><!ELEMENT agenda (item)+>]><agenda>&maria; &pedro; </manual>
<item><nome> Maria da Silva </nome><fone> 234.4567 </fone></item>
<item><nome> Pedro Soares </nome><fone> 256.8934 </fone></item>
Associação de XML com DTD
Digitar após esta linha <?xml version="1.0" encoding=“iso-8859-1"?> a seguinte declaração:
<!DOCTYPE elemento_raiz SYSTEM “nome arquivo">
Em que:
!DOCTYPE vincula o DTD a um documento
elemento_raiz será o nome do elemento principal do documento XML
nome_arquivo é o nome do arquivo que contém o DTD
Associação de XML com DTD
<!DOCTYPE biblioteca SYSTEM “biblioteca.dtd">
Indica ao processador XML que ele deverá verificar sua validade por meio do arquivo biblioteca.dtd, ou seja, a declaração indica que o DTD do documento presente, cujo elemento principal é “biblioteca”, está disponível no arquivo biblioteca.dtd.
DTD Interno
É possível que se insiram as regras do DTD no próprio documento XML.
As regras devem ser inseridas entre [ e ].
Externa:
<!DOCTYPE biblioteca SYSTEM “biblioteca.dtd">
Interna:
<!DOCTYPE biblioteca[<!ENTITY % tipo “(#PCDATA)”><!ELEMENT biblioteca(livro+) ><!ELEMENT livro (titulo, autor+, paginas) ><!ELEMENT titulo %tipo; ><!ELEMENT autor %tipo; ><!ELEMENT paginas %tipo; ><!ATTLIST livro genero CDATA #REQUIRED >]>
DTD Misto
Podem ser usadas em conjunto:
<!DOCTYPE exemplo SYSTEM “biblioteca.dtd" [
<!ENTITY valor “R$">
]>
* Definições internas sobrepõem elementos já existentes na DTD externa.
Criando um DTD
Avaliar a estrutura do documento XML
Identificar elemento principal/raiz
Identificar elementos filhos
Exercício
Criar DTD externo para o seguinte XML e validar o documento
<?xml version=”1.0” encoding=”UTF8”?>
<!DOCTYPE BOOK SYSTEM “book.dtd”>
<BOOK>
<TITLE> O nome da Rosa </TITLE>
<AUTHOR>
<FULL_NAME> Umberto Eco </FULL_NAME>
</AUTHOR>
<ISBN> 01233440 </ISBN>
<PUBLISHER>Recordx </PUBLISHER >
<VENDOR_LIST>
<VENDOR order=”1” availableOnline=”yes”>
<NAME> Amazon.com </NAME>
<PHONE> (800)555-1212 </PHONE >
<PHONE> (800)555-1313 </PHONE >
<BOOK_PRICE> $24.95
</BOOK_PRICE >
</VENDOR>
<VENDOR order=”2” availableOnline=”no”>
<NAME> Border’s </NAME>
<PHONE> (800)615-1313 </PHONE >
<BOOK_PRICE > $22.36
</BOOK_PRICE>
</VENDOR>
</VENDOR_LIST>
</BOOK>