Ficha Nº8
Exercício Nº1
2003.11.12

Capturando contextos


Este exercício tem duas partes: uma primeira parte de análise e cálculo e uma segunda parte de apresentação de resultados.

Estas duas partes concretizam-se nas duas alíneas que se apresentam a seguir:

(a)Desenvolva uma stylesheet XSL genérica que aplicada a qualquer instância identifica os nodos do tipo text() e o respectivo contexto. A título de exemplo considere-se o seguinte excerto duma agenda de contactos:

<?xml version="1.0" encoding="iso-8859-1"?>
<agenda>
  <entrada id="e1" tipo="pessoa">
    <nome>José Carlos Ramalho</nome>
    <email>jcr@di.uminho.pt</email>
    <telefone>253-604479</telefone>
  </entrada>
...
</agenda>
Que, depois de processado daria origem ao seguinte documento:
<?xml version="1.0" encoding="iso-8859-1" standalone="yes"?>
<indice>
   <tnode>
      <valor>José Carlos Ramalho</valor>
      <contexto>agenda/entrada/nome</contexto>
   </tnode>
   <tnode>
      <valor>jcr@di.uminho.pt</valor>
      <contexto>agenda/entrada/email</contexto>
   </tnode>
   <tnode>
      <valor>253-604479</valor>
      <contexto>agenda/entrada/telefone</contexto>
   </tnode>
   ...
</indice>

(b)Especifique um Schema para o tipo de documento resultante da stylesheet desenvolvida na alínea anterior.

(c)Desenvolva uma stylesheet XSL que processa o resultado da stylesheet anterior e o apresenta numa tabela HTML com duas colunas: valor do nodo da árvore, contexto do nodo.