27
Anhanguera Linguagem para Organização e Transf. de Dados para Web Tecnologia em Análise e Desenvolvimento de Sistemas 1 Prof. Guilherme Cassolato Linguagem para Organização e Transferência de Dados para Web Prof. Guilherme Cassolato [email protected]

Aula sobre dtd

Embed Size (px)

DESCRIPTION

aula sobre validador DTD em xml

Citation preview

Page 1: Aula sobre dtd

Anhanguera Linguagem para Organização e Transf. de Dados para Web Tecnologia em Análise e Desenvolvimento de Sistemas

1 Prof. Guilherme Cassolato

Linguagem para Organização

e Transferência de Dados

para Web

Prof. Guilherme Cassolato

[email protected]

Page 2: Aula sobre dtd

Anhanguera Linguagem para Organização e Transf. de Dados para Web Tecnologia em Análise e Desenvolvimento de Sistemas

2 Prof. Guilherme Cassolato

DTDs

Page 3: Aula sobre dtd

Anhanguera Linguagem para Organização e Transf. de Dados para Web Tecnologia em Análise e Desenvolvimento de Sistemas

3 Prof. Guilherme Cassolato

O que são DTDs e para que servem

• Acrônimo para Document Type Definition (Definição de Tipo de Documento)

• Linguagem de marcação (diferente da XML) que permite especificar uma estrutura lógica válida para um documento XML

• Permitem definir/comunicar/validar a estrutura lógica de documentos XML

• Fu cio a co o u co trato e tre duas partes e volvidas a organização e/ou transferência de dados usando tecnologia XML, pelo qual estas partes se comprometem com a estrutura dos documentos intercambiados

• Documentos XML carregam suas DTDs ou fazem referência a um arquivo externo

Page 4: Aula sobre dtd

Anhanguera Linguagem para Organização e Transf. de Dados para Web Tecnologia em Análise e Desenvolvimento de Sistemas

4 Prof. Guilherme Cassolato

Exemplo 1

