Swappa : Uni / Appello d'esame di Tecnologie Web - 15/07/2008
Creative Commons License

Torna alla pagina di Tecnologie Web


 :: Appello d'esame di Tecnologie Web - 15/07/2008 ::

Esercizio 1

Considerate la seguente istanza XML:

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

<vxml version="1.0"> 
 <form id="getChoice"> 
  <var# name="noDialogProblems" expr="0"/> 
  <field name="choiceVoice" type="number"> 
   <prompt count="1" timeout="4s">Please look at the list of flights. From that 
list, what is the flight number you prefer?</prompt> 
   <prompt count="2" timeout="4s">Please take you time. I will wait for up to 1 
minute for you to make up your mind.</prompt> 
   <catch event="nomatch noinput"> 
    <goto nextitem="resultIM"/> 
   </catch> 
   <help> 
    <prompt>Please say the flight number.</prompt> 
   </help> 
   <filled> 
    <prompt>Thank you for choosing flight <value class="digits" 
expr="choiceVoice"/>.</prompt> 
    <goto next="#topMenu"> 
   </filled> 
  </field> 
 </form> 
</vxml> 

1.a Nel documento esistono due errori che lo renderebbero non ben formato. Individuateli e commentateli.

SOLUZIONE

1.b Scrivete un schema che renderebbe valido questo documento.

SOLUZIONE

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

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

<xsd:element name="vxml">
 <xsd:complexType>
  <xsd:sequence>
   <xsd:element ref="form" maxOccurs="unbounded"/>
  </xsd:sequence>
  <xsd:attribute name="version" type="xsd:double"/>
 </xsd:complexType>
</xsd:element>

<xsd:element name="form">
 <xsd:complexType>
  <xsd:sequence>
   <xsd:element name="var">
    <xsd:complexType>
     <xsd:attribute name="name" type="xsd:string"/>
     <xsd:attribute name="expr" type="xsd:int"/>
    </xsd:complexType>
   </xsd:element>
   <xsd:element ref="field"/>
  </xsd:sequence>
  <xsd:attribute name="id" type="xsd:string"/>
 </xsd:complexType>
</xsd:element>

<xsd:element name="field">
 <xsd:complexType>
  <xsd:sequence>
   <xsd:element name="prompt" maxOccurs="unbounded">
    <xsd:complexType mixed="true">
     <xsd:attribute name="count" type="xsd:int"/>
     <xsd:attribute name="timeout" type="xsd:string"/>
    </xsd:complexType>
   </xsd:element>
   <xsd:element ref="catch"/>
   <xsd:element ref="help"/>
   <xsd:element ref="filled"/>
  </xsd:sequence>
  <xsd:attribute name="name" type="xsd:string"/>
  <xsd:attribute name="type" type="xsd:string"/>
 </xsd:complexType>
</xsd:element>

<xsd:element name="catch">
 <xsd:complexType>
  <xsd:sequence>
   <xsd:element name="goto">
    <xsd:complexType>
     <xsd:attribute name="nextitem" type="xsd:string"/>
    </xsd:complexType>
   </xsd:element>
  </xsd:sequence>
  <xsd:attribute name="event" type="xsd:string"/>
 </xsd:complexType>
</xsd:element>

<xsd:element name="help">
 <xsd:complexType>
  <xsd:sequence>
   <xsd:element name="prompt" type="xsd:string"/>
  </xsd:sequence>
 </xsd:complexType>
</xsd:element>

<xsd:element name="filled">
 <xsd:complexType>
  <xsd:sequence>
   <xsd:element ref="prompt"/>
   <xsd:element name="goto">
    <xsd:complexType>
     <xsd:attribute name="next" type="xsd:string"/>
    </xsd:complexType>
   </xsd:element>
  </xsd:sequence>
 </xsd:complexType>
</xsd:element>

<xsd:element name="prompt">
 <xsd:complexType mixed="true">
  <xsd:sequence>
   <xsd:element name="value">
    <xsd:complexType>
     <xsd:attribute name="class" type="xsd:string"/>
     <xsd:attribute name="expr" type="xsd:string"/>
    </xsd:complexType>
   </xsd:element>
  </xsd:sequence>
 </xsd:complexType>
