cerca
Appello d'esame di Tecnologie Web - 05/09/2007
modifica cronologia stampa login logout

Wiki

UniCrema


Materie per semestre

Materie per anno

Materie per laurea


Help

Appello d'esame di Tecnologie Web - 05/09/2007

Torna alla pagina di Tecnologie Web


 :: Appello d'esame di Tecnologie Web - 05/09/2007 ::

Esercizio 1

Considerate il seguente documento XML:

<breakfast-menu> 

<food> 
<name>Belgian Waffles</name> 
<price currency="US">5.95</price> 
<description> 
two of our famous Belgian Waffles with plenty of real maple syrup 
</description> 
<calories>650</calories> 
</food> 

<food> 
<name>Strawberry Belgian Waffles</name> 
<price currency="UK">7.95</price> 
<description> 
light Belgian waffles covered with strawberrys and whipped cream 
</description> 
<calories>900</calories> 
</food> 

<food> 
<name>Berry-Berry Belgian Waffles</name> 
<price currency="US">8.95</price> 
<description> 
light Belgian waffles covered with an assortment of fresh berries and whipped 
cream 
</description> 
<calories>900</calories> 
</food> 

</breakfast-menu>

1.a Scrivete un XML Schema che consenta di validare il file

SOLUZIONE

<?xml version="1.0" encoding="UTF-8"?>

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"?>

<xsd:element name="breakfast-menu">
 <xsd:complexType>
  <xsd:sequence>
   <xsd:element ref="food" minOccurs="0" maxOccurs="unbounded"/>
  </xsd:sequence>
 </xsd:complexType>
</xsd:element>

<xsd:element name="food">
 <xsd:complexType>
  <xsd:sequence>
   <xsd:element name="name" type="xsd:string"/>
   <xsd:element name="price">
    <xsd:complexType mixed="true">
     <xsd:attribute name="currency" use="required" type="xsd:string"/>
    </xsd:complexType>
   </xsd:element>
   <xsd:element name="description" type="xsd:string"/>
   <xsd:element name="calories" type="xsd:int"/>
  </xsd:sequence>
 </xsd:complexType>
</xsd:element>
</xsd:schema>

1.b Scrivete un XPath che permetta di individuare tutti nodi price con currency US. L’espressione da voi scritta è l’unica possibile? Motivate la risposta.

SOLUZIONE

//food/price[@currency="US"]

Restituisce solo i nodi con currency US.
Non è l'unica possibile perché possiamo ad esempio modificare la parte di sinistra, ad esempio scrivere il percorso intero:

/breakfast-menu/food/price[@currency="US"]

oppure utilizzare direttamente

//price[@currency="US"]

Esercizio 2

Considerate il seguente documento XHTML:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE html 
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
<title> Transitional DTD XHTML Example </title> 
</head> 

<body bgcolor="#FFFFFF" link="#000000" text="red"> 
<p>This is a transitional XHTML example 
<p>Note that any HTML 4.0 is maintained valid 

<table> 
<caption>Cans consumed by each student</caption> 
<summary>This table charts the number of cans consumed by each student, 
the type of, and whether taken with sugar.</summary> 
<tbody> 
   <tr> 
      <th id="t1">Name</th> 
      <th id="t2">Can</th> 
      <th id="t3" abbr="Type">Type of Can</th> 
      <th id="t4">Sugar?</th> 
   </tr> 
   <tr> 
      <td headers="t1">T. Sexton</td> 
      <td headers="t2">10</td> 
      <td headers="t3">Espresso</td> 
      <td headers="t4">No  </tr> 
</td> 
     <tr> 
      <td headers="t1">J. Dinnen</td> 
      <td headers="t2">5</td> 
      <td headers="t3">Fanta</td> 
      <td headers="t4">Yes  </tr> 
</td> 
</tbody> 
</table> 

</body> 
</html> 

2.a Verificate che il documento sia valido rispetto alla dichiarazione. Individuate gli eventuali elementi che rendono non valido il documento.

SOLUZIONE

NOTA: la richiesta è di verificare se il documento è valido però notiamo anche che il documento non è ben formato, in quanto ci sono tag aperti e non chiusi o chiusi e non aperti. Vedi i vari <tr> <td> e i due <p> che sono aperti ad inizio documento e non sono chiusi alla fine.

2.b Cosa succederebbe se si dichiarasse il documento di tipo STRICT?

SOLUZIONE

Se si dichiarasse di tipo STRICT non sarebbe valido in quanto nel tag table abbiamo gli attributi link e bgcolor che non sono permessi in STRICT, in quanto già presenti in CSS.

Esercizio 3

3a. Discutete l’importanza del ruolo del W3C per il buon funzionamento del Web. Fate alcuni esempi storici che hanno dimostrato l’utilità del suo ruolo.

SOLUZIONE

Il termine W3C significa "World Wide Web Consortium" ed è un consorzio di aziende del settore informatico che si occupa di stabilire standard di riferimento per il Web.
Questo consorzio, in altri termini, studia i sistemi ed i linguaggi per la trasmissione di dati attraverso il Web e ne ufficializza l'utilizzo attraverso raccomandazioni definitive.
Propose le specifiche del CSS (cascading style sheet) che fu usato per la formattazione, mentre il contenuto doveva essere definito dal codice HTML.
Si decise poi di riformulare lo standard di HTML 4.0 secondo lo standard di XML(linguaggio di marcatura pensato per descrivere i dati e indipendente dalla piattaforma, dal software e dal hardware) che venne definito dal W3C nel 1997.
L'XSLT è diventato uno standard W3C dal 1999. Il suo obiettivo principale è rendere possibile la trasformazione di un documento XML in un altro documento.

