Estrutura Lógica DTD Carina Dorneles dorneles@inf.ufrgs.br http://www.inf.ufrgs.br/ dorneles DTD
Introdução DTD - Document Type Definition Conjunto de regras que definem a estrutura do documento Hierarquia e granularidade Elementos que podem ser usados Onde podem ser aplicados (relações entre documentos) DTD 1
Validação de documentos Documento bem-formado ( well-formed document ) Documento XML construído de acordo com as regras básicas de XML (cada rótulo de inicio corresponde a um rótulo de fim, aninhamento de elementos é correto,... ) Documento válido ( valid document ) Documento XML bem-formado e com sintaxe conforme uma DTD DTD 2
Exemplos de DTDs registros médicos enciclopédias catálogos de produto jornais propostas dicionários relatórios técnicos contratos políticas e procedimentos artigos científicos livros ordens de compra recibos / notas revistas normas / regulamentos manuais de usuário normas de referência DTD 3
Declaração Subconjunto Interno DTD Subconjunto Externo DTD DTD 4
Estrutura da DTD Composta por declarações. Utiliza a sintaxe <!... > Definição de elemento <!ELEMENT...> Definição de atributos <!ATTLIST...> Definição de entidades <!ENTITY...> Definição de notação de tipos <!NOTATION...> DTD 5
Declarações São agrupadas dentro de uma declaração de tipo de documento: <!DOCTYPE livro [ <!... > <!... > <!... > ]> No exemplo, livro é o elemento raíz do documento DTD 6
Declaração de Elementos Definir um elemento e especificar o conteúdo permitido. Ex.: <!ELEMENT titulo (...)> Pode ser vazio (geralmente usado para imagens) <!ELEMENT imagem EMPTY> DTD 7
Declaração de Elementos (cont.) Pode conter quaisquer elementos declarados na DTD: <!ELEMENT p ANY> Na prática é pouco usado permite muita liberdade, descaracterizando um documento semiestruturado DTD 8
Controle de Sequência Conector de sequência. Usa o conector ",". Ex.: <!ELEMENT artigo (titulo, autor, seção)> Conector de escolha. Usa o conector " ". Ex.: <!ELEMENT endereço (instituição cidade)> DTD 9
Controle de Seqüência Ao misturar os conectores de seleção e de escolha, usar parênteses. Por exemplo: <!ELEMENT palavra (a,(b c))> Exemplo ambíguo <!ELEMENT palavra (a,b c)> DTD 10
Controle de Quantidade Elemento opcional sem repetição: "?" <!ELEMENT autor (primnome, segnome?, tercnome)> Elemento requerido e com repetição "+" <!ELEMENT autor (email+)> Elemento opcional e com repetição "*" <!ELEMENT parágrafo (figura*)> DTD 11
Uso de texto Quando um elemento é composto por texto: <!ELEMENT titulo(#pcdata)> Palavra reservada: #PCDATA (Parsable Character Data) DTD 12
Conteúdo misto Elemento pode conter tanto texto quanto elementos. Regra: PCDATA deve obrigatoriamente ser o primeiro token no grupo grupo deve ser de escolha, opcional e com repetição <!ELEMENT paragrafo (#PCDATA Subpar Superpar)*> DTD 13
Ambiguidade Ambiguidade surge quando o elemento encontrado na entrada de dados corresponde a mais de um token no modelo. Exemplo: <!ELEMENT lista(item?, item)> Um elemento item encontrado na entrada corresponde a qual dos elementos de lista? DTD 14
Ambiguidade Quando o primeiro elemento do grupo for o mesmo. Por exemplo: <!ELEMENT item ((empresa, empregado) (empresa, cliente))> Correto: <!ELEMENT item (empresa,(empregado cliente))> DTD 15
Elementos podem ter atributos Declaração de Atributos Atributos são declarados separadamente dos elementos, em uma declaração de lista de atributos Parâmetros: nome do elemento, nome de atributo, tipo de atributo Exemplo (atributos de autor): <!ATTLIST autor codigo CDATA e-mail CDATA sexo ( F M ) > DTD 16
Tipos de Atributos CDATA - cadeia de caracteres - aceita quando não há uma DTD NMTOKEN (NMTOKENS) - mesma lei de formação de um nome de atributo ENTITY (ENTITIES) - valor do atributo é uma referência a uma entidade DTD 17
Atributo obrigatório Atributo que deve estar presente cada vez que o elemento é usado. Utiliza-se a palavra reservada #REQUIRED <!ATTLIST autor codigo CDATA #REQUIRED> DTD 18
Atributo opcional Atributo que pode estar ausente cada vez que o elemento é usado. Aplicação pode assumir algum valor default. Utiliza-se a palavra reservada #IMPLIED <!ATTLIST autor e-mail CDATA #IMPLIED> DTD 19
Valor default Atributos podem ter valores default Se o atributo não aparecer quando o elemento for usado, valor default. <!ATTLIST autor sexo ( F M ) "F"> DTD 20
Declarações múltiplas Um elemento pode ter mais de uma declaração de lista de atributos. Exemplo: <!ATTLIST livro id ID #REQUIRED> tipo (romance policial) #REQUIRED>...... <!ATTLIST livro tipo (pocket normal) "normal"> autor CDATA #IMPLIED> A lista de atributos é combinada No caso de haver atributo com o mesmo nome, a primeira declaração é a que vale! Não é aconselhável o uso!!! DTD 21
Entidades de parâmetro Autor de documento pode usar entidades para evitar repetições desnecessárias Autor de DTD pode usar entidades de parâmetro para evitar repetições desnecessárias DTD 22
Entidades de parâmetro Definição de entidade de parâmetro <!ENTITY % comum "(paragrafo lista tabela)" > Dentro da declaração de elemento: <!ELEMENT capitulo - - ((%comum;)*, seção*) > <!ELEMENT seção - - ((%comum;)*) > Procurar utilizar "()"para separar o quantificador Utilizar exclusivamente em DTD DTD 23
Seções Condicionais Porções da DTD podem ser consideradas opcionais. Esta característica é fornecida pelo uso de seções condicionais DTD 24
Seções Condicionais As seções que serão consideradas pelo processador XML devem ser marcadas como uma seção incluída. Por exemplo <![INCLUDE [............ ]]> Para que ela não seja processada pelo processador XML, a palavra IN- CLUDE deve ser trocada por IGNORE, marcando uma seção ignorada: <![IGNORE [............ ]]> DTD 25
Seções Condicionais Entidades podem ser utilizadas para seções condicionais ENTITY % MeuPadrao "INCLUDE"> ENTITY % MinhaVariante "IGNORE"> DTD 26
Declaração de Notação Um elemento pode conter dados que não são XML. Neste caso, é necessário o uso de notação. Por exemplo: <!NOTATION Tex...... > Forma mínima (quando não existe aplicação para processar os dados): <!NOTATION PIXI SYSTEM ""> Quando não existe aplicação para processar os dados: <!NOTATION TIFF SYSTEM "c:/apps/show_tiff.exe"> DTD 27
Uso de Notação <!NOTATION TeX SYSTEM "..\TEXVIEW.EXE"> <!ENTITY Logo SYSTEM "LOGO.TEX" NDATA TeX> DTD 28
Processamento da DTD Quando um documento XML não possui DTD (caracterizando-o como um documento bem-formado) existem algumas restrições no uso de marcação: Atributos não podem ter valor default Todos os atributos são considerados CDATA Todos os atributos são considerados OPCIONAIS Entidades não podem ser definidas DTD 29