Appello di Complementi di tecnologie Web

Esercizio I

Considera la seguente DTD:

<!ELEMENT person     (name, profession*)>
<!ATTLIST person      born CDATA #REQUIRED died CDATA #IMPLIED>
<!ELEMENT name       (first,last)>
<!ELEMENT first      (#PCDATA)>
<!ELEMENT last       (#PCDATA)>
<!ELEMENT profession (#PCDATA)>

Scrivi un documento ben formato e valido rispetto alla DTD e poi modificalo in modo che diventi (i) un documento ben formato ma invalido rispetto alla DTD e (ii) un documento mal formato.


Esercizio II

Immagina un documento XML che corrisponda all'albero seguente, dove i nodi dell'albero sono etichettati con gli elementi XML del documento:

Scrivere nel linguaggio XPath le seguenti interrogazioni e per ognuna indicare quale dovrebbe essere il risultato:

  1. Gli antenati di P che hanno almeno 4 figli
  2. I figli dei fratelli di L
  3. Il secondo figlio dei figli di E

Esercizio III

Leggi il seguente documento XML:

<?xml version="1.0"?>
<!--Colazioni nel mondo-->
<breakfast>
   <inglese key="en"> <!--Molto calorica-->
      <piatto>uova</piatto>
      <piatto>pancetta</piatto>
      <piatto>salsiccia</piatto>
   </inglese>
   <americana key="us"> <!--Altrettanto calorica-->
      <piatto>pancake</piatto>
      <piatto>muffin</piatto>
      <piatto>cereali</piatto>
   </americana>
</breakfast>

Applica la seguente trasformazione XSLT al documento letto e scrivi il risultato:

<?xml version="1.0"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

   <xsl:template match="inglese">
     <inglese>Questa era la colazione inglese</inglese>
   </xsl:template>
   <xsl:template match="americana">
     <americana>Questa era la colazione americana</americana>
   </xsl:template>
   <xsl:template match="comment()">
     <comment>Mi son perso qualcosa?</comment>
   </xsl:template>

</xsl:stylesheet>