Laboratorio di Tecnologie Web Laurea in Scienze e Tecnologie Multimediali Docente: Carlo Drioli 17 marzo 2014 1 XML e DTD: esercizi introduttivi Esercizio 1.1 Si crei un file address book.xml contenente il seguente codice XML, che rappresenta una collezione di indirizzi: <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE address-book SYSTEM "address-book.dtd"> <address-book> <entry> <name>Homer Simpson</name> <tel>+1-039-1234567</tel> <email ref="mailto:[email protected]"/> </entry> <entry> <name>Barney Gamble</name> <address> <street>Moe Street</street> <region>SP</region> <postal-code>99999</postal-code> <locality>Springfield</locality> <country>US</country> </address> <tel preferred="true">+1-039-77777777</tel> <tel>+1-039-77777888</tel> <email ref="mailto:[email protected]"/> </entry> </address-book> 1. Si crei un file address book.dtd contenente una definizione di tipo documento (DTD) coerente con il documento XML. Soluzione: 1 <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT <!ATTLIST <!ATTLIST <!ATTLIST address-book (entry)+> entry (name,address?,tel+,email*)> name (#PCDATA) > address (street,region,postalcode,locality,country)> tel (#PCDATA) > email EMPTY > street (#PCDATA) > region (#PCDATA) > postalcode (#PCDATA) > locality (#PCDATA) > country (#PCDATA) > tel preferred (true|false) "false"> email ref CDATA #REQUIRED> entry ident ID #REQUIRED> 2. Si validi il file XML secondo il DTD proposto, usando il tool di validazione presente all’indirizzo: http://validator.w3.org/check . Esercizio 1.2 Siano dati i seguenti DTD: <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT records (cd|dvd|tape|lp)+> cd (#PCDATA) > dvd (#PCDATA) > tape (#PCDATA) > lp (#PCDATA) > e <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT records (cd,dvd,tape,lp)+> cd (#PCDATA) > dvd (#PCDATA) > tape (#PCDATA) > lp (#PCDATA) > Si costruiscano degli esempi di documento XML per ciascuna delle seguenti specifiche: • il documento deve contenere almeno uno di ognuno degli elementi cd, dvd, tape, lp, e deve essere valido rispetto ad entrambi i DTD. Soluzione: <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE records SYSTEM "records.dtd"> <records> <cd>il mio primo cd</cd> <dvd>il mio primo dvd</dvd> <tape>la mia prima cassetta</tape> <lp>il mio primo lp</lp> </records> • il documento deve contenere almeno uno di ognuno degli elementi cd, dvd, tape, lp, e deve essere valido rispetto al primo DTD ma non valido rispetto al secondo. Soluzione: 2 <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE records SYSTEM "records.dtd"> <records> <lp>il mio primo lp</lp> <tape>la mia prima cassetta</tape> <dvd>il mio primo dvd</dvd> <cd>il mio primo cd</cd> </records> • il documento deve contenere tutti gli elementi cd, dvd, tape, lp, e almeno una ripetizione (es., due cd). Deve inoltre essere valido rispetto ad entrambi i DTD. Soluzione: <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE records SYSTEM "records.dtd"> <records> <cd>il mio primo cd</cd> <dvd>il mio primo dvd</dvd> <tape>la mia prima cassetta</tape> <lp>il mio primo lp</lp> <cd>il mio secondo cd</cd> <dvd></dvd> <tape></tape> <lp></lp> </records> • il documento deve contenere solo alcuni fra gli elementi cd, dvd, tape, lp, eventualmente ripetuti: dire rispetto a quale dei due DTD il documento `e valido. Si modifichi infine il secondo DTD in modo che possano esserci pi` u ripetizioni per un elemento, fermo restante il vicnolo di ordinamento imposto dalla lista. Es: <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE records SYSTEM "records.dtd"> <records> <cd>il mio primo cd</cd> <dvd>il mio primo dvd</dvd> <dvd>il mio secondo dvd</dvd> <dvd>il mio terzo dvd</dvd> <lp>il mio primo lp</lp> </records> Soluzione: <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT records (cd*,dvd*,tape*,lp*)> cd (#PCDATA) > dvd (#PCDATA) > tape (#PCDATA) > lp (#PCDATA) > 3 Esercizio 1.3 Si faccia riferimento a un’applicazione per gestire la programmazione degli eventi di una struttura per la ristorazione. Si vuole progettare un documento XML e relativo DTD che modellino eventi quali matrimoni, rinfreschi, feste di compleanno, cene a tema, etc. 1. Si crei un file XML evento.xml contenente un elemento radice ”evento” ed un elemento figlio ”titolo” contenente un nome per l’ evento (di tipo PCDATA), ad esempio ”Pranzo di Natale”. Si crei anche il relativo DTD e si validi il file XML con i tool di validazione. Soluzione: <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE evento [ <!ELEMENT evento (titolo)> <!ELEMENT titolo (#PCDATA) > ]> <evento> <titolo>Pranzo di Natale</titolo> </evento> 2. Ora si arricchisca il documento XML con i seguenti elementi, modificando di conseguenza anche la definizione di DTD (quando non diversamente specificato, gli elementi devono apparire una sola volta nel documento): • data, ora, luogo, prezzo e descrizione. L’elemento prezzo abbia un attributo include che pu`o valere ”bevande escluse” o ”bevande incluse”. • un elemento contatto del responsabile dell’organizzazione, composto a sua volta da nome, cognome, tel. ed email. • un elemento artista con due nodi figli, nome e genere, che pu`o non esserci o esserci una sola volta. Soluzione: <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE evento [ <!ELEMENT evento (titolo,data,ora,luogo,prezzo,descrizione,contatto,artista?)> <!ELEMENT titolo (#PCDATA) > <!ELEMENT data (#PCDATA) > <!ELEMENT ora (#PCDATA) > <!ELEMENT luogo (#PCDATA) > <!ELEMENT prezzo (#PCDATA) > <!ELEMENT descrizione (#PCDATA) > <!ELEMENT contatto (nome,cognome,tel,email) > <!ELEMENT nome (#PCDATA) > <!ELEMENT cognome (#PCDATA) > <!ELEMENT tel (#PCDATA) > <!ELEMENT email (#PCDATA) > <!ELEMENT artista (nome,genere) > <!ELEMENT genere (#PCDATA) > 4 <!ATTLIST prezzo include (bevande_escluse|bevande_incluse) #REQUIRED> ]> <evento> <titolo>Pranzo di Natale</titolo> <data>25 dicembre</data> <ora>13.00</ora> <luogo>Sala principale</luogo> <prezzo include="bevande_incluse">20.0</prezzo> <descrizione>Da non perdere.</descrizione> <contatto> <nome>Direzione</nome> <cognome>n.a.</cognome> <tel>1-020-333</tel> <email>[email protected]</email> </contatto> </evento> Esercizio 1.4 Si aggiunga all’esercizio precedente un elemento menu, composto a sua volta da un elemento antipasto, un elemento primi, un elemento secondi e un elemento dessert. Ognuno di questi abbia due elementi figli, pietanza e bevanda, entrambi con un attributo tipo per specificare il tipo di pietanza (”carne”, ”pesce”, etc.) o di bevanda (”acqua”, ”rosso”, ”bianoo”, ”amaro”, etc.). Sia pietanza che bevanda possono comparire una o pi` u volte. 5 2 (X)HTML e Form per l’input di dati Esercizio 1.5 Si scriva un semplice documento (X)HTML che realizza un interfaccia per l’invio delle seguenti informazioni di testo: nome, et`a, email, password (N.b: per l’attributo name dei rispettivi elementi input, si usino i valori ”nome”, ”age”, ”email”, ”password”). In prima istanza, si lascino vuoti gli attributi action e method del tag form. In un secondo momento, si assegnino all’attributo action il valore: "http://users.dimi.uniud.it/~carlo.drioli/WebTech/elabora.php" e all’attributo method il valore "post". Soluzione: <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <title>Form example</title> </head> <body> <p> Inserisci i tuoi dati: </p> <form action="http://users.dimi.uniud.it/~carlo.drioli/WebTech/elabora.php" method="post" id="formsemplice"> <p> <label for="Nome">Nome</label> <input type="text" id="Nome" name="nome" size="10"/> </p> <p> <label for="age">Eta’</label> <input type="text" id="age" name="age" size="10" maxlength="3"/> </p> <p> <label for="email">Email</label> <input type="text" id="email" name="email" size="20"/> </p> <p> <label for="password">Password</label> <input type="password" id="password" name="password" size="20"/> </p> <p> <input type="submit" value="Spedisci" /> <input type="reset" value="Cancella" /> </p> </form> </body> </html> Esercizio 1.6 Si aggiunga al documento (X)HTML precedente, il supporto per l’invio di testo su pi` u 6 righe usando il costrutto textarea (N.b: per l’attributo name si usi il valore ”commento”). Soluzione: ... <p> <label for="comment_id">Un commento</label> <textarea cols="70" rows="7" name="commento" id="comment_id"></textarea> </p> ... Esercizio 1.7 Si aggiunga un elemento ”radio button” per la selezione del genere (maschio/femmina) (N.b: per l’attributo name dell’elemento input, si usi il valore ”genere”). Soluzione: ... <p> Maschio<input type="radio" name="genere" value="M"/> Femmina<input type="radio" name="genere" value="F"/> </p> ... Esercizio 1.8 Si aggiunga un elemento ”Checkbox” per la selezione multipla di interessi personali (cucina, sport, libri, viaggi) (N.b: per l’attributo name dei rispettivi elementi input, si usino i valori ”interessi[a]”, ”interessi[b]”, ”interessi[c]”, ”interessi[d]”). Soluzione: ... <p> Interessi personali: <input name="interessi[a]" <input name="interessi[b]" <input name="interessi[c]" <input name="interessi[d]" </p> ... type="checkbox" type="checkbox" type="checkbox" type="checkbox" value="cucina" /> cucina value="sport" /> sport value="libri" /> libri value="viaggi" /> viaggi Esercizio 1.9 Si aggiunga un elemento ”select” per fornire un men` u a scelta singola o multipla per la voce 7 ”professione” (studente, dipendente, lavoratore autonomo, artigiano) (N.b: per l’attributo name dell’elemento select si usi il valore ”professione”). Soluzione: ... <p> La tua professione: <select name="professione" multiple="multiple"/> <option value="studente">Studente</option> <option value="dipendente">Dipendente</option> <option value="autonomo">Lavoratore Autonomo</option> <option value="artigiano">Artigiano</option> </select> </p> ... 8
© Copyright 2024 ExpyDoc