<!DOCTYPE note [

<!ELEMENT note (to,from,subject,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT subject (#PCDATA)> <!ELEMENT body (#PCDATA)>

]>

Page 5: Aula sobre dtd

Anhanguera Linguagem para Organização e Transf. de Dados para Web Tecnologia em Análise e Desenvolvimento de Sistemas

5 Prof. Guilherme Cassolato

Exemplo 2

<!DOCTYPE NEWSPAPER [

<!ELEMENT NEWSPAPER (ARTICLE+)> <!ELEMENT ARTICLE (HEADLINE,BYLINE,LEAD,BODY,NOTES)> <!ELEMENT HEADLINE (#PCDATA)> <!ELEMENT BYLINE (#PCDATA)> <!ELEMENT LEAD (#PCDATA)> <!ELEMENT BODY (#PCDATA)> <!ELEMENT NOTES (#PCDATA)> <!ATTLIST ARTICLE AUTHOR CDATA #REQUIRED> <!ATTLIST ARTICLE EDITOR CDATA #IMPLIED> <!ATTLIST ARTICLE DATE CDATA #IMPLIED> <!ATTLIST ARTICLE EDITION CDATA #IMPLIED>

]>

Page 6: Aula sobre dtd

Anhanguera Linguagem para Organização e Transf. de Dados para Web Tecnologia em Análise e Desenvolvimento de Sistemas

6 Prof. Guilherme Cassolato

Declaração interna (no próprio corpo do arquivo XML)

Sintaxe:

Localização: logo abaixo do prólogo (2ª linha do arquivo XML)

Exemplo:

<!DOCTYPE root-element [element-declarations]>

note.xml

<?xml version="1.0"?> <!DOCTYPE note [ <!ELEMENT note (to,from,subject,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT subject (#PCDATA)> <!ELEMENT body (#PCDATA)> ]> <note>

<to>Tove</to> <from>Jani</from> <subject>Reminder</subject> <body>Don't forget me this weekend</body>

</note>

Page 7: Aula sobre dtd

Anhanguera Linguagem para Organização e Transf. de Dados para Web Tecnologia em Análise e Desenvolvimento de Sistemas

7 Prof. Guilherme Cassolato

Declaração externa (em arquivo separado)

Sintaxe:

Exemplo:

<!DOCTYPE root-element [element-declarations]>

note.xml

<?xml version="1.0"?> <!DOCTYPE note SYSTEM "note.dtd"> <note>

<to>Tove</to> <from>Jani</from> <subject>Reminder</subject> <body>Don't forget me this weekend!</body>

</note>

note.dtd

<!ELEMENT note (to,from,subject,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT subject (#PCDATA)> <!ELEMENT body (#PCDATA)>

Page 8: Aula sobre dtd

Anhanguera Linguagem para Organização e Transf. de Dados para Web Tecnologia em Análise e Desenvolvimento de Sistemas

8 Prof. Guilherme Cassolato

Estruturas lógicas XML representáveis com DTDs

• Elementos

• Atributos

• Entidades

• Seções

– PCDATA (Parsed Character Data)

– CDATA (Character Data)

Page 9: Aula sobre dtd

Anhanguera Linguagem para Organização e Transf. de Dados para Web Tecnologia em Análise e Desenvolvimento de Sistemas

9 Prof. Guilherme Cassolato

Especificando elementos

Sintaxe:

Onde:

<!ELEMENT nome-do-elemento predicado>

nome-do-elemento é o nome do elemento que está sendo especificado

predicado é um dos seguintes:

EMPTY se o elemento for vazio

(#PCDATA) se o elemento contiver um valor de texto cujos caracteres serão interpretados pelo parser e, portanto, símbolos de marcação da linguagem serão processados

(filho1, filho2, ..., filhoN) se o elemento possui elementos filhos, os quais deverão também ser especificados e aparecer dentro do elemento na mesma ordem que foram listados

ANY Se o valor pode ser qualquer coisa (irrestrito)

Page 10: Aula sobre dtd

Anhanguera Linguagem para Organização e Transf. de Dados para Web Tecnologia em Análise e Desenvolvimento de Sistemas

10 Prof. Guilherme Cassolato

Exemplos

Elemento vazio:

.dtd

<!ELEMENT br EMPTY>

.xml

<br />

PCDATA:

.dtd

<!ELEMENT elemX (#PCDATA)>

.xml

<elemX> Contém algum valor Maior que precisa ser representado como &gt;

</elemX>

Page 11: Aula sobre dtd

Anhanguera Linguagem para Organização e Transf. de Dados para Web Tecnologia em Análise e Desenvolvimento de Sistemas

11 Prof. Guilherme Cassolato

Exemplos

Elemento com filhos:

.dtd

<!ELEMENT note (to,from,subject,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT subject (#PCDATA)> <!ELEMENT body (#PCDATA)>

.xml

<note> <to>Tove</to> <from>Jani</from> <subject>Reminder</subject> <body>Don't forget me this weekend!</body>

</note>

Aparecem no XML na mesma ordem em que foram declarados

Page 12: Aula sobre dtd

Anhanguera Linguagem para Organização e Transf. de Dados para Web Tecnologia em Análise e Desenvolvimento de Sistemas

12 Prof. Guilherme Cassolato

Modificadores de ocorrência

Ocorrência Símbolo Descrição Exemplo

Única Nenhum O elemento filho deve aparecer exatamente uma vez dentro do elemento pai

<!ELEMENT pai (filho)>

Mínima + O elemento filho pode aparecer uma ou mais vezes dentro do elemento pai

<!ELEMENT pai (filho+)>

Livre * O elemento filho pode ocorrer zero ou mais vezes dentro do elemento pai

<!ELEMENT pai (filho*)>

Binária ? O elemento filho pode ocorrer zero ou uma vez dentro do elemento pai

<!ELEMENT pai (filho?)>

Alternativa | Ao menos um dos elementos filhos alternativos deve aparecer dentro do elemento pai

<!ELEMENT pai (filho1|filho2)>

Page 13: Aula sobre dtd

Anhanguera Linguagem para Organização e Transf. de Dados para Web Tecnologia em Análise e Desenvolvimento de Sistemas

13 Prof. Guilherme Cassolato

Exemplo de modificadores de ocorrência (misturando vários tipos)

<!ELEMENT note (to+,from,subject?,(message|body),tag*)>

Exemplo 1:

<!ELEMENT note (#PCDATA|to|from|subject|message)*>

Exemplo 2:

O elemento "note" pode conter zero ou mais ocorrências de dados/textos interpretados (PCDATA), e de elementos "to", "from", subject" ou "message".

O elemento "note" deve conter • pelo e os u a ocorrê cia do ele e to filho to ; • e seguida, u a ocorrê cia de from ; • pode ou ão co ter u a ocorrê cia de subject ; • deve co ter u a ocorrê cia de message ou u a ocorrê cia de body ; e • zero ou ais ocorrê cias de tag

Page 14: Aula sobre dtd

Anhanguera Linguagem para Organização e Transf. de Dados para Web Tecnologia em Análise e Desenvolvimento de Sistemas

14 Prof. Guilherme Cassolato

Especificando atributos

Sintaxe:

Onde:

nome-do-elemento é o nome do elemento que que contém o(s) atributo(s) especificado(s)

nome-do-atributo é o nome do atributo

tipo é o tipo do atributo (CDATA, lista enumerada, ID(s), MNTOKEN(s), ENTITY(ies), NOTATION)

valor-padrão é um valor padrão para o atributo ou identificador de restrição (#REQUIRED, #IMPLIED, #FIXED)

Exemplo:

<!ATTLIST nome-do-elemento nome-do-atributo tipo valor-padrão>

.dtd

<!ATTLIST payment type CDATA check >

.xml

<payment type= check />

Page 15: Aula sobre dtd

Anhanguera Linguagem para Organização e Transf. de Dados para Web Tecnologia em Análise e Desenvolvimento de Sistemas

15 Prof. Guilherme Cassolato

Especificando atributos – tipo do atributo

tipo é um dos seguintes: CDATA Character data

(en1,en2,...) Lista enumerada; deve conter um dos valores enumerados

ID Identificação única

IDREF ID de outro elemento

IDREFS Lista de Ids de outros elementos

NMTOKEN Nome XML válido

NMTOKENS Lista de nomes XML válidos

ENTITY Entidade

ENTITIES Lista de entidades

NOTATION Notação

xml: Valor XML predefinido

<!ATTLIST nome-do-elemento nome-do-atributo tipo valor-padrão>

Page 16: Aula sobre dtd

Anhanguera Linguagem para Organização e Transf. de Dados para Web Tecnologia em Análise e Desenvolvimento de Sistemas

16 Prof. Guilherme Cassolato

Especificando atributos – valor padrão

valor-padrão é um dos seguintes:

valor Valor padrão (default) do atributo; considerado caso nenhum outro seja preenchido

#REQUIRED Requerido

#IMPLIED Opcional

#FIXED valor Valor fixo; deve obrigatoriamente conter o valor especificado

<!ATTLIST nome-do-elemento nome-do-atributo tipo valor-padrão>

Page 17: Aula sobre dtd

Anhanguera Linguagem para Organização e Transf. de Dados para Web Tecnologia em Análise e Desenvolvimento de Sistemas

17 Prof. Guilherme Cassolato

Exemplo – Valor default de um atributo

.dtd

<!ELEMENT square EMPTY> <!ATTLIST square width CDATA 0 >

.xml

<square width= 00 />

O elemento "square" é definido como um elemento vazio que contém um atributo "width" de tipo CDATA.

Se nenhum valor for especificado para o atributo "width", o valor padrão será 0.

Page 18: Aula sobre dtd

Anhanguera Linguagem para Organização e Transf. de Dados para Web Tecnologia em Análise e Desenvolvimento de Sistemas

18 Prof. Guilherme Cassolato

Exemplo – atributo #REQUIRED

.dtd

<!ELEMENT person EMPTY> <!ATTLIST person number CDATA #REQUIRED>

documento_valido.xml

<person number= />

Utilize a palavra reservada #REQUIRED se você não possui um valor default para o atributo, mas gostaria de forçar que o atributo esteja presente.

documento_invalido.xml

<person />

Page 19: Aula sobre dtd

Anhanguera Linguagem para Organização e Transf. de Dados para Web Tecnologia em Análise e Desenvolvimento de Sistemas

19 Prof. Guilherme Cassolato

Exemplo – atributo #IMPLIED

.dtd

<!ELEMENT contact EMPTY> <!ATTLIST contact fax CDATA #IMPLIED>

documento_valido.xml

<contact fax= - />

Use a palavra reservada #IMPLIED se você não quer forçar o autor a incluir um atributo, e se você não possui um valor padrão para ele.

documento_tambem_valido.xml

<contact />

Page 20: Aula sobre dtd

Anhanguera Linguagem para Organização e Transf. de Dados para Web Tecnologia em Análise e Desenvolvimento de Sistemas

20 Prof. Guilherme Cassolato

Exemplo – atributo #FIXED

.dtd

<!ELEMENT sender EMPTY> <!ATTLIST sender company CDATA #FIXED Microsoft >

documento_valido.xml

<sender company= Microsoft />

Use a palavra reservada #FIXED quando você quer que um atributo tenha um valor fixo, sem permitir ao autor que o modifique. Se o autor do documento incluir outro valor, o intéprete (parser) XML retornará um erro.

documento_invalido.xml

<sender company= Oracle />

Page 21: Aula sobre dtd

Anhanguera Linguagem para Organização e Transf. de Dados para Web Tecnologia em Análise e Desenvolvimento de Sistemas

21 Prof. Guilherme Cassolato

Exemplo – atributo com valores possíveis enumerados

.dtd

<!ELEMENT pagamento EMPTY> <!ATTLIST pagamento tipo (cheque|dinheiro) dinheiro >

documento_valido.xml

<pagamento tipo= cheque />

Use valores enumerados de atributos quando você quer que o valor do atributo seja um dentre uma série de valores aceitos.

documento_invalido.xml

<pagamento tipo= cartão />

outro_documento_valido.xml

<pagamento tipo= dinheiro />

Page 22: Aula sobre dtd

Anhanguera Linguagem para Organização e Transf. de Dados para Web Tecnologia em Análise e Desenvolvimento de Sistemas

22 Prof. Guilherme Cassolato

Especificando entidades – declaração interna

Sintaxe:

Onde:

nome-da-entidade é o nome da entidade que está sendo especificada

valor é o valor de texto que o parser entenderá ao processar uma referência à entidade

Exemplo:

<!ENTITY nome-da-entidade valor >

.dtd

<!ENTITY escritor João da Silva > <!ENTITY copyright Editora Livro >

.xml

<autoria>&escritor; &copyright</autoria>

Page 23: Aula sobre dtd

Anhanguera Linguagem para Organização e Transf. de Dados para Web Tecnologia em Análise e Desenvolvimento de Sistemas

23 Prof. Guilherme Cassolato

Especificando entidades – declaração externa

Sintaxe:

Onde:

nome-da-entidade é o nome da entidade que está sendo especificada

URI é o caminho para outra DTD que especifica efetivamente a entidade

Exemplo:

<!ENTITY nome-da-entidade SYSTEM URI >

.dtd

<!ENTITY escritor SYSTEM http://www.site.com/entitites.dtd > <!ENTITY copyright SYSTEM http://www.site.com/entitites.dtd >

.xml

<autoria>&escritor; &copyright</autoria>

Page 24: Aula sobre dtd

Anhanguera Linguagem para Organização e Transf. de Dados para Web Tecnologia em Análise e Desenvolvimento de Sistemas

24 Prof. Guilherme Cassolato

Exemplo completo de DTD – Programação de TV

<!DOCTYPE TVSCHEDULE [ <!ELEMENT TVSCHEDULE (CHANNEL+)> <!ELEMENT CHANNEL (BANNER,DAY+)> <!ELEMENT BANNER (#PCDATA)> <!ELEMENT DAY (DATE,(HOLIDAY|PROGRAMSLOT+)+)> <!ELEMENT HOLIDAY (#PCDATA)> <!ELEMENT DATE (#PCDATA)> <!ELEMENT PROGRAMSLOT (TIME,TITLE,DESCRIPTION?)> <!ELEMENT TIME (#PCDATA)> <!ELEMENT TITLE (#PCDATA)> <!ELEMENT DESCRIPTION (#PCDATA)> <!ATTLIST TVSCHEDULE NAME CDATA #REQUIRED> <!ATTLIST CHANNEL CHAN CDATA #REQUIRED> <!ATTLIST PROGRAMSLOT VTR CDATA #IMPLIED> <!ATTLIST TITLE RATING CDATA #IMPLIED> <!ATTLIST TITLE LANGUAGE CDATA #IMPLIED> ]>

Page 25: Aula sobre dtd

Anhanguera Linguagem para Organização e Transf. de Dados para Web Tecnologia em Análise e Desenvolvimento de Sistemas

25 Prof. Guilherme Cassolato

Exemplo completo de DTD – Artigo de jornal

<!DOCTYPE NEWSPAPER [ <!ELEMENT NEWSPAPER (ARTICLE+)> <!ELEMENT ARTICLE (HEADLINE,BYLINE,LEAD,BODY,NOTES)> <!ELEMENT HEADLINE (#PCDATA)> <!ELEMENT BYLINE (#PCDATA)> <!ELEMENT LEAD (#PCDATA)> <!ELEMENT BODY (#PCDATA)> <!ELEMENT NOTES (#PCDATA)> <!ATTLIST ARTICLE AUTHOR CDATA #REQUIRED> <!ATTLIST ARTICLE EDITOR CDATA #IMPLIED> <!ATTLIST ARTICLE DATE CDATA #IMPLIED> <!ATTLIST ARTICLE EDITION CDATA #IMPLIED> <!ENTITY NEWSPAPER "Vervet Logic Times"> <!ENTITY PUBLISHER "Vervet Logic Press"> <!ENTITY COPYRIGHT "Copyright 1998 Vervet Logic Press"> ]>

Page 26: Aula sobre dtd

Anhanguera Linguagem para Organização e Transf. de Dados para Web Tecnologia em Análise e Desenvolvimento de Sistemas

26 Prof. Guilherme Cassolato

Exemplo completo de DTD – Catálogo de produtos

<!DOCTYPE CATALOG [ <!ENTITY AUTHOR "John Doe"> <!ENTITY COMPANY "JD Power Tools, Inc."> <!ENTITY EMAIL "[email protected]"> <!ELEMENT CATALOG (PRODUCT+)> <!ELEMENT PRODUCT (SPECIFICATIONS+,OPTIONS?,PRICE+,NOTES?)> <!ATTLIST PRODUCT NAME CDATA #IMPLIED CATEGORY (HandTool|Table|Shop-Professional) "HandTool" PARTNUM CDATA #IMPLIED PLANT (Pittsburgh|Milwaukee|Chicago) "Chicago" INVENTORY (InStock|Backordered|Discontinued) "InStock">

(...)

Page 27: Aula sobre dtd

Anhanguera Linguagem para Organização e Transf. de Dados para Web Tecnologia em Análise e Desenvolvimento de Sistemas

27 Prof. Guilherme Cassolato

Exemplo completo de DTD – Catálogo de produtos (cont.)

<!ELEMENT SPECIFICATIONS (#PCDATA)> <!ATTLIST SPECIFICATIONS WEIGHT CDATA #IMPLIED POWER CDATA #IMPLIED> <!ELEMENT OPTIONS (#PCDATA)> <!ATTLIST OPTIONS FINISH (Metal|Polished|Matte) "Matte" ADAPTER (Included|Optional|NotApplicable) "Included" CASE (HardShell|Soft|NotApplicable) "HardShell"> <!ELEMENT PRICE (#PCDATA)> <!ATTLIST PRICE MSRP CDATA #IMPLIED WHOLESALE CDATA #IMPLIED STREET CDATA #IMPLIED SHIPPING CDATA #IMPLIED> <!ELEMENT NOTES (#PCDATA)> ]>