Ficha Nº5
Exercício Nº3
2003.10.22

Listas


Considere o habitual modelo de dados normalmente designado por Lista.

Uma instância deste modelo pode ser representada em XML pelo seguinte documento:
<?xml version="1.0"?>
<lista>
  <elem>123</elem>
  <elem>78</elem>
  <elem>279</elem>
...
</lista>

Ao especificar o Schema, a lista pode ser encarada como uma sequência de elementos ou então como um tipo de dados indutivo: uma lista é um par; um elemento, que é obrigatório, e uma lista que é opcional. Segundo esta última perspectiva, a lista acima teria a seguinte representação:
<?xml version="1.0"?>
<lista>
  <elem>123</elem>
  <lista>
    <elem>78</elem>
    <lista>
     <elem>279</elem>
       ...
    </lista>
  </lista>
</lista>

Atendendo a este enunciado responda às seguintes alíneas:

(a)Especifique um Schema para a versão "sequencial" da lista.

(b)Especifique um Schema para a versão "indutiva" da lista.

(c)Especifique uma template, para a versão "sequencial" da lista, (que fará parte duma stylesheet XSL) de nome Procura que recebe como parâmetros uma lista e um elemento a procurar na lista e que dá como resultado a posição do elemento ou 0 se este não pertencer à lista.

(d)Especifique uma template, para a versão "indutiva" da lista, (que fará parte duma stylesheet XSL) de nome Elems que recebe como parâmetro uma lista e que dá como resultado a lista de elementos ordenados por ordem crescente e sem repetições.

(e)Especifique uma template, para a versão "sequencial" da lista, (que fará parte duma stylesheet XSL) de nome ContaElems que recebe como parâmetros uma lista e um elemento a procurar na lista e que dá como resultado a posição do elemento ou 0 se este não pertencer à lista.

(f)Especifique uma template, para a versão "indutiva" da lista, (que fará parte duma stylesheet XSL) de nome MinLista que recebe como parâmetro uma lista e que dá como resultado o menor elemento da lista.