Ficha f12

JSON - JavaScript Object Notation

Processamento e Representação de Informação (MIEI)

O objectivo principal desta ficha é praticar um pouco a criação de estruturas de dados em JSON.

Recursos:

Recursos disponíveis para a realização da ficha:

Exercícios:

  1. Arquivo de Música Digital

Numa banda filarmónica o problema da gestão de partituras é um problema complexo. Há várias obras pertencentes ao reportório e novas sempre a surgir para serem acrescentadas. Cada obra para além da sua metainformação tem a ela associada uma série de partituras: normalemente uma para o maestro e outra para cada naipe de instrumentos que compoem a banda. Para cada instrumento poderá haver mais de uma partitura em clave ou afinação diferente.

No intuito de operacionalizar esta gestão criou-se uma base de dados em XML da qual se apresenta a seguir um excerto:

<?xml version="1.0" encoding="UTF-8"?>
<arquivo-musical>
  <obras>
    <obra id="m1">
        <titulo>Homenagem a J. Serra</titulo>
        <tipo>Marcha de Desfile</tipo>
        <compositor>Ilídio Costa</compositor>
    </obra>
    <obra id="m2">
        <titulo>Armindo Alves</titulo>
        <tipo>Marcha de Procissão</tipo>
        <compositor>Ilídio Costa</compositor>
        <instrumentos>
            <instrumento>
                <designacao>Sax Barítono</designacao>
                <partitura type="TIF"  path="ArmindoAlves-saxB.tif"/>
            </instrumento>
        </instrumentos>
    </obra>
    ...
    <obra id="m27">
        <titulo>Canções da Tradição</titulo>
        <tipo>Rapsódia</tipo>
        <compositor>Luís Cardoso</compositor>
        <instrumentos>
            <instrumento>
                <designacao>Sax Alto I</designacao>
                <partitura type="PDF"  path="CancoesTrad-saxA1.pdf"/>
            </instrumento>
            <instrumento>
                <designacao>Clarinete I</designacao>
                <partitura type="PDF"  path="CancoesTrad-clari1.pdf"/>
            </instrumento>
            <instrumento>
                <designacao>Clarinete II</designacao>
                <partitura type="PDF"  path="CancoesTrad-clari2.pdf"/>
            </instrumento>
            ...
        </instrumentos>
    </obra>
    ...
    <obra id="m46">
        <titulo>Santana</titulo>
        <tipo>Medley</tipo>
        <compositor>Santana</compositor>
        <arranjo>Giancarlo Gazzani</arranjo>
        <instrumentos>
            <instrumento>
                <designacao>All</designacao>
                <partitura type="PDF"  path="Santana-all.pdf"/>
            </instrumento>
        </instrumentos>
    </obra>
  </obras>
</arquivo-musical>

Pretende-se extrair informação desta base de dados para estruturas de dados em JSON. Nesse sentido são-te propostas as seguintes alíneas às quais deverás responder com a especificação de uma stylesheet XSLT.

  1. Crie uma estrutura em JSON com a lista dos títulos das obras;
  2. Crie uma estrutura em JSON com a lista dos títulos das obras e respetivo compositor;
  3. Crie uma estrutura em JSON com a lista dos títulos das obras em que cada tem associada uma lista de instrumentos para os quais tem uma partitura disponível;
  4. Crie uma estrutura em JSON capaz de representar toda a informação no arquivo musical.