</xsd:element>
</xsd:schema>

Esercizio 2

Considerate la seguente istanza XML e le espressioni Xpath sottostanti:

<?xml version="1.0"?> 
<?xml-stylesheet type="text/xsl" href="myfile.xsl" ?> 
<bookstore speciality="novel"> 
  <book style="textbook"> 
    <author> 
      <first-name>Mary</first-name> 
      <last-name>Bob</last-name> 
      <publication>Selected Short Stories of 
        <first-name>Mary</first-name> 
        <last-name>Bob</last-name> 
      </publication> 
    </author> 
    <editor> 
      <first-name>Britney</first-name> 
      <last-name>Bob</last-name> 
    </editor> 
    <price>55</price> 
  </book> 
  <magazine style="glossy" frequency="monthly"> 
    <price>2.50</price> 
    <subscription price="24" per="year"/> 
  </magazine> 
  <book style="novel" id="myfave"> 
    <author> 
      <first-name>Toni</first-name> 
      <last-name>Bob</last-name> 
      <degree from="Trenton U">B.A.</degree> 
      <degree from="Harvard">Ph.D.</degree> 
      <award>Pulitzer</award> 
      <publication>Still in Trenton</publication> 
      <publication>Trenton Forever</publication> 
    </author> 
    <price intl="Canada" exchange="0.7">6.50</price> 
    <excerpt> 
      <p>It was a dark and stormy night.</p> 
      <p>But then all nights in Trenton seem dark and 
      stormy to someone who has gone through what 
      <emph>I</emph> have.</p> 
      <definition-list> 
        <term>Trenton</term> 
        <definition>misery</definition> 
      </definition-list> 
    </excerpt> 
  </book> 
</bookstore> 

