Compito di BDD2 - 5/9/2007

Esercizio 1

Si scriva un possibile DTD che modelli nel modo piu' accurato possibile una base di dati relativa ai menu di un ristorante, una cui istanza corrisponde al seguente XML:

<menu xmlns="http://www.example.org/menu" data="2007-09-07">
<antipasto prezzo="4.00">Crostini all'olio d'oliva</antipasto>
<antipasto prezzo="7.00">Pate' d'oca con pan brioche
<!-- specialita'!! --></antipasto>
<primo prezzo="14.00">Budino di zucca al tartufo nero</primo>
<primo prezzo="13.00">Tagliolini alla salsa verde con erbette</primo>
<secondo prezzo="15.00">Seppia nera in salsa vaccina</secondo>
<secondo prezzo="19.00">Tonno scottato con finferli e porcini</secondo>
<dolce prezzo="6.00">Creme brule' con frutti di bosco</dolce>
<dolce prezzo="7.00">Ricotta di capra con salsa esotica</dolce>
<dolce prezzo="5.00">Gelato alla vaniglia con arancia glassata</dolce>
</menu>


Esercizio 2

Si scriva una query in XQuery che trasformi una base di dati in XML presente all'indirizzo http://www.example.org/gourmet.xml definita dal DTD dell'esercizio precedente, in modo tale che venga prodotto il seguente risultato:

<selezione data="2007-09-07" xmlns="http://www.example.net/selezione">
<!-- La Selezione di Menu del Giorno, il piu' economico ed il piu' costoso -->
<risparmioso prezzo="37">
<menu xmlns="http://www.example.org/menu">
<antipasto prezzo="4">Crostini all'olio d'oliva</antipasto>
<primo prezzo="13">Tagliolini alla salsa verde con erbette</primo>
<secondo prezzo="15">Seppia nera in salsa vaccina</secondo>
<dolce prezzo="5">Gelato alla vaniglia con arancia glassata</dolce>
</menu>
</risparmioso>
<intenditore prezzo="47">
<menu xmlns="http://www.example.org/menu">
<antipasto prezzo="7">Pate' d'oca con pan brioche</antipasto>
<primo prezzo="14">Budino di zucca al tartufo nero</primo>
<secondo prezzo="19">Tonno scottato con finferli e porcini</secondo>
<dolce prezzo="7">Ricotta di capra con salsa esotica</dolce>
</menu>
</intenditore>
</selezione>


Esercizio 3

Si scriva una trasformata XSLT che dato un database in XML definito dal DTD precedente, riordini gli elementi della base di dati in base al loro prezzo. Ad esempio con l'istanza del primo esercizio si potrebbe avere il seguente risultato:
<menu xmlns="http://www.example.org/menu" data="2007-09-07">
<antipasto prezzo="4.00">Crostini all'olio d'oliva</antipasto>
<dolce prezzo="5.00">Gelato alla vaniglia con arancia glassata</dolce>
<dolce prezzo="6.00">Creme brule' con frutti di bosco</dolce>
<antipasto prezzo="7.00">Pate' d'oca con pan brioche</antipasto>
<dolce prezzo="7.00">Ricotta di capra con salsa esotica</dolce>
<primo prezzo="13.00">Tagliolini alla salsa verde con erbette</primo>
<primo prezzo="14.00">Budino di zucca al tartufo nero</primo>
<secondo prezzo="15.00">Seppia nera in salsa vaccina</secondo>
<secondo prezzo="19.00">Tonno scottato con finferli e porcini</secondo>
</menu>


Esercizio 4

Si risponda alle seguenti domande: