Você está na página 1de 27

Linguagem para Organizao e Transf.

de Dados para Web


Tecnologia em Anlise e Desenvolvimento de Sistemas

Anhanguera

Linguagem para Organizao


e Transferncia de Dados
para Web
Prof. Guilherme Cassolato
guicassolato@gmail.com

Prof. Guilherme Cassolato

Linguagem para Organizao e Transf. de Dados para Web


Tecnologia em Anlise e Desenvolvimento de Sistemas

Anhanguera

DTDs

Prof. Guilherme Cassolato

Linguagem para Organizao e Transf. de Dados para Web


Tecnologia em Anlise e Desenvolvimento de Sistemas

Anhanguera

O que so DTDs e para que servem


Acrnimo para Document Type Definition (Definio de Tipo de
Documento)
Linguagem de marcao (diferente da XML) que permite especificar uma
estrutura lgica vlida para um documento XML
Permitem definir/comunicar/validar a estrutura lgica de documentos
XML

Fu cio a co o u co trato e tre duas partes e volvidas a


organizao e/ou transferncia de dados usando tecnologia XML, pelo
qual estas partes se comprometem com a estrutura dos documentos
intercambiados
Documentos XML carregam suas DTDs ou fazem referncia a um arquivo
externo
Prof. Guilherme Cassolato

Linguagem para Organizao e Transf. de Dados para Web


Tecnologia em Anlise e Desenvolvimento de Sistemas

Anhanguera

Exemplo 1

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

Prof. Guilherme Cassolato

Linguagem para Organizao e Transf. de Dados para Web


Tecnologia em Anlise e Desenvolvimento de Sistemas

Anhanguera

