Tópicos de Sistemas de Informação A

41
Tópicos de Sistemas de Informação A Carlos Oberdan Rolim Ciência da Computação

description

Tópicos de Sistemas de Informação A. Carlos Oberdan Rolim Ciência da Computação. Documento XML. Documento XML válido. Parser. Documento XML inválido. Esquema XML. Validação de documentos XML. Um documento é válido com relação a um dado esquema XML se obdece este esquema. - PowerPoint PPT Presentation

Transcript of Tópicos de Sistemas de Informação A

Page 1: Tópicos de Sistemas de Informação A

Tópicos de Sistemas de Informação A

Carlos Oberdan Rolim

Ciência da Computação

Page 2: Tópicos de Sistemas de Informação A

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

Page 3: Tópicos de Sistemas de Informação A

Linguagens de Esquemas XML

DTD – Document Type Definition

XML Schema

Page 4: Tópicos de Sistemas de Informação A

XML DTD

Document Type Definition

Page 5: Tópicos de Sistemas de Informação A

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.

Page 6: Tópicos de Sistemas de Informação A

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

Page 7: Tópicos de Sistemas de Informação A

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

Page 8: Tópicos de Sistemas de Informação A

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.

Page 9: Tópicos de Sistemas de Informação A

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.

Page 10: Tópicos de Sistemas de Informação A

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.

Page 11: Tópicos de Sistemas de Informação A

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.

Page 12: Tópicos de Sistemas de Informação A

<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

Page 13: Tópicos de Sistemas de Informação A

Browser validando um documento XML

Page 14: Tópicos de Sistemas de Informação A

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.

Page 15: Tópicos de Sistemas de Informação A
Page 16: Tópicos de Sistemas de Informação A

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.

Page 17: Tópicos de Sistemas de Informação A

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.

Page 18: Tópicos de Sistemas de Informação A

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)*>

Page 19: Tópicos de Sistemas de Informação A

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>

Page 20: Tópicos de Sistemas de Informação A

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>

Page 21: Tópicos de Sistemas de Informação A

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

Page 22: Tópicos de Sistemas de Informação A

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)?>

Page 23: Tópicos de Sistemas de Informação A

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>

Page 24: Tópicos de Sistemas de Informação A

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>

Page 25: Tópicos de Sistemas de Informação A

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.

Page 26: Tópicos de Sistemas de Informação A

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

Page 27: Tópicos de Sistemas de Informação A

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

Page 28: Tópicos de Sistemas de Informação A

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

Page 29: Tópicos de Sistemas de Informação A

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

Page 30: Tópicos de Sistemas de Informação A

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

Page 31: Tópicos de Sistemas de Informação A

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

Page 32: Tópicos de Sistemas de Informação A

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>

Page 33: Tópicos de Sistemas de Informação A

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; >

Page 34: Tópicos de Sistemas de Informação A

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>

Page 35: Tópicos de Sistemas de Informação A

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

Page 36: Tópicos de Sistemas de Informação A

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.

Page 37: Tópicos de Sistemas de Informação A

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 >]>

Page 38: Tópicos de Sistemas de Informação A

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.

Page 39: Tópicos de Sistemas de Informação A

Criando um DTD

Avaliar a estrutura do documento XML

Identificar elemento principal/raiz

Identificar elementos filhos

Page 40: Tópicos de Sistemas de Informação A

Exercício

Criar DTD externo para o seguinte XML e validar o documento

Page 41: Tópicos de Sistemas de Informação A

<?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>