3b. Spiegate la differenza tra XPath XLink e XPointer.

SOLUZIONE

  • XLink: è un vocabolario XML per definire link in modo più ricco dell’ancora HTML. Ha una sua DTD e può essere usato dalle applicazioni che la supportano.
  • XPointer: è uno standard che permette di riferirsi o localizzare frammenti di XML, pensato per essere associato a XLink. Può essere definito come URI+XPath.
  • XPath: è una sintassi che consente di riferirsi a parti di documenti XML (sia associati che non a un XML Schema o DTD). Generalmente viene inserito in un documento XML come valore di un attributo.
    XPath vede un documento come un albero di nodi:
    • nodo radice: contiene l’intero documento e informazioni relative all'intero documento.
    • nodi elemento: ha come padre un altro elemento o il nodo radice e come figli eventuali sottonodi, testo e istruzioni contenuti al suo interno.
    • nodi attributo: ha come padre un altro elemento, ma non si considera figlio di quell’elemento.
    • nodi testo
    • nodi commento
    • nodi per le processing instructions
    • nodi namespaces

Esercizio 4

Descrittore del deployment di una servlet: spiegare a cosa serve e come è fatto, specificando quali sono le sezioni principali del descrittore e le funzioni di ogni sessione.

SOLUZIONE

Per tutte le servlet si deve effettuare il deploying perché siano disponibili agli utenti.
Il descrittore del deployment, web.xml, descrive una applicazione Web, che può contenere servlet, JSP, classi Java, JAR, file HTML...
Deve contenere tutte le definizioni necessarie per l’applicazione, tra cui:

  • lista di servlet: utilizza l'elemento servlet
  • URL associata all'invocazione di ogni servlet: utilizza l'elemento servlet-mapping, che quindi associa una URL alla servlet.

L'elemento <servlet> è formato da: <servlet>

 <servlet-name> il nome della servlet
 <servlet-class> il nome del file class compilato

</servlet>

Mentre l'elemento <servlet-mapping> richiede:

  • <servlet-name>: elemento che identifica il nome della servlet precedentemente dichiarata.
  • <url-pattern>: elemento che definisce il pattern usato per determinare quale servlet debba essere invocata.

Utilizzando Tomcat il file web.xml deve essere inserito nella cartella WEB-INF.

Esercizio 5

Servlet e JSP. Confrontare queste due tecnologie, specificando il rapporto e le differenze esistenti.

SOLUZIONE

Sono tecnologie complementari per la produzione di contenuti dinamici.
Il funzionamento delle JSP è simile a quello delle Servlet.
Le JSP sono codice HTML + frammenti di codice Java, mentre le Servlet sono formate solo da codice Java. Il container esegue automaticamente il deploy della JSP con la corrispondente URL.
Ogni JSP inoltre viene automaticamente tradotta in Servlet dal container, ciò che viene eseguito quindi è sempre una Servlet, ma il codice Java è prodotto automaticamente dal container.

Esercizio 6

Commentare dettagliatamente il seguente pezzo di codice:

<%! int pagecount = 0; 
void addcount() { 
        pagecount++; 
} 
%> 

<html> 
 <head> 
   <title> PageCounter.jsp </title> 
 </head> 
 <body> 
   <% addcount(); %> 
    Pagina visitata <%= pagecount %> volte 
 </body> 
</html>

SOLUZIONE

Il pezzo di codice sopra riportato crea una pagina jsp in cui viene detto quante volte la pagina stessa è stata visitata. Viene inizializzata la variabile pagecount e iniziato il metodo addcount, poi inizia il codice html per generare la pagina.
All'interno del body della pagina stessa viene invocato tramite uno scriptlet il metodo addcount poi visualizzata la scritta con quante pagine sono state visitate tramite l'espressione =pagecount che dà come output il valore di pagecount.
Da ricordare che la parte di codice (la dichiarazione jsp) al di fuori del body di html non è threadsafe e quindi non possono essere effettuati controlli sulla variabile.

6a. Cos’è un dichiarazione in JSP?

SOLUZIONE

Le JSP sono formate da codice HTML + frammenti di codice Java. Le componenti di una JSP sono gli elementi ed i template.
Gli elementi contengono gli elementi di script (utilizzati per rendere una pagina dinamica) che contengono a loro volta le dichiarazioni.
Le dichiarazioni sono frammenti di codice Java utilizzato per dichiarare nuovi metodi o classi o variabili globali. Definite da: <%! codice Java %>. Vengono eseguite PRIMA di _jspService().

6b. Che conseguenza comporta il fatto che una dichiarazione venga eseguita prima di _jspService()?

SOLUZIONE

Tutto ciò che è prima di _jspService(), non è threadesafe, in quanto viene eseguito al di fuori del body di html, ciò vuol dire che non ci sono controlli sulle variabili.


Torna alla pagina di Tecnologie Web