Upload
amelia-severina-de-lima
View
16
Download
2
Embed Size (px)
DESCRIPTION
aula sobre validador DTD em xml
Citation preview
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
Anhanguera Linguagem para Organização e Transf. de Dados para Web Tecnologia em Análise e Desenvolvimento de Sistemas
2 Prof. Guilherme Cassolato
DTDs
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
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)>
]>
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>
]>
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>
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)>
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)
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)
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 >
</elemX>
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
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)>
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
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 />
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>
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>
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.
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 />
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 />
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 />
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 />
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; ©right</autoria>
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; ©right</autoria>
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> ]>
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"> ]>
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">
(...)
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)> ]>