Publicando Dados Relacionais e O-R como XML Vânia Vidal [email protected].
Validando Documentos XML Vânia Maria Ponte Vidal [email protected].
-
Upload
claudia-caminha-pinho -
Category
Documents
-
view
219 -
download
2
Transcript of Validando Documentos XML Vânia Maria Ponte Vidal [email protected].
Validando Documentos XML
Vânia Maria Ponte [email protected]
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
Validando Documentos XML
Linguagens de Esquemas XML
DTD – Document Type Definition
XML Schema
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
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
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
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
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)>
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
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
Declaração da DTD
Documento – livraria.xml
<!DOCTYPE livraria SYSTEM “livraria.dtd”>
Referencia uma entidade externa
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
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
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)>
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)>
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
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
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 (*)
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
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
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
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.
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.
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
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”]>
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
Declaração de Atributos Tipo String Cadeia de caracteres
de qualquer tamanho <!ATTLIST livro titulo CDATA>
Ex : <livro titulo=“Inside XML”/>
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”/>
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”/>
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”/>
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”/>
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>