32
Validando Documentos XML Vânia Maria Ponte Vidal [email protected]

Validando Documentos XML Vânia Maria Ponte Vidal [email protected]

Embed Size (px)

Citation preview

Page 1: Validando Documentos XML Vânia Maria Ponte Vidal vvidal@lia.ufc.br

Validando Documentos XML

Vânia Maria Ponte [email protected]

Page 2: Validando Documentos XML Vânia Maria Ponte Vidal vvidal@lia.ufc.br

Validando Documentos XML

Como em banco de dados, XML pode ter uma espécie de “esquema” o qual consiste de um conjunto de regras que definem a estrutura do documento.

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: Validando Documentos XML Vânia Maria Ponte Vidal vvidal@lia.ufc.br

Validando Documentos XML

Linguagens de Esquemas XML

DTD – Document Type Definition

XML Schema

Page 4: Validando Documentos XML Vânia Maria Ponte Vidal vvidal@lia.ufc.br

DTD - Document Type Definition

<!ELEMENT livraria (livro)+><!ELEMENT livro (titulo,editora, autor+)><!ELEMENT titulo (#PCDATA)><!ELEMENT editora (#PCDATA)><!ELEMENT autor (#PCDATA)><!ATTLIST livro ISBN CDATA]>

@ISBN titulo editora autor autor

StevenTom D.

livro

autor

livro

livraria

1234 Inside XML

New Riders

Jennifer U.

Elemento Raiz

Definição da DTD: livraria.dtd

Page 5: Validando Documentos XML Vânia Maria Ponte Vidal vvidal@lia.ufc.br

DTDs

DTD define uma gramática para validar documentos, isto é, conjunto de regras que definem a estrutura do documento

Em uma DTD são definidos: os elementos contidos no documento. os atributos dos elementos as entidades a hierarquia e a ordem desses elementos

Page 6: Validando Documentos XML Vânia Maria Ponte Vidal vvidal@lia.ufc.br

DTDs Descreve os elementos e atributos que

podem aparecer em um 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: Validando Documentos XML Vânia Maria Ponte Vidal vvidal@lia.ufc.br

DTD Exemplo de aplicações de DTD:

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: Validando Documentos XML Vânia Maria Ponte Vidal vvidal@lia.ufc.br

Exemplo

Definição da DTD : livraria.dtd

<! --Definição de Tipo de Documento--><!ELEMENT livraria (livro)+><!ELEMENT livro (titulo,autor,preco)><!ELEMENT titulo (#PCDATA)><!ELEMENT autor (#PCDATA)><!ELEMENT preco (#PCDATA)>

Page 9: Validando Documentos XML Vânia Maria Ponte Vidal vvidal@lia.ufc.br

Declaração da DTD

A DTD pode ser definida de duas formas: Declarada dentro do documento XML

Utilizando a tag <!DOCTYPE> para apontar para um entidade externa

Page 10: Validando Documentos XML Vânia Maria Ponte Vidal vvidal@lia.ufc.br

Declaração da DTD

Internamente

Documento – livraria.xml<!DOCTYPE livraria[<!ELEMENT livraria (livro)*><!ELEMENT livro(titulo,autor,preço)><!ELEMENT título (#PCDATA)><!ELEMENT autor (#PCDATA)><!ELEMENT preço (#PCDATA)>]>…Início do documento XML

Page 11: Validando Documentos XML Vânia Maria Ponte Vidal vvidal@lia.ufc.br

Declaração da DTD

Documento – livraria.xml

<!DOCTYPE livraria SYSTEM “livraria.dtd”>

Referencia uma entidade externa

Page 12: Validando Documentos XML Vânia Maria Ponte Vidal vvidal@lia.ufc.br

DTD

O DTD contém : Declarações dos tipos de elementos Declarações de listas de atributos Declarações de entidade Declarações de notação

Page 13: Validando Documentos XML Vânia Maria Ponte Vidal vvidal@lia.ufc.br

Declaração de Elementos Define um novo elemento e especifica o

conteúdo permitido para o elemento. <!ELEMENT livro (título, autor)> O Elemento pode ser vazio (geralmente

usado para imagens). <!ELEMENT imagem EMPTY>

Quando um elemento é composto por somente texto

<!ELEMENT autor (#PCDATA)>#PCDATA = Parsable Character Data

Page 14: Validando Documentos XML Vânia Maria Ponte Vidal vvidal@lia.ufc.br

Declaração de Elemento

Elementos com conteúdo Misto: Quando o conteúdo do elemento

possui #PCDATA e outros elementos.

<!ELEMENT título (#PCDATA|tituloPrincipal|subTitulo)>

Page 15: Validando Documentos XML Vânia Maria Ponte Vidal vvidal@lia.ufc.br

Declaração de Elementos Controle de Seqüencia

Conector de sequência. Usa o conector “,” EX <!ELEMENT A (B,C,D)>

Conector de Escolha. Usa o conector “|” EX. <!ELEMENT A (B|C|D)>

Ao misturar os conectores, usa-se () <!ELEMENT A (B, (C|D)>

Page 16: Validando Documentos XML Vânia Maria Ponte Vidal vvidal@lia.ufc.br

Declaração de Elementos Seqüência de Elementos

O elemento contém os sub-elementos exatamente na ordem especificada pela seqüência.

<!ELEMENT livro(titulo, autor,preco)><livro><titulo>… <autor>… <preco>…

</livro>

<livro><titulo>… <preco>… <autor>…

</livro>

<livro><titulo>… <preco>… </livro>

Ex: Válido Inválido Inválido

Page 17: Validando Documentos XML Vânia Maria Ponte Vidal vvidal@lia.ufc.br

Declaração de Elementos

Escolha de sub-elemento somente um dos elementos pode fazer parte do conteúdo do elemento

<!ELEMENT livro(titulo|autor|preco)>

<livro><titulo>… <preco>… </livro>

Inválido

Page 18: Validando Documentos XML Vânia Maria Ponte Vidal vvidal@lia.ufc.br

Declaração de Elementos

Controle de Ocorrência: Especifica a quantidade de vezes que um

sub-elemento pode aparecer em um elemento

Opcional (?) Uma ou mais vezes (+) Zero ou mais vezes (*)

Page 19: Validando Documentos XML Vânia Maria Ponte Vidal vvidal@lia.ufc.br

Declaração de Elementos (?): Elemento opcional sem repetição

<!ELEMENT livro(titulo, autor?, preco)>

<livro><titulo>… <preco>… </livro>

<livro><titulo>… <autor>…

<autor>… <preco>…</livro>Válido Inválido

Page 20: Validando Documentos XML Vânia Maria Ponte Vidal vvidal@lia.ufc.br

Declaração de Elementos

(+): Elemento requerido e com repetição

<!ELEMENT livro(titulo, autor+, preco)><livro><titulo>… <preco>… </livro>

<livro><titulo>… <autor>…

<autor>… <preco>…</livro>Inválido Válido

Page 21: Validando Documentos XML Vânia Maria Ponte Vidal vvidal@lia.ufc.br

Declaração de Elementos

(*): Elemento opcional e com repetição

<!ELEMENT livro(titulo, autor*, preco)>

<livro><titulo>… <preco>… </livro>

<livro><titulo>… <autor>…

<autor>… <preco>…</livro>Válido Válido

Page 22: Validando Documentos XML Vânia Maria Ponte Vidal vvidal@lia.ufc.br

Declaração de ElementosExemplos:

<!ELEMENT A (B,C?,D+)> Um elemento A contém um elemento B,

opcionalmente seguido por um elemento C seguido de um ou mais elementos D.

<!ELEMENT A (B,C,(D|E)*)> Um elemento A contém um elemento B

seguido de um elemento C, o qual é seguido por zero ou mais elementos D ou zero ou mais elementos E.

Page 23: Validando Documentos XML Vânia Maria Ponte Vidal vvidal@lia.ufc.br

Declaração de ElementosExemplos :

<!ELEMENT A (B,C*,D?)> Um elemento A contém um elemento B, seguido por

zero ou mais elementos C, opcionalmente seguido por um elemento D.

<!ELEMENT A (B,(C|D)+,E)> Um elemento A contém um elemento B seguido por

um ou mais elementos C ou um ou mais elementos D. Este elemento é seguido de um elemento E.

Page 24: Validando Documentos XML Vânia Maria Ponte Vidal vvidal@lia.ufc.br

Declaração de Atributos Elementos podem ter atributos e são

declarados separadamente dos elementos, em uma declaração de lista de atributos.

<!DOCTYPE livro [<!ELEMENT livro EMPTY><!ATTLIST livro titulo CDATA

#REQUIRED]>

Nome do atributoTipo do atributo

Palavra reservada

Page 25: Validando Documentos XML Vânia Maria Ponte Vidal vvidal@lia.ufc.br

Declaração de Atributos #REQUIRED: Atributos que devem estar presentes

cada vez que o elemento é usado. <!ATTLIST autor codigo CDATA #REQUIRED]>

#IMPLIED: Atributos que podem estar ausente cada vez que o elemento é usado. <!ATTLIST autor EMAIL CDATA #IMPLIED]>

Atributos podem ter valor Default<!ATTLIST autor sexo CDATA “F”]><!ATTLIST autor sexo (F|M) “F”]>

Page 26: Validando Documentos XML Vânia Maria Ponte Vidal vvidal@lia.ufc.br

Declaração de Atributos Todo atributo tem um tipo. O tipo de um atributo pode ser:

String ( CDATA) Enumerado ID IDREF/ IDREFS ENTITY/ENTITIES NMTOKEN/NMTOKENS

Page 27: Validando Documentos XML Vânia Maria Ponte Vidal vvidal@lia.ufc.br

Declaração de Atributos Tipo String Cadeia de caracteres

de qualquer tamanho <!ATTLIST livro titulo CDATA>

Ex : <livro titulo=“Inside XML”/>

Page 28: Validando Documentos XML Vânia Maria Ponte Vidal vvidal@lia.ufc.br

Declaração de Atributos Tipo Enumerado O atributo pode assumir

apenas um dos valores especificados na sua declaração

<!ATTLIST livro gênero(ficção|romance|técnico)>

Exemplo válido: <livro gênero=“romance”/>

Exemplo inválido: <livro gênero=“terror”/>

Page 29: Validando Documentos XML Vânia Maria Ponte Vidal vvidal@lia.ufc.br

Declaração de Atributos

Tipo ID O valor deste atributo tem que ser único por todo o documento. (identificam unicamente elementos em um documento). <!ATTLIST livro isbn ID/> Ex: <livro isbn=“243”/>

Page 30: Validando Documentos XML Vânia Maria Ponte Vidal vvidal@lia.ufc.br

Declaração de Atributos

Tipo IDREF O valor é uma referência para um ID de um elemento.

<!ATTLIST autor livro IDREF/> Ex: <autor livro=“243”/>

Page 31: Validando Documentos XML Vânia Maria Ponte Vidal vvidal@lia.ufc.br

Declaração de Atributos

Tipo IDREFS O valor é um conjunto de valores os quais são referências para IDs.

<!ATTLIST autor livros IDREFS/> Ex: <autor livro=“243 567”/>

Page 32: Validando Documentos XML Vânia Maria Ponte Vidal vvidal@lia.ufc.br

Exercício Crie uma DTD externa que valide o documento XML

que está relacionado com o catálogo de Cds

<catalogo><cd ano="2002"><titulo>Dança</titulo><artista>Rei do sucesso</artista><gravadora>EMI</gravadora><faixas><faixa>Boa</faixa><faixa>Melhor</faixa></faixas><preco>10.00</preco></cd></catalogo>