Ficha Nº1
Exercício Nº2
2007.10.01

A Agenda de Contactos


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:

Nas alíneas que se seguem considere que uma frase concreta desta linguagem tem a seguinte forma:
    <AGENDA>
      <ENTRADA id="e1" tipo="pessoa">
        <NOME>José Carlos Ramalho</NOME>
        <EMAIL>jcr@di.uminho.pt</EMAIL>
        <TELEFONE>253 604479</TELEFONE>
      </ENTRADA>
      <GRUPO gid="epl">
        <ENTRADA id="e2" tipo="pessoa">
          <NOME>Pedro Henriques</NOME>
          <EMAIL>prh@di.uminho.pt</EMAIL>
          <TELEFONE>253 604469</TELEFONE>
        </ENTRADA>
        <REFERENCIA refent="e1"/>
        <ENTRADA id="e3" tipo="pessoa">
          <NOME>João Saraiva</NOME>
          <EMAIL>jas@di.uminho.pt</EMAIL>
          <TELEFONE>253 604479</TELEFONE>
        </ENTRADA>
      </GRUPO>
      <ENTRADA id="e4" tipo="empresa">
        <NOME>Lavandaria Tudo Branco</NOME>
        <TELEFONE>253 604433</TELEFONE>
      </ENTRADA>
    </AGENDA>

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

(a)Especifique um DTD para este tipo de documento.

(b)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.