Exemplo 2
<!DOCTYPE NEWSPAPER [
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT

NEWSPAPER (ARTICLE+)>
ARTICLE (HEADLINE,BYLINE,LEAD,BODY,NOTES)>
HEADLINE (#PCDATA)>
BYLINE (#PCDATA)>
LEAD (#PCDATA)>
BODY (#PCDATA)>
NOTES (#PCDATA)>

<!ATTLIST
<!ATTLIST
<!ATTLIST
<!ATTLIST

ARTICLE
ARTICLE
ARTICLE
ARTICLE

AUTHOR CDATA #REQUIRED>


EDITOR CDATA #IMPLIED>
DATE CDATA #IMPLIED>
EDITION CDATA #IMPLIED>

]>
Prof. Guilherme Cassolato

Linguagem para Organizao e Transf. de Dados para Web

Anhanguera

Tecnologia em Anlise e Desenvolvimento de Sistemas

Declarao interna (no prprio corpo do arquivo XML)


Sintaxe:

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

Localizao: logo abaixo do prlogo (2 linha do arquivo XML)

Exemplo:

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>

Prof. Guilherme Cassolato

Linguagem para Organizao e Transf. de Dados para Web


Tecnologia em Anlise e Desenvolvimento de Sistemas

Anhanguera

Declarao externa (em arquivo separado)


Sintaxe:

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

Exemplo:
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>

Prof. Guilherme Cassolato

note.dtd
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT

note (to,from,subject,body)>
to (#PCDATA)>
from (#PCDATA)>
subject (#PCDATA)>
body (#PCDATA)>

Linguagem para Organizao e Transf. de Dados para Web


Tecnologia em Anlise e Desenvolvimento de Sistemas

Anhanguera

Estruturas lgicas XML representveis com DTDs


Elementos

Sees

Atributos

PCDATA (Parsed Character Data)

Entidades

CDATA (Character Data)

Prof. Guilherme Cassolato

Linguagem para Organizao e Transf. de Dados para Web


Tecnologia em Anlise e Desenvolvimento de Sistemas

Anhanguera

Especificando elementos
Sintaxe:

<!ELEMENT nome-do-elemento predicado>

Onde:
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


sero interpretados pelo parser e, portanto, smbolos de
marcao da linguagem sero processados

(filho1, filho2, ..., filhoN)

se o elemento possui elementos filhos, os quais devero


tambm ser especificados e aparecer dentro do elemento na
mesma ordem que foram listados

ANY

Se o valor pode ser qualquer coisa (irrestrito)

Prof. Guilherme Cassolato

Linguagem para Organizao e Transf. de Dados para Web


Tecnologia em Anlise e Desenvolvimento de Sistemas

Anhanguera

Exemplos
Elemento vazio:

PCDATA:
.dtd

<!ELEMENT br EMPTY>

.dtd
<!ELEMENT elemX (#PCDATA)>

.xml
<br />

Prof. Guilherme Cassolato

.xml
<elemX>
Contm algum valor
Maior que precisa ser
representado como &gt;
</elemX>

10

Linguagem para Organizao e Transf. de Dados para Web

Anhanguera

Tecnologia em Anlise e Desenvolvimento de Sistemas

Exemplos
Elemento com filhos:
.dtd
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT

note (to,from,subject,body)>
to (#PCDATA)>
from (#PCDATA)>
subject (#PCDATA)>
body (#PCDATA)>

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

Prof. Guilherme Cassolato

Aparecem no
XML na mesma
ordem em que
foram declarados

11

Linguagem para Organizao e Transf. de Dados para Web

Anhanguera

Tecnologia em Anlise e Desenvolvimento de Sistemas

Modificadores de ocorrncia
Ocorrncia

Smbolo

Descrio

Exemplo

nica

Nenhum

O elemento filho deve aparecer


exatamente uma vez dentro do
elemento pai

<!ELEMENT pai (filho)>

Mnima

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

Binria

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

Prof. Guilherme Cassolato

12

Linguagem para Organizao e Transf. de Dados para Web


Tecnologia em Anlise e Desenvolvimento de Sistemas

Anhanguera

Exemplo de modificadores de ocorrncia (misturando vrios tipos)


Exemplo 1:
<!ELEMENT note (to+,from,subject?,(message|body),tag*)>
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

Exemplo 2:
<!ELEMENT note (#PCDATA|to|from|subject|message)*>
O elemento "note" pode conter zero ou mais ocorrncias de dados/textos interpretados (PCDATA), e de
elementos "to", "from", subject" ou "message".
Prof. Guilherme Cassolato

13

Linguagem para Organizao e Transf. de Dados para Web


Tecnologia em Anlise e Desenvolvimento de Sistemas

Anhanguera

Especificando atributos
Sintaxe:

<!ATTLIST nome-do-elemento nome-do-atributo tipo valor-padro>

Onde:
nome-do-elemento o nome do elemento que que contm 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-padro um valor padro para o atributo ou identificador de restrio (#REQUIRED,


#IMPLIED, #FIXED)

Exemplo:
.dtd
<!ATTLIST payment type CDATA

Prof. Guilherme Cassolato

check >

.xml
<payment type= check

/>

14

Linguagem para Organizao e Transf. de Dados para Web


Tecnologia em Anlise e Desenvolvimento de Sistemas

Anhanguera

Especificando atributos tipo do atributo


<!ATTLIST nome-do-elemento nome-do-atributo tipo valor-padro>
tipo um dos seguintes:

Prof. Guilherme Cassolato

CDATA

Character data

(en1,en2,...)

Lista enumerada; deve conter um


dos valores enumerados

ID

Identificao nica

IDREF

ID de outro elemento

IDREFS

Lista de Ids de outros elementos

NMTOKEN

Nome XML vlido

NMTOKENS

Lista de nomes XML vlidos

ENTITY

Entidade

ENTITIES

Lista de entidades

NOTATION

Notao

xml:

Valor XML predefinido


15

Linguagem para Organizao e Transf. de Dados para Web


Tecnologia em Anlise e Desenvolvimento de Sistemas

Anhanguera

Especificando atributos valor padro


<!ATTLIST nome-do-elemento nome-do-atributo tipo valor-padro>
valor-padro um dos seguintes:
valor

Valor padro (default) do atributo; considerado


caso nenhum outro seja preenchido

#REQUIRED

Requerido

#IMPLIED

Opcional

#FIXED valor

Valor fixo; deve obrigatoriamente conter o valor


especificado

Prof. Guilherme Cassolato

16

Linguagem para Organizao e Transf. de Dados para Web

Anhanguera

Tecnologia em Anlise e Desenvolvimento de Sistemas

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 contm um


atributo "width" de tipo CDATA.

Se nenhum valor for especificado para o atributo "width", o valor padro ser 0.

Prof. Guilherme Cassolato

17

Linguagem para Organizao e Transf. de Dados para Web

Anhanguera

Tecnologia em Anlise e Desenvolvimento de Sistemas

Exemplo atributo #REQUIRED


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

documento_valido.xml
<person number=

/>

documento_invalido.xml
<person />

Utilize a palavra reservada #REQUIRED se voc no possui um valor default para


o atributo, mas gostaria de forar que o atributo esteja presente.

Prof. Guilherme Cassolato

18

Linguagem para Organizao e Transf. de Dados para Web

Anhanguera

Tecnologia em Anlise e Desenvolvimento de Sistemas

Exemplo atributo #IMPLIED


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

documento_valido.xml
<contact fax=

/>

documento_tambem_valido.xml
<contact />

Use a palavra reservada #IMPLIED se voc no quer forar o autor a incluir um


atributo, e se voc no possui um valor padro para ele.

Prof. Guilherme Cassolato

19

Linguagem para Organizao e Transf. de Dados para Web

Anhanguera

Tecnologia em Anlise e Desenvolvimento de Sistemas

Exemplo atributo #FIXED


.dtd
<!ELEMENT sender EMPTY>
<!ATTLIST sender company CDATA #FIXED

documento_valido.xml
<sender company= Microsoft

/>

Microsoft >

documento_invalido.xml
<sender company= Oracle

/>

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 intprete (parser) XML retornar um erro.

Prof. Guilherme Cassolato

20

Linguagem para Organizao e Transf. de Dados para Web

Anhanguera

Tecnologia em Anlise e Desenvolvimento de Sistemas

Exemplo atributo com valores possveis enumerados


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

documento_valido.xml
<pagamento tipo= cheque

/>

dinheiro

>

outro_documento_valido.xml
<pagamento tipo= dinheiro

/>

documento_invalido.xml
<pagamento tipo= carto

/>

Use valores enumerados de atributos quando voc quer que o valor do atributo
seja um dentre uma srie de valores aceitos.
Prof. Guilherme Cassolato

21

Linguagem para Organizao e Transf. de Dados para Web


Tecnologia em Anlise e Desenvolvimento de Sistemas

Anhanguera

Especificando entidades declarao interna


Sintaxe:

<!ENTITY nome-da-entidade

valor >

Onde:
nome-da-entidade o nome da entidade que est sendo especificada
valor o valor de texto que o parser entender ao processar uma referncia entidade

Exemplo:
.dtd
<!ENTITY escritor Joo da Silva >
<!ENTITY copyright Editora Livro >

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

Prof. Guilherme Cassolato

22

Linguagem para Organizao e Transf. de Dados para Web


Tecnologia em Anlise e Desenvolvimento de Sistemas

Anhanguera

Especificando entidades declarao externa


Sintaxe:

<!ENTITY nome-da-entidade SYSTEM

URI >

Onde:
nome-da-entidade o nome da entidade que est sendo especificada
URI o caminho para outra DTD que especifica efetivamente a entidade

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

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

Prof. Guilherme Cassolato

23

Linguagem para Organizao e Transf. de Dados para Web


Tecnologia em Anlise e Desenvolvimento de Sistemas

Anhanguera

Exemplo completo de DTD Programao de TV


<!DOCTYPE TVSCHEDULE [

Prof. Guilherme Cassolato

<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT

TVSCHEDULE (CHANNEL+)>
CHANNEL (BANNER,DAY+)>
BANNER (#PCDATA)>
DAY (DATE,(HOLIDAY|PROGRAMSLOT+)+)>
HOLIDAY (#PCDATA)>
DATE (#PCDATA)>
PROGRAMSLOT (TIME,TITLE,DESCRIPTION?)>
TIME (#PCDATA)>
TITLE (#PCDATA)>
DESCRIPTION (#PCDATA)>

<!ATTLIST
<!ATTLIST
<!ATTLIST
<!ATTLIST
<!ATTLIST
]>

TVSCHEDULE NAME CDATA #REQUIRED>


CHANNEL CHAN CDATA #REQUIRED>
PROGRAMSLOT VTR CDATA #IMPLIED>
TITLE RATING CDATA #IMPLIED>
TITLE LANGUAGE CDATA #IMPLIED>

24

Linguagem para Organizao e Transf. de Dados para Web


Tecnologia em Anlise e Desenvolvimento de Sistemas

Anhanguera

Exemplo completo de DTD Artigo de jornal


<!DOCTYPE NEWSPAPER [
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT

NEWSPAPER (ARTICLE+)>
ARTICLE (HEADLINE,BYLINE,LEAD,BODY,NOTES)>
HEADLINE (#PCDATA)>
BYLINE (#PCDATA)>
LEAD (#PCDATA)>
BODY (#PCDATA)>
NOTES (#PCDATA)>

<!ATTLIST
<!ATTLIST
<!ATTLIST
<!ATTLIST

ARTICLE
ARTICLE
ARTICLE
ARTICLE

AUTHOR CDATA #REQUIRED>


EDITOR CDATA #IMPLIED>
DATE CDATA #IMPLIED>
EDITION CDATA #IMPLIED>

<!ENTITY NEWSPAPER "Vervet Logic Times">


<!ENTITY PUBLISHER "Vervet Logic Press">
<!ENTITY COPYRIGHT "Copyright 1998 Vervet Logic Press">

]>
Prof. Guilherme Cassolato

25

Linguagem para Organizao e Transf. de Dados para Web


Tecnologia em Anlise e Desenvolvimento de Sistemas

Anhanguera

Exemplo completo de DTD Catlogo de produtos


<!DOCTYPE CATALOG [
<!ENTITY AUTHOR "John Doe">
<!ENTITY COMPANY "JD Power Tools, Inc.">
<!ENTITY EMAIL "jd@jd-tools.com">
<!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">

(...)
Prof. Guilherme Cassolato

26

Linguagem para Organizao e Transf. de Dados para Web


Tecnologia em Anlise e Desenvolvimento de Sistemas

Anhanguera

Exemplo completo de DTD Catlogo 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)>
]>
Prof. Guilherme Cassolato

27

Você também pode gostar