Xpath1: book[/bookstore/@specialty=@style] 
Xpath2: book/*/last-name 
Xpath3: @* 
Xpath4: my:book 
Xpath5: book/author[last()] 
Xpath6: author[* = "Bob"] 

2.a Listate per ogni espressione Xpath i nodi XML ritornati.

SOLUZIONE

2.b Scrivete un tipo di espressione Xpath non proposta nell’esercizio.

SOLUZIONE

Esercizio 3

3.a Illustrate brevemente le principali tappe della storia del WWW.

SOLUZIONE

Il WWW è un sistema per la presentazione a schermo di documenti ipertestuali e multimediali.
1958 Eisenhower chiede al congresso i fondi per ARPA, la nuova agenzia americana per lo sviluppo scientifico.
1967 nasce ARPAnet che interconnette 4 università americane.
1989 un gruppo di ricercatori del CERN di Ginevra riceve l'incarico di realizzare un meccanismo per la diffusione rapida di articoli e appunti tra i fisici del centro.
Tim Berners-Lee, Robert Cailliau identificarono Internet. la navigazione ipertestuale, come elemento chiave per questo meccanismo.
1991 alla conferenza sugli ipertesti, Berners-Lee e Cailliau mostrarono il primo prototipo della loro applicazione, realizzata in client-server su architettura NeXT.
I principali concorrenti su Internet erano:

Invece i principali concorrenti come applicazioni ipertestuali erano:

Come abbiamo già visto il punto di forza che ha portato alla "vittoria" del WWW è la scalabilità.

3.b Spiegate la differenza tra i fogli di stile CSS e XSL.

SOLUZIONE

XSL(eXtensible Stylesheet Language) è uno standard per definire fogli di stile XML in altri formati.
I possibili usi sono:

Un foglio di stile XSL è formato da un insieme di template. Ogni elemento <xsl:template> contiene delle regole da applicare quando uno specifico nodo viene trovato.

Il CSS(Cascading Style Sheets) è una tecnica che permette di fissare gli stili (tipo di carattere, colori e spaziature) da applicare ai documenti XHTML.
Fu introdotto per separare il contenuto e la presentazione per ottenere una maggior leggibilità del codice, la facilità nella manutenzione e la personalizzazione dell’output.

Esercizio 4

Cookies: cosa sono, vantaggi e svantaggi.

SOLUZIONE

I Cookie sono dei file di testo non interpretabili lasciati in consegna ad un client che può grazie ad essi mantenere lo stato di precedenti connessioni.
Alla prima richiesta di un client, il server fornisce la risposta più un header aggiuntivo, il cookie, con dati arbitrari, e con la specifica di usarlo per ogni successiva richiesta.
Prima di effettuare ogni richiesta al server, il client verifica se ha sul suo disco un cookie di quel server; se lo trova ne copia il contenuto nell'header della richiesta HTTP.
In sostanza i cookie permettono di simulare una sessione.

Esempi di campi contenuti in un cookie:
Comment: una stringa leggibile di descrizione del cookie.
Domain: il dominio per cui il cookie è valido.
Max-Age: la durata di validità del cookie in secondi.
Path: l'URI per il quale il cookie è valido.
Secure: la richiesta che il client contatti il server usando soltanto un meccanismo sicuro(HTTPS).
Version: la versione della specifica a cui il cookie aderisce.


Lo svantaggio dei cookie è che possono portare ad una violazione della privacy e, nel caso si riuscisse a leggere i cookie di un determinato utente, provocare spamming.
Nota: i cookie essendo file di testo non possono essere portatori di virus, perché non possono essere eseguiti, cosa necessaria per qualsiasi codice dannoso.

Esercizio 5

Spiegare il ciclo di vita di una servlet.

SOLUZIONE

Il ciclo di vita di una servlet è caratterizzata da 4 fasi:
1. Caricamento:
Una servlet può essere caricata quando:

Per caricare una servlet, il server ha bisogno di conoscere il classname della servlet, cioè il nome della servlet richiesto dal browser. Se presente anche il nome del package.nomeDellaServlet

2. Inizializzazione:
Consiste nella creazione e inizializzazione delle risorse che verranno utilizzate per rispondere alle richieste. Il container invoca il metodo init(), prima di poter servire richieste e produrre risposte . Questo metodo è definito dall'interfaccia javax.servlet.Servlet', che ovviamente ogni servlet dovrà implementare.

3. Servizio:
Durante questa fase la servlet:

Il metodo che entra in gioco è service()(anche questo definito dall'interfaccia javax.sevlet.Servlet), invocato per ogni richiesta in arrivo, da thread del processo container.
Il metodo service() richiede due parametri che rappresentano la richiesta da servire e la risposta da produrre, questi due parametri sono identificati dai due oggetti Java javax.servlet.ServletRequest e javax.servlet.ServletResponse.

Nella fase di servizio vengono utilizzati vari metodi HTTP, i due principali sono doGet() e doPost(), la differenza che intercorre tra i due è sempre la stessa:
nel primo caso le informazioni vengono accodate sotto forma di query string(? seguito dalla coppia nome=valore) alla URL, con eventuale perdita di informazione se il web server limita i caratteri della URL a 255.
Nel secondo caso non si può avere perdita di informazione perché la risposta viene inviata nel body e non nella URL.

4. Deattivazione:
Durante questa fase una servlet viene rimossa dall'ambiente di esecuzione rilasciando ogni risorsa creata per gestire le richieste.
Il container per deattivare la servlet invoca il metodo destroy(). Il metodo fa sempre parte dell'interfaccia javax.servlet.Servlet.

Esercizio 6

Spiegare il funzionamento e commentare dettagliatamente il seguente codice.

Attach:esercizio6.txt

Oh non riuscivo a mettere su il testo dell'esercizio senza che mi sfasasse la pagina!

SOLUZIONE

Se il parametro titolo è vuoto appare a video la scritta riempire il campo. Successivamente viene incluso li file cinema.xml, ne viene effettuato il parsing, dal quale vengono estratti il titolo del film richiesto dalla variabile test e la locandina dello stesso che verranno visualizzati a video. Se nessun film riporta quel titolo verrà visualizzata a video la scritta "Spiacente, nessun film trovato il titolo" e visualizzato quale titolo era stato cercato.


Torna alla pagina di Tecnologie Web

(Printable View of http://www.swappa.it/wiki/Uni/TemiEsameTW09)