Ficha pri2018-f1

DTDs

Processamento Estruturado de Documentos

O objectivo principal desta ficha é introduzir ao aluno o desenvolvimento de DTDs.

Por motivos que se prendem com a integração de várias etapas e ferramentas vai-se utilizar o ambiente denominado XMLSpy.

No fim, o aluno deverá estar apto a desenvolver pequenos DTDs com a ferramenta apresentada.


Pretende-se criar uma agenda para gerir contactos de pessoas e empresas.

Uma agenda deste tipo é essencialmente constituída por uma lista de entradas.

Uma entrada pode ser simples, correspondendo a uma pessoa ou empresa, ou pode ser composta, neste caso corresponde a uma lista de pessoas e/ou empresas.

A agenda poderá conter um número livre de grupos aninhados.

Um grupo poderá ainda conter referências a entradas definidas noutros pontos da agenda.

Cada entrada é constituída pelos seguintes items de informação:

  • id string que corresponderá ao identificador único da entrada.
  • tipo campo com dois valores possíveis: pessoa ou empresa.
  • nome nome da pessoa ou da empresa.
  • email email da pessoa ou empresa.
  • telefone telefone da empresa ou pessoa.
  • gid no caso da entrada se tratar dum grupo este campo deverá conter o identificador do grupo.

Nas alíneas que se seguem considere que uma frase concreta desta linguagem tem a seguinte forma:

<?xml version="1.0" encoding="UTF-8"?>
<agenda>
  <entrada ident="e1">
    <nome>Pedro Henriques</nome>
    <email>prh@di.uminho.pt</email>
    <telefone>253 605555</telefone>
  </entrada>
  <entrada ident="e2">
    <nome>José Carlos Ramalho</nome>
    <email>jcr@di.uminho.pt</email>
    <telefone>253 604444</telefone>
  </entrada>
  <grupo ident="gepl">
    <ref apontado="e1"/>
    <ref apontado="e2"/>
    <entrada ident="e3">
      <nome>Mário Martins</nome>
      <email>fmm@di.uminho.pt</email>
      <telefone>253 408878</telefone>
    </entrada>
  </grupo>
</agenda>

Desenvolva então, cada uma das seguintes alíneas:

  1. Especifique um DTD para este tipo de documento.
  2. Valide a instância acima com o DTD que especificou usando o XML Spy e indicando que quer criar um documento XML de acordo com o DTD especificado.