7 Elaborazione di dati XML con PHP SAX (Simple API for XML)

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "7 Elaborazione di dati XML con PHP SAX (Simple API for XML)"

Transcript

1 7 Elaborazione di dati XML con PHP Nei precedenti capitoli è stata illustrata l elaborazione di dati XML sul lato client utilizzando lo standard DOM e il linguaggio XSLT. Verrà ora descritto come elaborare dati XML sul lato server utilizzando strumenti quali SAX, DOM e SimpleXML. In linea di massima, esistono due modi per gestire l elaborazione di dati XML: lo standard DOM (Document Object Model), che è stato già illustrato, e la tecnologia SAX (Simple API for XML). Lo standard DOM consente di creare una struttura ad albero gerarchica alla quale è possibile fare riferimento ripetutamente. Con SAX, i documenti XML vengono gestiti come una serie di eventi, un evento per ciascun elemento o attributo, e la risposta a questi eventi viene fornita durante l analisi del documento. Naturalmente, ogni approccio presenta i propri vantaggi e svantaggi. Il modello DOM, ad esempio, crea strutture ad albero che richiedono un uso esteso della memoria, ma una volta create, fornisce numerosi strumenti per spostarsi, elaborare e manipolare queste strutture ad albero. La tecnologia SAX consente una gestione lineare dei documenti XML, quindi si tratta di una tecnologia meno flessibile, ma che è anche più semplice e rapida da apprendere. PHP 5.0 fornisce un terzo approccio alla gestione dei documenti XML, un approccio che nel corso di questo manuale è stato già adottato. SimpleXML crea una struttura di oggetti gerarchica simile al modello DOM. La differenza sta nel fatto che questa struttura viene ottimizzata per l estrazione e l elaborazione delle informazioni, mentre il modello DOM fornisce una API più efficace, per un uso più generale, per manipolare la composizione della struttura ad albero.

2 Capitolo 7: Elaborazione di dati XML con PHP In questo capitolo verranno illustrati, nell ordine riportato, SAX, DOM e SimpleXML. Al termine, si disporrà di una buona conoscenza del modo in cui è possibile utilizzare le diverse API per gestire documenti XML. Utilizzo di SAX Si immagini di creare un documento XML, quindi di scomporlo nelle singole parti e disporre queste parti come in una catena di montaggio. In tal modo, è possibile vedere istruzioni di elaborazione, tag di inizio, contenuto, tag di fine e così via, ossia tutti gli elementi che compongono il documento sistemati all interno di un unica lunga riga. Si preme un pulsante e il documento comincia a spostarsi lungo la catena di montaggio sotto l attenta sorveglianza di un omino con un megafono. I singoli elementi del documento (un commento, un entità, un istruzione di elaborazione oppure un blocco di testo) scorrono l uno dopo l altro e la loro presenza viene annunciata di volta in volta dall omino con il megafono. Questo è più o meno ciò che accade con il parser SAX. Sfortunatamente, per poter fare qualcosa di interessante con SAX, occorre creare manualmente funzioni personalizzate per gestire i tag di inizio, i tag di fine e i dati di tipo character, eseguendo un azione immediata in risposta a ciascun di essi. Se si desidera memorizzare informazioni dal documento in una struttura dati temporanea da utilizzare successivamente, è bene ricordare che SAX non esegue questa operazione. Non per altro si tratta di un API semplice per XML! E allora, per quale motivo si dovrebbe utilizzare questo parser? L uso di SAX risulta conveniente nelle seguenti situazioni: Si sta gestendo un documento XML di grandi dimensioni che se trasformato in una struttura DOM richiederebbe una quantità eccessiva di memoria. Occorre attivare ed eseguire il parser rapidamente. Si sta eseguendo un attività di elaborazione limitata oppure si sta eseguendo un tipo di elaborazione molto semplice e lineare (ad esempio, la conversione di determinati elementi XML in elementi HTML). Non occorre modificare il documento XML originale. Nelle circostanze appropriate come, ad esempio, un documento XML di grandi dimensioni, è sicuramente più opportuno utilizzare SAX che non DOM. Tuttavia, è importante comprendere che in alcuni casi, che verranno illustrati a breve, è più appropriato utilizzare una struttura ad albero. 164

3 Utilizzo di SAX Il parser SAX predefinito per PHP è Expat[1], una libreria C affidabile e testata, che per impostazione predefinita viene abilitata nella maggior parte delle installazioni PHP. Non occorre installare altre librerie: tutto è già stato creato in PHP. Di seguito ne viene descritto l uso analizzando i singoli passi di una breve esercitazione. Il primo passo consiste nel creare un semplice file XML per l elaborazione. Il file che verrà utilizzato in questa sezione è il seguente: <?xml version= 1.0 encoding= iso ?> <keywords> <keyword>xml</keyword> <keyword>php</keyword> <keyword>perl</keyword> <keyword>javascript</keyword> <keyword>asp</keyword> </keywords> Esempio 7.1. keyword-data.xml A questo punto, è possibile creare del codice PHP. Tuttavia, sarebbe opportuno, prima di iniziare, avere già un idea del risultato finale che si desidera conseguire. In questo caso specifico, si desidera trasformare questo elenco di elementi di parole chiave in un elenco puntato HTML, come illustrato nella Figura 7.1, Elenco di parole chiave elaborato mediante SAX. Figura 7.1. Elenco di parole chiave elaborato mediante SAX [1] 165

4 Capitolo 7: Elaborazione di dati XML con PHP Creazione di gestori Prima di poter proseguire, occorre creare funzioni che gestiscano i tag di inizio, i tag di fine e i dati di tipo character. Queste funzioni verranno richiamate dal parser SAX mentre elabora il documento XML. Il primo gestore, a cui verrà assegnato il nome start_element, sarà responsabile della gestione di tutti i tag di inizio contenuti nel documento XML. È possibile scegliere per questo gestore il nome che si desidera; i nomi assegnati ai singoli gestori verranno poi comunicati a PHP. La funzione gestore per i tag di inizio deve accettare tre argomenti: un riferimento al parser SAX (che verrà creato a breve), il nome dell elemento il cui tag di inizio è stato rilevato e un array di attributi dell elemento (e dei relativi valori). Come è possibile notare di seguito, in questo caso il gestore non è altro che un istruzione switch che ricerca un nome di un tag XML e che risponde emettendo il codice HTML appropriato. Esempio 7.2. saxdemo.php (estratto) function start_element($parser, $element_name, $element_attrs) { switch ($element_name) { case KEYWORDS : echo <h1>keywords</h1><ul> ; break; case KEYWORD : echo <li> ; break; In SAX tutti i nomi dei tag sono maiuscoli Per impostazione predefinita, il parser SAX in PHP esegue un processo chiamato case folding, in cui qualsiasi carattere minuscolo contenuto nei nomi degli attributi o dei tag viene sostituito con l equivalente maiuscolo. Questo è il motivo per il quale i nomi degli elementi KEYWORDS e KEYWORD in questo esempio sono tutti in maiuscolo. Qualora si desideri disabilitare il case-folding, il manuale di PHP contiene informazioni[2] su come eseguire questa operazione. [2] 166

5 Creazione del parser ed elaborazione del documento XML Al prossimo gestore verrà assegnato il nome end_element. Questo gestore viene richiamato per rispondere ai tag di fine presenti nel documento e utilizza la stessa istruzione switch che è stata introdotta precedentemente per emettere il codice HTML appropriato quando i singoli tag di fine vengono rilevati. function end_element($parser, $element_name) { switch ($element_name) { case KEYWORDS : echo </ul> ; break; case KEYWORD : echo </li> ; break; Esempio 7.3. saxdemo.php (estratto) Infine, occorre trovare un modo per gestire i dati di tipo character. A tale scopo, viene creata una funzione character_data che visualizzi il valore di ciascun nodo che rileva. È bene ricordare che in XML, con dati di tipo character si indica tutto il testo che non sia markup; questo gestore visualizza tutte le informazioni che si trovano tra i tag di inizio e di fine di un elemento. function character_data($parser, $data) { echo htmlentities($data); Esempio 7.4. saxdemo.php (estratto) Dopo aver definito le funzioni personalizzate per la gestione del contenuto e dei tag, è necessario creare un istanza del parser. Creazione del parser ed elaborazione del documento XML I passi successivi sono relativamente semplici, anche perché gran parte del lavoro viene coordinata dalle funzioni di gestione appena create. Tutto ciò che occorre fare è creare il parser e indicargli quali funzioni sono state create per gestire i tag di inizio, i tag di fine e i dati di tipo character: Esempio 7.5. saxdemo.php (estratto) $parser = xml_parser_create(); xml_set_element_handler($parser, start_element, end_element ); xml_set_character_data_handler($parser, character_data ); 167

6 Capitolo 7: Elaborazione di dati XML con PHP Dopo aver fatto ciò, è possibile utilizzare la funzione PHP fopen standard per aprire il documento XML: $fp = fopen( keyword-data.xml, r ) or die ( Cannot open keyword-data.xml! ); Esempio 7.6. saxdemo.php (estratto) Con il documento XML, è possibile utilizzare un semplice loop while per leggere blocchi di codice gestibili (4 KB è una dimensione ragionevole) ed eseguirli attraverso il parser con la funzione xml_parse. In caso di errore, viene utilizzata la funzione die di PHP per visualizzare il messaggio di errore fornito da xml_error_string sulla base del codice di errore fornito da xml_get_error_code. xml_get_current_line_number viene utilizzato per puntare alla riga in cui si è verificato l errore. Esempio 7.7. saxdemo.php (estratto) while ($data = fread($fp, 4096)) { xml_parse($parser, $data, feof($fp)) or die(sprintf( XML ERROR: %s at line %d, xml_error_string(xml_get_error_code($parser)), xml_get_current_line_number($parser))); Una volta terminato il loop, liberare il parser utilizzando xml_parser_free. xml_parser_free($parser); Esempio 7.8. saxdemo.php (estratto) Per assimilare quanto illustrato finora, è opportuno ricapitolare tutte le singole attività che sono state completate: 1. Creazione di gestori per tag di inizio, tag di fine e dati di tipo character. 2. Avvio del parser. 3. Registrazione dei gestori personalizzati con il parser. 4. Apertura del file XML. 5. Esecuzione di un loop nel file, inviando singoli blocchi di dati attraverso il parser. 6. Utilizzo della funzione di rilevazione errori incorporata per identificare eventuali problemi. 7. Disimpegno del parser una volta completate tutte le operazioni. Come è possibile notare, l approccio SAX è molto semplice e chiaro. Tuttavia, non presenta alcune delle più efficaci funzioni che sono invece disponibili con altri approcci come, ad esempio, il modello DOM. 168

7 Utilizzo di DOM Utilizzo di DOM In questa sezione verrà illustrato come opera la funzionalità DOM in PHP. Il modello DOM è una tecnologia robusta e affidabile che consente di gestire svariate situazioni. Infatti, il principale punto di forza di questo standard è proprio la sua grande flessibilità. Per quanto concerne gli svantaggi, invece, è possibile citare l estrema complessità, la vastità e il fatto che, quando si carica in memoria un documento di grandi dimensioni, può addirittura bloccare le risorse. L utilizzo di DOM sul lato client è stato già illustrato. Per quanto riguarda il lato server, il DOM è un interfaccia standardizzata. Il modo più semplice per illustrare l utilizzo di DOM sul lato server consiste nel confrontarlo con le caratteristiche di SAX descritte nella sezione precedente. Come si è visto, è possibile utilizzare SAX per elaborare documenti XML in maniera molto lineare. La funzionalità DOM di PHP adotta un approccio differente. Carica un documento XML in memoria e lo converte in una propria struttura gerarchica di oggetti, fornendo due funzioni molto importanti che in SAX mancano. La prima è la possibilità di manipolare la struttura XML in memoria, consentendo l aggiunta, la rimozione, la modifica e la ridisposizione dei nodi. La seconda è quella che consente di esaminare il documento continuamente, con accesso casuale, e non solo in maniera lineare. Per un confronto dettagliato dei due approcci, utilizzare di nuovo il file XML contenuto nella sezione dedicata al parser SAX: <?xml version= 1.0 encoding= iso ?> <keywords> <keyword>xml</keyword> <keyword>php</keyword> <keyword>perl</keyword> <keyword>javascript</keyword> <keyword>asp</keyword> </keywords> Esempio 7.9. keyword-data.xml A questo punto, creare un parser DOM e caricare il file XML. Creazione di un parser DOM Per creare il parser, occorre creare un oggetto DOMDocument. Prima di utilizzarlo, è necessario disattivarne la funzione di gestione degli spazi vuoti per impedire che spazi, tab e interruzioni di riga tra i tab vengano gestiti come nodi di testo: 169

8 Capitolo 7: Elaborazione di dati XML con PHP $doc = new DOMDocument(); $doc->preservewhitespace = false; Esempio domdemo.php (estratto) Successivamente, occorre caricare il documento XML e assegnare un riferimento all elemento documento: $doc->load( keyword-data.xml ); $root = $doc->documentelement; Esempio domdemo.php (estratto) Recupero degli elementi Dopo aver creato il parser e caricato il file XML, è possibile richiamare informazioni dal documento. Uno dei modi più semplici di utilizzare il modello DOM consiste nel richiamare elementi servendosi del metodo getelementsbytagname. Il metodo getelementsbytagname consente di acquisire tutti gli elementi contenuti in un altro elemento che presentano un determinato nome. È possibile utilizzare questo metodo per acquisire tutti i singoli elementi keyword nel documento di esempio e memorizzarli in un array: $keywords = $root->getelementsbytagname( keyword ); Esempio domdemo.php (estratto) Dal momento che il metodo è stato richiamato sull elemento root del documento, l array $keywords contiene ora ogni singolo elemento keyword del documento XML. A questo punto è possibile eseguire un iterazione nell array $keywords per assicurarsi che ciascun elemento sia valido. Successivamente, è possibile eseguire attività di elaborazione su quell elemento. Esempio domdemo.php (estratto) echo <ul> ; foreach ($keywords as $kw) { echo <li>. htmlentities($kw->nodevalue). </li> ; echo </ul> ; Il risultato viene visualizzato nel browser Web come illustrato nella Figura 7.2, Esempio di elaborazione di parole chiave. 170

9 Recupero degli elementi Figura 7.2. Esempio di elaborazione di parole chiave Finora i risultati ottenuti sono praticamente gli stessi di quelli conseguiti con SAX. La differenza principale sta nell approccio: in SAX, è stato necessario creare funzioni personalizzate che gestissero i vari tipi di tag mano a mano che venivano rilevati dal parser; con DOM, invece, è possibile accedere ai diversi livelli della struttura gerarchica del nodo nell ordine desiderato. Per quanto concerne l uso di XML e DOM, vi è ancora un altro aspetto da sottolineare. Se si desidera modificare ciò che viene emesso come output oppure il formato delle modifiche XML, di solito è preferibile eseguire queste modifiche in DOM piuttosto che in SAX. Ad esempio, si supponga che ciascuno degli elementi keyword disponga di un attributo status, come riportato di seguito: <?xml version= 1.0 encoding= iso ?> <keywords> <keyword status= live >XML</keyword> <keyword status= in progress >PHP</keyword> <keyword status= live >Perl</keyword> <keyword status= live >Javascript</keyword> <keyword status= in progress >ASP</keyword> </keywords> Esempio keyword-data2.xml (estratto) A questo punto, si desidera visualizzare l attributo status di keyword insieme alla parola chiave. A tale scopo, occorre apportare solo una semplice modifica: 171

10 Capitolo 7: Elaborazione di dati XML con PHP Esempio domdemo2.php (estratto) echo <ul> ; foreach ($keywords as $kw) { echo <li>. htmlentities($kw->nodevalue). (. htmlentities($kw->getattribute( status )). )</li> ; echo </ul> ; Il risultato di questa piccola modifica viene illustrato nella Figura 7.3, Modifica dell elenco delle parole chiave. Figura 7.3. Modifica dell elenco delle parole chiave Per visualizzare solo le parole chiave live, è sufficiente aggiungere un semplice test if: Esempio domdemo3.php (estratto) echo <ul> ; foreach ($keywords as $kw) { if ($kw->getattribute( status ) == live ) { echo <li>. htmlentities($kw->nodevalue). </li> ; echo </ul> ; Il risultato viene illustrato nella Figura 7.4, Visualizzazione delle sole parole chiave live. 172

11 Creazione di nodi Figura 7.4. Visualizzazione delle sole parole chiave live Creazione di nodi Come evidenziato precedentemente, il modello DOM consente di aggiungere nuovi nodi e di manipolare quelli esistenti. Creare, dunque, un nuovo elemento keyword e aggiungerlo alla struttura DOM esistente. È possibile aggiungere un nuovo nodo utilizzando il metodo create_element dell oggetto DOMDocument. A tale scopo è sufficiente passare il nome del nuovo nodo e, facoltativamente, il relativo valore del nodo (il testo che dovrebbe contenere): $newkw = $doc->createelement( keyword, XSLT ); Esempio domdemo4.php (estratto) Successivamente occorre associare il nuovo nodo parola chiave alla struttura DOM. A tale scopo, è possibile utilizzare il metodo appendchild, ma è necessario indicare a DOM il punto esatto in cui si desidera aggiungere il nodo. In questo caso specifico, è sufficiente aggiungere il nuovo elemento parola chiave alla variabile $root stabilita (è bene ricordare che questa variabile rappresenta l elemento root del documento, in questo esempio, keywords). $root->appendchild($newkw); Esempio domdemo4.php (estratto) Con un documento modificato a disposizione, è possibile effettuare numerose operazioni. Una delle operazioni più comuni consiste nell emettere l output del codice XML del documento modificato in un file sul server oppure in un browser Web. 173

12 Capitolo 7: Elaborazione di dati XML con PHP Visualizzazione di codice XML da DOM La visualizzazione di una struttura DOM come codice XML è piuttosto semplice. Infatti, è sufficiente utilizzare il metodo savexml della classe DOMDocument. Impostando come prima cosa la proprietà formatoutput dell oggetto su true, è possibile generare il codice XML desiderato. Esempio domdemo4.php (estratto) $doc->formatoutput = true; echo <p>updated XML source code:</p> ; echo <pre>. htmlentities($doc->savexml()). </pre> ; Questa rapida analisi ha illustrato in maniera molto generica la funzionalità del modello DOM. Maggiori dettagli verranno forniti nel corso di questo capitolo e in quelli successivi, soprattutto quando sarà necessario ricorrere a questo modello per la creazione immediata di documenti XML. Utilizzo di SimpleXML Prima dell introduzione di SimpleXML in PHP 5, gli sviluppatori potevano manipolare ed elaborare i documenti XML solo con SAX e DOM. Entrambi gli approcci erano consolidati e affidabili, ma il loro uso presupponeva una conoscenza approfondita da parte dello sviluppatore dei processi che avrebbe creato. Con SimpleXML, come implica il nome, si semplifica il modo in cui uno sviluppatore PHP interagisce, elabora e manipola i dati XML. SimpleXML offre, infatti, grandi vantaggi. Sostanzialmente, SimpleXML carica i dati XML all interno di una gerarchia di oggetti e array di oggetti, quindi consente di accedere all array utilizzando metodi familiari quali i loop foreach e gli indici di array. In altre parole, gli sviluppatori di SimpleXML si erano resi conto che XML veniva utilizzato prevalentemente per l estrazione e l elaborazione di informazioni, quindi studiarono un modo che rendesse più semplice eseguire questo tipo di operazioni. Come è stato evidenziato nel Capitolo 4, Visualizzazione di XML in un browser, SimpleXML assegna a ciascun tag presente in un file XML una proprietà che corrisponde al relativo nome dell elemento. Esaminare il seguente documento XML: <document> <msg>hello</msg> </document> 174

13 Caricamento di documenti XML In questo caso è possibile accedere al valore del tag <msg> utilizzando la notazione freccia orientata agli oggetti di PHP, come mostrato di seguito: echo $xml->msg; Le modifiche dei nomi degli elementi influiscono sul codice PHP Uno dei grandi svantaggi di questo approccio è rappresentato dal fatto che se, per un qualsiasi motivo, i nomi degli elementi XML subiscono una modifica, sarà necessario ritornare indietro e modificare la logica SimpleXML perché vi sia corrispondenza con i nuovi nomi. Il modo migliore per evitare questo tipo di problemi consiste nell assicurarsi che i documenti XML siano definitivi e strutturati nella maniera richiesta. Se si apportano modifiche ai documenti XML dopo aver iniziato la codifica PHP, occorre intervenire anche nel codice per garantire la corrispondenza con le nuove modifiche apportate. Nelle sezioni successive verranno illustrate tutte le principali funzioni di SimpleXML. Caricamento di documenti XML Per utilizzare SimpleXML, come prima cosa occorre identificare il documento XML che si desidera elaborare. SimpleXML può caricare un file in memoria oppure lavorare sul codice XML sotto forma di una stringa PHP. Per aprire un file, utilizzare la funzione simplexml_load_file come riportato di seguito: Esempio sxmldemo.php (estratto) $keywords = simplexml_load_file( keyword-data2.xml ); È anche possibile fornire il proprio XML come variabile, quindi caricare questa variabile in memoria utilizzando la funzione simplexml_load_string: $xml = <<<XML <?xml version= 1.0 encoding= iso ?> <keywords> <keyword status= live >XML</keyword> <keyword status= in progress >PHP</keyword> <keyword status= live >Perl</keyword> <keyword status= live >JavaScript</keyword> <keyword status= in progress >ASP</keyword> </keywords> XML; $keywords = simplexml_load_string($xml); Esempio sxmldemo2.php (estratto) 175

14 Capitolo 7: Elaborazione di dati XML con PHP Dichiarazione di stringhe PHP con heredoc La stringa PHP che contiene il codice XML nell esempio sopra riportato viene dichiarata utilizzando la sintassi heredoc. Coloro che non conoscono questa sintassi possono consultare il manuale di PHP[3]. Indipendentemente dall approccio utilizzato, il risultato sarà una gerarchia di oggetti e di array chiamata $keywords. È ora possibile accedere alle diverse parti di questa struttura utilizzando la sintassi di array o di oggetti PHP standard. Gerarchia degli elementi XML Quando un elemento XML contiene più elementi figlio con lo stesso nome (come accade per l elemento keywords di questo esempio), questi elementi figlio vengono memorizzati in un array nella gerarchia degli oggetti. Pertanto è possibile utilizzare indici di array per accedere alle informazioni necessarie. Ad esempio, è possibile utilizzare la seguente sintassi per accedere alle varie parole chiave contenute nel documento XML: echo $keywords->keyword[0]; // prints XML echo $keywords->keyword[1]; // prints PHP Si noti che, in ogni caso, si utilizza l oggetto $keywords, che rappresenta l elemento root del documento, seguito dall operatore freccia e dal nome del nodo figlio a cui si è interessati (in questo caso, keyword). Poiché si tratta di un array, si utilizza keyword[0] per accedere al primo elemento keyword. Per accedere al secondo, si utilizza keyword[1] e così via. Per ottenere, invece, tutti i valori di un array di elementi XML creato da SimpleXML, è possibile utilizzare un semplice loop foreach PHP: Esempio sxmldemo.php/sxmldemo2.php (estratto) echo <ul> ; foreach ($keywords->keyword as $kw) { echo <li>. htmlentities($kw). </li> ; echo </ul> ; Quando un elemento contiene solo un elemento figlio di un determinato tipo, non viene creato alcun array. Infatti, è possibile accedere all elemento direttamente. Si supponga che il file XML che si sta utilizzando sia più complesso e che contenga un altro livello di elementi: nodi figlio di ciascun elemento keyword. Il file potrebbe risultare come riportato di seguito: [3] 176

15 Gerarchia degli elementi XML <keywords> <keyword status= live > <name>xml</name> <url>http://www.example.com/xml/</url> </keyword> <keyword status= in progress > <name>php</name> <url>http://www.example.com/php/</url> </keyword> </keywords> Per visualizzare i valori degli elementi name e url per il primo elemento keyword, procedere come riportato di seguito: echo $keywords->keyword[0]->name; // XML echo $keywords->keyword[0]->url; // Come è possibile notare, il procedimento è davvero molto semplice. Infatti, è molto più semplice lavorare con SimpleXML che non utilizzare una struttura DOM oppure dichiarare gestori SAX personalizzati. Gli oggetti elemento SimpleXML possono essere utilizzati laddove sono richieste stringhe e si comporteranno come tali, includendo il valore di testo contenuto nel corrispondente elemento XML. Tuttavia, è importante ricordare che, di fatto, questi oggetti non sono stringhe. Questa distinzione scatta nei casi in cui non è richiesta una stringa e pertanto PHP non eseguirà la conversione. Segue un esempio: if ($keywords->keyword[0] == XML ) { echo The first keyword is XML. ; Analizzando il documento XML di esempio ci si aspetterebbe che questa l istruzione if faccia eseguire l istruzione successiva e visualizzare il messaggio, ma ciò non si verifica in quanto $keywords->keyword[0] è un oggetto e come tale non è uguale alla stringa XML. Perché questo codice si comporti come previsto, è necessario eseguire la conversione attraverso l esecuzione del cast dell oggetto in una stringa: if ((string)$keywords->keyword[0] == XML ) { echo The first keyword is XML. ; 177

16 Capitolo 7: Elaborazione di dati XML con PHP Se non si conosce bene PHP, potrebbe risultare alquanto difficile capire quando occorre eseguire la conversione e quando invece questa operazione verrà eseguita da PHP. Gli esempi contenuti in questo manuale dovrebbero chiarire questo aspetto, ma in caso di dubbi, si consiglia di eseguire il cast del valore in una stringa: in tal modo, si avrà sempre la certezza che PHP gestirà il valore nella maniera prevista. Valori degli attributi XML È possibile accedere al valore di un attributo gestendo l oggetto elemento come array e utilizzando il nome dell attributo come chiave di array. Ad esempio, per visualizzare il valore dell attributo status del primo elemento keyword, è possibile utilizzare la seguente istruzione: echo $keywords->keyword[0][ status ]; // prints live Tuttavia, con i valori degli elementi, il discorso si complica quando si tenta di confrontare valori degli attributi con stringhe PHP, in quanto sono fondamentalmente oggetti. Ad esempio, si supponga di voler visualizzare solo parole chiave live. In tal caso, si potrebbe procedere come riportato di seguito: foreach ($keywords->keyword as $kw) { if ($kw[ status ] == live ) { // wrong! echo <li>. htmlentities($kw). </li> ; Questo frammento di codice sembra accettabile. Tuttavia, dal momento che PHP non può eseguire il confronto di due entità diverse, in questo caso, oggetti e stringhe, nessuna delle parole chiave verrà visualizzata. Pertanto, è necessario eseguire il cast dell oggetto attributo in una stringa: foreach ($keywords->keyword as $kw) { if ((string)$kw[ status ] == live ) { echo <li>. htmlentities($kw). </li> ; Esempio sxmldemo3.php (estratto) In questo caso si è scelto di imboccare la strada più difficile. Tuttavia, grazie a Xpath esiste un metodo più semplice per filtrare i valori che vengono richiamati da un documento XML. 178

17 Query XPath Query XPath Esiste un altro modo per filtrare elementi XML basati sul valore di un attributo, che implica l uso del metodo xpath incontrato nel Capitolo 4, Visualizzazione di XML in un browser. Come già evidenziato, questo metodo consente di passare query XPath in SimpleXML e di ricevere i risultati sotto forma di array. Il modo più semplice per acquisire tutti gli elementi keyword il cui attributo status sia impostato su live consiste nell eseguire la query XPath riportata di seguito dall elemento keyword nel documento: live ] Questa query esaminerà tutti gli elementi keyword che sono elementi figlio dell elemento corrente ed estrarrà tutti quelli il cui status sia live. Di seguito viene illustrato come effettuare questa operazione con SimpleXML: Esempio sxmldemo4.php (estratto) foreach ($keywords->xpath( live ] ) as $kw) { echo <li>. htmlentities($kw). </li> ; Ma quali sono i vantaggi che offre una query XPath? In primo luogo, non è più necessario eseguire un confronto tra stringhe all interno di PHP: questa operazione viene gestita da XPath. Se si ha familiarità con lo sviluppo di database in PHP, questo tipo di operazione equivale a consentire a una istruzione SQL di eseguire il filtraggio dei valori di database prima di restituirli nello script. In secondo luogo, il codice risulta ora meno complesso e, fortunatamente, anche più semplice da gestire. Analizzando il secondo costrutto, si può ritenere questo approccio molto più complicato che non eseguire il cast di un oggetto in una stringa per il confronto. Tuttavia, la difficoltà e la semplicità di un approccio sono relative. Utilizzo di SimpleXML per aggiornare codice XML Un altro dei grandi vantaggi offerti da SimpleXML è rappresentato dal fatto che consente di aggiornare i valori in maniera molto semplice. Si supponga di voler modificare la terza parola chiave dell esempio da PHP a JSP. Di seguito viene mostrato come procedere: 179

18 Capitolo 7: Elaborazione di dati XML con PHP $keywords->keyword[2] = JSP ; Per modificare il valore di un attributo, è sufficiente aggiungere il nome dell attributo appropriato come chiave di array: $keywords->keyword[2][ status ] = live ; Per salvare oppure visualizzare il codice XML aggiornato, utilizzare il metodo asxml: echo $keywords->asxml(); Correzione di problemi SimpleXML con DOM SimpleXML, pur nella sua semplicità ed eleganza, presenta alcuni svantaggi. In primo luogo, non è possibile (al momento della scrittura) aggiungere nuovi nodi a un documento XML, ma solo modificare i valori di quelli esistenti. Non è possibile neppure eliminare nodi. Non è possibile associare fogli di stile al proprio XML per eseguire trasformazioni. Infine, come è stato possibile notare, il codice PHP dipende fortemente dai nomi dei tag XML: se questi vengono modificati, l aggiornamento del codice può essere una vera seccatura. Ad ogni modo, SimpleXML dispone di una funzione davvero comoda che gli consente di interoperare con altre funzionalità XML PHP. Precisamente, questa funzionalità permette di importare documenti DOM e di convertirli in strutture di dati SimpleXML. Ma quali sono i vantaggi? Questa funzionalità consente di attuare la parte più impegnativa della funzionalità DOM nativa in PHP; successivamente è possibile convertirla in SimpleXML e completare il lavoro. Per comprendere quanto appena illustrato attraverso un esempio pratico, caricare un documento con DOM e apportarvi una modifica che non sarebbe possibile eseguire con SimpleXML: $doc = new DOMDocument(); $doc->preservewhitespace = false; $doc->load( keyword-data2.xml ); $root = $doc->documentelement; Esempio sxmldemo5.php (estratto) $newkw = $doc->createelement( keyword, JSP ); $newkw->setattribute( status, live ); $root->appendchild($newkw); Con un nuovo elemento aggiunto alla struttura DOM, è possibile utilizzare la funzione simplexml_import_dom per importarlo in una struttura di dati SimpleXML. Successivamente, 180

19 Quando utilizzare i diversi metodi è possibile utilizzare l API SimpleXML per eseguire tutte le operazioni richieste: ad esempio, ricercare e visualizzare nodi con un determinato valore di attributo. Esempio sxmldemo5.php (estratto) $keywords = simplexml_import_dom($doc); echo <ul> ; foreach ($keywords->xpath( live ] ) as $kw) { echo <li>. htmlentities($kw). </li> ; echo </ul> ; Questo codice consente di visualizzare un elenco di parole chiave il cui status è live, compresa JSP, che è stata aggiunta utilizzando DOM. Quando utilizzare i diversi metodi A questo punto è lecito domandarsi quando è appropriato utilizzare SAX, DOM e/o SimpleXML. Di seguito vengono elencate alcune regole generali: Nel caso di un documento XML molto semplice che richiede unicamente una elaborazione lineare e che non deve essere modificato, SAX rappresenta la scelta appropriata. Se occorre elaborare un documento XML più complesso, ma al solo scopo di estrarre informazioni, SimpleXML rappresenta la scelta appropriata. Se occorre creare nuovi documenti XML oppure apportare modifiche sostanziali a documenti esistenti, utilizzare DOM. Progetto CMS A questo punto è possibile creare le funzionalità di amministrazione del progetto CMS. Gli strumenti di amministrazione di cui si dispone consentiranno agli utenti autorizzati di collegarsi a CMS e di amministrare le varie parti del sito Web. Più specificamente, si procederà alla realizzazione delle seguenti funzionalità: pagina di accesso/verifica indice amministrativo (da cui gli utenti di CMS possono accedere ad altre pagine) pagina per la creazione di nuovi articoli 181

20 Capitolo 7: Elaborazione di dati XML con PHP pagina per la modifica degli articoli pagina per l eliminazione degli articoli Dopo aver creato queste pagine, il discorso sullo strumento di amministrazione verrà temporaneamente interrotto e ripreso poi nell Appendice B, Strumento di amministrazione di CMS, in quanto gran parte delle informazioni è piuttosto ripetitiva e può essere trattata in una sezione a parte. Questa trattazione include: pagine per la creazione/modifica/eliminazione di notizie pagine per la creazione/modifica/eliminazione di file binari pagine per la creazione/modifica/eliminazione di categorie pagine per la creazione/modifica/eliminazione di amministratori Tutte le pagine dell area di amministrazione si trovano nella directory admin del sito. Disabilitazione della funzione magic quotes Tutti gli script PHP presenti in questo libro presuppongono che la funzione magic quotes di PHP sia disabilitata. Per disabilitare questa funzione, impostare l opzione magic_quotes_gpc contenuta nel file php.ini del proprio server su Off. Se questa funzione viene lasciata attiva, quando si manipola il contenuto utilizzando gli script di amministrazione che verranno sviluppati in questa sezione e nell Appendice B, Strumento di amministrazione di CMS, il contenuto presenterà numerose barre rovesciate (\) indesiderate. Pagina di accesso La pagina di accesso è molto semplice. Si basa su un elementare form HTML che consente agli amministratori di specificare il proprio nome utente e la propria password. Questo form diventerà più complesso quando si strutturerà l HTML in modo che possa essere efficacemente stilizzato grazie all applicazione di un CSS. <?php session_start();?> <!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN > <html xmlns= > <head> <title>please Log In</title> <meta http-equiv= Content-Type content= text/html; charset=iso > Esempio login.php 182

21 Pagina di accesso <link rel= stylesheet type= text/css href=../xmlcms.css /> <link rel= stylesheet type= text/css href= login.css /> </head> <body> <form class= login action= verify.php method= post > <h1>please log in</h1> <div class= fields > <label for= username >User name</label> <input type= text id= username name= username class= text /> <label for= password >Password</label> <input type= password id= password name= password class= password /> </div> <div class= actions > <input type= submit value= Submit /> <input type= reset value= Reset /> </div> <p class= error ><?php echo $_SESSION[ error ];?></p> </form> </body> </html> Oltre al foglio di stile del sito di base (xmlcms.css), questa pagina utilizza un foglio di stile specifico per il layout del form di accesso. Come già evidenziato in precedenza, non essendo questo un manuale dedicato ai fogli di stile CSS, i dettagli relativi a questo file verranno tralasciati, ma per una questione di completezza di seguito ne viene fornito il codice: form.login { width: 290px; margin: 1em auto; padding: 4px; background: #ccc; form.login h1 { text-align: center; font-size: medium; background: #fff; margin: 1px; form.login.fields { text-align: right; form.login label { float: left; width: 130px; text-align: right; Esempio login.css 183

22 Capitolo 7: Elaborazione di dati XML con PHP form.login.actions { text-align: center; form.login input.text, form.login input.password { width: 150px; margin-bottom: 1px; form.login.error { color: red; margin: 0; padding: 0; Analizzando la pagina di accesso, è possibile notare che l elemento action del form è impostato su una pagina denominata verify.php. La logica PHP contenuta in questa pagina deve verificare i valori immessi in un elenco di amministratori che si trova in admin.xml. Protezione dei file XML Ai fini degli esempi proposti in questo manuale e per l archiviazione del relativo codice, i file XML in cui si trovano il contenuto, le categorie, gli autori e gli utenti amministrativi sono stati inseriti in una sottodirectory del sito principale. Tuttavia, per proteggere ulteriormente le informazioni riservate contenute in questi file come, ad esempio, la crittografia delle password degli amministratori, fare in modo che i visitatori occasionali del sito non abbiano accesso diretto a questi file. Per proteggere questi file, è possibile configurare il server Web in modo che impedisca ai browser di accedere alla directory oppure è possibile spostare la directory all esterno della struttura di directory del sito accessibile dal Web. Nel secondo caso, sarà necessario modificare il file common.inc.php perché punti alla nuova ubicazione della directory, in modo che tutti gli script del sito possano trovare i file XML. Password crittografate Come è stato possibile notare, i valori delle password memorizzati in admin.xml vengono crittografati, così da garantire maggiore protezione. Per utilizzare il file di esempio admin.xml incluso nell archivio del codice per questo libro, occorre sapere che la password iniziale di tutti e tre gli amministratori memorizzata in quel file (joe, bill e tom) è password. In caso di corrispondenza, il codice PHP imposterà una variabile di sessione e reindirizzerà l utente verso la pagina dell indice di amministrazione. In caso contrario, PHP riporterà l utente di nuovo alla pagina login.php, con una variabile di sessione speciale ($_SESSION[ error ]) contenente un messaggio di errore da visualizzare. 184

23 Pagina di accesso Il codice specifico viene riportato di seguito. Si noti che in questo caso si è scelto di utilizzare SimpleXML, in quanto è il metodo più veloce per caricare le informazioni da admin.xml. <?php include_once../common.inc.php ; Esempio verify.php $admins = simplexml_load_file($filedir. admin.xml ); foreach ($admins->admin as $admin) { if ($_POST[ username ] == (string)$admin->username and crypt($_post[ password ], (string)$admin->password) == (string)$admin->password) { $_SESSION[ login ] = true; header( location: index.php ); exit; $_SESSION[ error ] = Wrong user name or password. Try again. ; header( location: login.php );?> Inoltre, quando vengono crittografate le password in admin.xml, occorre accettare la password fornita dall utente, crittografarle allo stesso modo, quindi confrontare l input utente con la password memorizzata nel file XML. Se non si ha familiarità con la funzione crypt di PHP, è possibile consultare il manuale di PHP[4]. Dal momento che chiunque può immettere un URL per una delle pagine di amministrazione, è necessario garantire per il contenuto di queste pagine una maggiore protezione. Nella parte superiore di ciascuna pagina, occorre verificare se il valore della variabile di sessione $_SESSION[ login ] è impostato su true. Se questo valore non è impostato su true, l utente verrà indirizzato di nuovo verso la pagina login.php. Dal momento che questa funzionalità verrà utilizzata di nuovo, si consiglia di inserire questa verifica all interno di un file delle inclusioni: <?php include_once../common.inc.php ; Esempio security.inc.php if login ]!== true) { header( location: login.php ); $_SESSION[ error ] = You must log in before you can access administration pages. ; exit;?> [4] 185

24 Capitolo 7: Elaborazione di dati XML con PHP Disabilitazione della protezione per la configurazione iniziale Quando si configura il sito per la prima volta, è possibile che non siano stati ancora creati degli amministratori. Ci si chiede dunque come fare ad aggiungere amministratori se non è possibile eseguire l accesso. Per aggiungere i primi account amministratore, è necessario disabilitare la protezione: a tale scopo, annullare i commenti del contenuto del file security.inc.php, in modo che il file non possa eseguire alcuna azione. Successivamente, è necessario abilitare la visualizzazione libera delle pagine di amministrazione e aggiungere uno o due amministratori. Dopo di che, è possibile abilitare di nuovo la protezione e collegarsi utilizzando uno degli account appena creati. In ultimo, occorre creare una pagina di logout a cui collegarsi in modo che gli utenti possano scollegarsi e uscire dal sito prima di abbandonare la propria postazione: <?php include_once../common.inc.php ; Esempio logout.php $_SESSION[ login ] = false; header( location: index.php );?> Pagina dell indice amministrativo La prima pagina dello strumento di amministrazione fornisce accesso a tutte le funzionalità e all intero contenuto del sito, compresi gli utenti amministrativi, gli articoli, i news item e altri tipi di contenuto. Il codice per questa pagina è molto conciso. È necessario fornire collegamenti a ciascuna delle principali parti dello strumento di amministrazione. <?php include security.inc.php ;?> <!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN > <html xmlns= > <head> <meta http-equiv= Content-Type content= text/html; charset=iso /> <title>welcome to the Admin Index Page</title> <link rel= stylesheet type= text/css href=../xmlcms.css /> Esempio index.php 186

25 Utilizzo degli articoli </head> <body> <h1>welcome to the Admin Index Page</h1> <p> <a href= articletool.php >Manage Articles</a><br /> <a href= newstool.php >Manage News Items</a><br /> <a href= admintool.php >Manage Administrators</a> </p> <p><a href= logout.php >Log out</a></p> </body> </html> Ciascuna delle aree rappresentate da questi collegamenti avrà la stessa funzionalità. Ogni singola area consentirà agli utenti di CMS di creare, modificare ed eliminare item. Nelle sezioni successive verranno analizzate le singole attività per la prima area: gli articoli. Utilizzo degli articoli L area di amministrazione degli articoli consente agli utenti di CMS di creare nuovi articoli, modificare quelli esistenti e di eliminare articoli quando occorre. Dal momento che gli articoli sono la parte più importante del sito, si partirà da essi per poi procedere con i news item e gli amministratori del sito nell Appendice B, Strumento di amministrazione di CMS. Per la pagina principale dell area di amministrazione degli articoli, sarà necessario un elenco di tutti gli articoli presenti sul sito. Poiché si suppone di aver acquisito sufficiente dimestichezza con il codice PHP, questa operazione non dovrebbe risultare troppo complicata: Esempio articletool.php <?php include security.inc.php ; include_once../common.inc.php ;?> <!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN > <html xmlns= > <head> <meta http-equiv= Content-Type content= text/html; charset=iso /> <title>article Index</title> <link rel= stylesheet type= text/css href=../xmlcms.css /> </head> <body> <h1>article Index</h1> 187

26 Capitolo 7: Elaborazione di dati XML con PHP <p><a href= articletool_create.php >Create New Article</a></p> <p><a href= index.php >Cancel</a></p> <ul> <?php $handle = opendir($filedir); while (($file = readdir($handle))!== FALSE) { if (is_dir($filedir. $file)) continue; if (!eregi( ^article.*\.xml$, $file)) continue; $articlefile = simplexml_load_file($filedir. $file); echo <li>. htmlentities($articlefile->headline); echo <a href= articletool_edit.php?id=. $articlefile[ id ]. >edit</a> ; echo <a href= doarticledelete.php?id=. $articlefile[ id ]. >delete</a></li> ;?> </ul> </body> </html> Creazione di nuovi articoli La pagina di creazione degli articoli è molto importante, in quanto consente agli amministratori del sito di creare nuovi articoli XML sul sito utilizzando un semplice form Web. Ciascuno dei campi del form è associato a un elemento nella struttura del documento XML pianificata nel Capitolo 1, Introduzione a XML, e modificata nel Capitolo 3, DTD per la consistenza. Gli articoli creati dovrebbero risultare come quello riportato di seguito: <?xml version= 1.0 encoding= iso ?> <article id= article > <authorid>1</authorid> <categoryid>1</categoryid> <headline>using XML with PHP</headline> <description>php offers many ways to work with XML</description> <pubdate> </pubdate> <status>live</status> <keywords>xml PHP SAX DOM SimpleXML</keywords> <body><![cdata[ <h1>using XML with PHP</h1> <p>php is very powerful. It offers many ways to work with XML.</p> ]]></body> </article> 188

27 Creazione di nuovi articoli In particolare, è bene ricordare che occorre generare un ID univoco e compilare tutte le varie parti dei metadati. Creare un form che contenga campi per tutte queste informazioni. Iniziare con la verifica che permette di assicurarsi che l utente è collegato: <?php include security.inc.php ; include_once../common.inc.php ;?> Esempio articletool_create.php (estratto) Iniziare ora la creazione del codice HTML, includendo un collegamento a un nuovo foglio di stile denominato forms.css, che conterrà le regole per il layout di form di amministrazione piuttosto complessi come quello riportato di seguito: Esempio articletool_create.php (estratto) <!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN > <html xmlns= > <head> <meta http-equiv= Content-Type content= text/html; charset=iso /> <title>create a New Article</title> <link rel= stylesheet type= text/css href=../xmlcms.css /> <link rel= stylesheet type= text/css href= forms.css /> </head> <body> Infine, creare il form. Il form è costituito prevalentemente da semplici campi, ma per selezionare un autore e una categoria occorrono elenchi dinamici che verranno estratti dai file appropriati utilizzando SimpleXML. Esempio articletool_create.php (estratto) <h1>create a New Article</h1> <p><a href= articletool.php >Cancel</a></p> <form action= doarticlecreate.php method= post > <div class= fields > <p> <label for= headline >Headline</label> <input type= text id= headline name= headline class= text /> </p> <p> <label for= author >Author</label> <select id= authorid name= authorid > <?php 189

28 Capitolo 7: Elaborazione di dati XML con PHP $authors = simplexml_load_file($filedir. authors.xml ); foreach ($authors->author as $author) { echo <option value=. htmlentities($author[ id ]). >. htmlentities($author->name). </option> ;?> </select> </p> <p> <label for= category >Category</label> <select id= categoryid name= categoryid > <?php $cats = simplexml_load_file($filedir. categories.xml ); foreach ($cats->category as $cat) { echo <option value=. htmlentities($cat[ id ]). >. htmlentities($cat[ label ]). </option> ;?> </select> </p> <p> <label for= status >Status</label> <select id= status name= status > <option value= in progress >In Progress</option> <option value= live >Live</option> </select> </p> <p> <label for= keywords >Keywords</label> <input type= text id= keywords name= keywords class= text /> </p> <p> <label for= description >Description</label> <textarea id= description name= description ></textarea> </p> <p> <label for= body >Article Body (HTML)</label> <textarea id= body name= body ></textarea> </p> </div> <div class= actions > <input type= submit value= Add Article /> <input type= reset value= Reset /> </div> </form> </body> </html> 190

29 Creazione di nuovi articoli Di seguito viene riportato il codice del foglio di stile che esegue il layout di questo complesso form: form.actions { text-align: center; form p { clear: left; margin: 1px 0; form label { float: left; width: 15%; padding-right: 10px; text-align: right; input.text, input.password, select { width: 300px; textarea { width: 70%; height: 4em; textarea#body { height: 30em; Esempio forms.css L action del form è impostata sulla pagina doarticlecreate.php, che utilizza funzioni DOM per creare un articolo XML dalle informazioni contenute nel form. Dal momento che si tratta di un passaggio molto complesso, il codice verrà riportato e analizzato a blocchi. La prima parte del file è l inizio del nuovo documento XML, in cui viene impostata la versione e creato l elemento root, article. <?php include security.inc.php ; include_once../common.inc.php ; Esempio doarticlecreate.php (estratto) $doc = new DOMDocument(); $root = $doc->createelement( article ); $root = $doc->appendchild($root); 191

30 Capitolo 7: Elaborazione di dati XML con PHP Successivamente, viene aggiunto un attributo id al nodo article. L ID sarà composto dal termine article seguito da un timestamp. Nel caso in cui si creino contemporaneamente più di un articolo, ricercare un file esistente il cui nome contenga lo stesso ID e incrementare il timestamp di un unità fino a individuare un ID che non crei conflitti. Esempio doarticlecreate.php (estratto) $timestamp = date( YmdHis ); do { $id = article. $timestamp++; while (file_exists($filedir. $id..xml )); $root->setattribute( id, $id); Dopo aver creato l elemento root, occorre creare, nell ordine appropriato, i relativi elementi figlio. Il primo è authorid. Si noti che l elemento authorid è un elemento figlio di article e che lo stesso ID è un elemento figlio di authorid. Esempio doarticlecreate.php (estratto) $author = $doc->createelement( authorid ); $root->appendchild($author); $atext = $doc->createtextnode($_post[ authorid ]); $author->appendchild($atext); Viene utilizzata la stessa tecnica illustrata sopra per generare gli elementi categoryid, headline, description, status e keywords. Il valore di pubdate viene generato dallo script, ma per il resto è lo stesso. Esempio doarticlecreate.php (estratto) $cat = $doc->createelement( categoryid ); $root->appendchild($cat); $ctext = $doc->createtextnode($_post[ categoryid ]); $cat->appendchild($ctext); $head = $doc->createelement( headline ); $root->appendchild($head); $htext = $doc->createtextnode($_post[ headline ]); $head->appendchild($htext); $desc = $doc->createelement( description ); $root->appendchild($desc); $dtext = $doc->createtextnode($_post[ description ]); $desc->appendchild($dtext); $pub = $doc->createelement( pubdate ); $root->appendchild($pub); $pubtext = $doc->createtextnode(date( Y-m-d )); $pub->appendchild($pubtext); 192

XML e PHP. Gestire XML con PHP. Appendice

XML e PHP. Gestire XML con PHP. Appendice Appendice XML e PHP Tra tutti i linguaggi di programmazione esistenti PHP è tra quelli che meglio si adattano all elaborazione di documenti XML. PHP è un linguaggio di programmazione che consente di arricchire

Dettagli

La pagina Web modulo.html utilizza le specifiche di stile descritte nel foglio feedback.css.

La pagina Web modulo.html utilizza le specifiche di stile descritte nel foglio feedback.css. Moduli di feedback Uno degli strumenti per l interattività con gli utenti è la pagina per raccogliere suggerimenti o commenti dai visitatori, formata da moduli sul video da riempire con il nome del mittente,

Dettagli

Java Server Pages (JSP) JSP o Servlet? Java Server Pages (JSP) Java Server Pages Costituiscono un estensione della tecnologia delle servlet

Java Server Pages (JSP) JSP o Servlet? Java Server Pages (JSP) Java Server Pages Costituiscono un estensione della tecnologia delle servlet Java Server Pages (JSP) Introduzione alle JSP Linguaggio di scripting lato server HTML-embedded Una pagina JSP contiene sia HTML sia codice Il client effettua la richiesta per la pagina JSP La parte HTML

Dettagli

DATABASE IN RETE E PROGRAMMAZIONE LATO SERVER

DATABASE IN RETE E PROGRAMMAZIONE LATO SERVER DATABASE IN RETE E PROGRAMMAZIONE LATO SERVER L architettura CLIENT SERVER è l architettura standard dei sistemi di rete, dove i computer detti SERVER forniscono servizi, e computer detti CLIENT, richiedono

Dettagli

Indice. 1.13 Configurazione di PHP 26 1.14 Test dell ambiente di sviluppo 28

Indice. 1.13 Configurazione di PHP 26 1.14 Test dell ambiente di sviluppo 28 Indice 25 184 Introduzione XI Capitolo 1 Impostazione dell ambiente di sviluppo 2 1.1 Introduzione ai siti Web dinamici 2 1.2 Impostazione dell ambiente di sviluppo 4 1.3 Scaricamento di Apache 6 1.4 Installazione

Dettagli

XML INVITO ALLO STUDIO EUROPEAN NETWORK OF INNOVATIVE SCHOOLS

XML INVITO ALLO STUDIO EUROPEAN NETWORK OF INNOVATIVE SCHOOLS XML INVITO ALLO STUDIO EUROPEAN NETWORK OF INNOVATIVE SCHOOLS CSS e XML Per formatare i documenti XML è possibile seguire due strade: Quando non c è bisogno della potenza elaborativa di XSL, l utilizzo

Dettagli

Obiettivi d esame PHP Developer Fundamentals on MySQL Environment

Obiettivi d esame PHP Developer Fundamentals on MySQL Environment Obiettivi d esame PHP Developer Fundamentals on MySQL Environment 1.0 Ambiente di sviluppo 1.1 Web server e database MySQL Comprendere la definizione dei processi che si occupano di fornire i servizi web

Dettagli

PHP. A. Lorenzi, R. Giupponi, D. Iovino LINGUAGGI WEB. LATO SERVER E MOBILE COMPUTING Atlas. Copyright Istituto Italiano Edizioni Atlas

PHP. A. Lorenzi, R. Giupponi, D. Iovino LINGUAGGI WEB. LATO SERVER E MOBILE COMPUTING Atlas. Copyright Istituto Italiano Edizioni Atlas PHP A. Lorenzi, R. Giupponi, D. Iovino LINGUAGGI WEB. LATO SERVER E MOBILE COMPUTING Atlas Copyright Istituto Italiano Edizioni Atlas Programmazione lato server PHP è un linguaggio che estende le funzionalità

Dettagli

Università di Bergamo Facoltà di Ingegneria. Applicazioni Internet B. Paolo Salvaneschi B6_5 V1.11. JSP parte E

Università di Bergamo Facoltà di Ingegneria. Applicazioni Internet B. Paolo Salvaneschi B6_5 V1.11. JSP parte E Università di Bergamo Facoltà di Ingegneria Applicazioni Internet B Paolo Salvaneschi B6_5 V1.11 JSP parte E Il contenuto del documento è liberamente utilizzabile dagli studenti, per studio personale e

Dettagli

Tecniche Multimediali

Tecniche Multimediali Un programma di computer fa quello che gli dici, non quello che vuoi. Legge di Greer (Leggi di Murphy applicate all informatica) Tecniche Multimediali Corso di Laurea in «Informatica» - aa 2010-2011 Prof.

Dettagli

HTML+XML= XHTML. Che cos è l XHTML

HTML+XML= XHTML. Che cos è l XHTML HTML+XML= XHTML Il ritorno al futuro del WEB A cura di Barbara Lotti Che cos è l XHTML Nel gennaio del 2000 il W3C ha rilasciato, anziché una nuova versione, una riformulazione dell HTML come applicazione

Dettagli

Corso di Informatica. Prerequisiti. Modulo T3 B3 Programmazione lato server. Architettura client/server Conoscenze generali sui database

Corso di Informatica. Prerequisiti. Modulo T3 B3 Programmazione lato server. Architettura client/server Conoscenze generali sui database Corso di Informatica Modulo T3 B3 Programmazione lato server 1 Prerequisiti Architettura client/server Conoscenze generali sui database 2 1 Introduzione Lo scopo di questa Unità è descrivere gli strumenti

Dettagli

TOP DOWN. Preparati per il compito in classe Modulo 5

TOP DOWN. Preparati per il compito in classe Modulo 5 Preparati per il compito in classe Modulo 5 Un grande magazzino utilizza un database per gestire le vendite dei prodotti. La tabella PRO- DOTTI contiene le informazioni relative ai prodotti in vendita

Dettagli

XSLT. Testo di riferimento. Cos'è XSLT. Come funziona XSLT

XSLT. Testo di riferimento. Cos'è XSLT. Come funziona XSLT XSLT Moreno Marzolla INFN Sezione di Padova moreno.marzolla@pd.infn.it http://www.dsi.unive.it/~marzolla Testo di riferimento Erik T. Ray, Learning XML, O'Reilly, First Edition, January 2001 ISBN: 0-59600-046-4,

Dettagli

Dott.ssa Maria Vittoria Avolio. Dott.ssa Adriana Pietramala

Dott.ssa Maria Vittoria Avolio. Dott.ssa Adriana Pietramala Corso di Informatica Laurea Triennale - Comunicazione&Dams Dott.ssa Maria Vittoria Avolio avoliomv@unical.it Dott.ssa Adriana Pietramala a.pietramala@unical.it Riferimenti Manuale PHP http://www.php.net/download-docs.php

Dettagli

Introduzione al linguaggio PHP. Matteo Manzali INFN CNAF - Università degli Studi di Ferrara

Introduzione al linguaggio PHP. Matteo Manzali INFN CNAF - Università degli Studi di Ferrara Introduzione al linguaggio PHP Matteo Manzali INFN CNAF - Università degli Studi di Ferrara Introduzione a PHP PHP è un linguaggio di programmazione general-purpose che viene utilizzato in larga parte

Dettagli

MODULO 1 PARTE 3. Programmazione (scripting) server-side con PHP 3.c Cookies e sessioni. Goy - a.a. 2012/2013 Programmazione Web 1

MODULO 1 PARTE 3. Programmazione (scripting) server-side con PHP 3.c Cookies e sessioni. Goy - a.a. 2012/2013 Programmazione Web 1 MODULO 1 PARTE 3 Programmazione (scripting) server-side con PHP 3.c Cookies e sessioni Goy - a.a. 2012/2013 Programmazione Web 1 Cookie - I Cookie = variabili che il server salva (*) sul client come file

Dettagli

XSL: extensible Stylesheet Language

XSL: extensible Stylesheet Language XSL: extensible Stylesheet Language XSL è un insieme di tre linguaggi che forniscono gli strumenti per l elaborazione e la presentazione di documenti XML in maniera molto flessibile. I tre linguaggi devono

Dettagli

Siti interattivi e dinamici. in poche pagine

Siti interattivi e dinamici. in poche pagine Siti interattivi e dinamici in poche pagine 1 Siti Web interattivi Pagine Web codificate esclusivamente per mezzo dell HTML non permettono alcun tipo di interazione con l utente, se non quella rappresentata

Dettagli

SVILUPPARE TEMPLATE CON ARIADNE WCM. Linguaggi e tecnologie per sviluppare siti web

SVILUPPARE TEMPLATE CON ARIADNE WCM. Linguaggi e tecnologie per sviluppare siti web SVILUPPARE TEMPLATE CON ARIADNE WCM Linguaggi e tecnologie per sviluppare siti web 1 Le componenti da considerare XML XSL + XPATH TEMPLATE REPOSITORY ACM 2 Sviluppare Template con Ariadne WCM 1. INTRODUZIONE

Dettagli

Itis Cardano. Introduzione a HTML. Pavia. M. Rivera Itis Cardano Pavia. A.s. 2005-2006

Itis Cardano. Introduzione a HTML. Pavia. M. Rivera Itis Cardano Pavia. A.s. 2005-2006 Introduzione a HTML A.s. 2005-2006 M. Rivera Itis Cardano Pavia Itis Cardano Pavia Sommario Introduzione al linguaggio HTML Struttura di un documento HTML Link ipertestuali Immagini e oggetti multimediali

Dettagli

19. LA PROGRAMMAZIONE LATO SERVER

19. LA PROGRAMMAZIONE LATO SERVER 19. LA PROGRAMMAZIONE LATO SERVER Introduciamo uno pseudocodice lato server che chiameremo Pserv che utilizzeremo come al solito per introdurre le problematiche da affrontare, indipendentemente dagli specifici

Dettagli

Javascript. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2009-2010. - lezione 14 -

Javascript. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2009-2010. - lezione 14 - Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2009-2010 Alessandro Longheu http://www.diit.unict.it/users/alongheu alessandro.longheu@diit.unict.it - lezione 14-1 Schema delle lezioni Introduzione

Dettagli

JavaScript - 4. Modello ad oggetti tradizionale. L ambiente del web browser 1

JavaScript - 4. Modello ad oggetti tradizionale. L ambiente del web browser 1 JavaScript - 4 Modello ad oggetti tradizionale L ambiente del web browser 1 Per capire come funziona JavaScript lato client bisogna capire la struttura dell ambiente di programmazione offerto da un web

Dettagli

Indice. Introduzione. Capitolo 1

Indice. Introduzione. Capitolo 1 Indice Introduzione XI Capitolo 1 Pagine dei fornitori: applicazione dei fogli di stile CSS in XML 1 1.1 Introduzione a HTML e XHTML 1 1.2 Controllo della presentazione: fogli di stile CSS 8 1.3 Approfondimento

Dettagli

Corso html 5. Di Roberto Abutzu. *********** Quarta parte: Body ed elementi strutturali. ********** Cos'è il Body e gli elementi strutturali?

Corso html 5. Di Roberto Abutzu. *********** Quarta parte: Body ed elementi strutturali. ********** Cos'è il Body e gli elementi strutturali? Corso html 5. Di Roberto Abutzu. *********** Quarta parte: Body ed elementi strutturali. ********** Cos'è il Body e gli elementi strutturali? Riprendiamo il discorso, introducendo la tag Body e iniziando

Dettagli

a cura di Maria Finazzi

a cura di Maria Finazzi Esercitazioni di XML a cura di Maria Finazzi (11-19 gennaio 2007) e-mail: maria.finazzi@unipv.it pagine web: Il trattamento dell'informazione Testo a stampa: Come

Dettagli

HTML 1 AVVISO. Terminologia. Introduzione ad HTML. HyperText Markup Language

HTML 1 AVVISO. Terminologia. Introduzione ad HTML. HyperText Markup Language HTML 1 HyperText Markup Language AVVISO Martedì 4 ottobre in laboratorio ci saranno 2 turni: 11:00 12:15 matricole pari 12:30 13:45 matricole dispari Introduzione ad HTML Documenti HTML Tag di markup Formattazione

Dettagli

WHITE PAPER Per Sql-Injection si intendono comunemente tutti quegli attacchi ad un'applicazione, solitamente Web, in cui il programma esegue query su di un database SQL utilizzando variabili passate dall'utente

Dettagli

TEMI - Struttura. I file del tema

TEMI - Struttura. I file del tema TEMI - Struttura - Ci sono due possibilità per modificare un tema: - Tramite l editor di amministrazione (AspettoàEditor), che consente di selezionare modificare i file (NOTA: copiare il file prima di

Dettagli

Introduzione al Linguaggio HTML

Introduzione al Linguaggio HTML Introduzione al Linguaggio HTML 2 Cosa e l HTML HTML = Hyper Text Markup Language Serve per produrre documenti nel WWW (World Wide Web) Utilizza un insieme predefinito di marcatori (TAG) per definire la

Dettagli

Form Editor. Dove NomeProfilo è personalizzabile.

Form Editor. Dove NomeProfilo è personalizzabile. Form Editor Il tema permette di generare automaticamente dei moduli per la raccolta di dati in tre semplici step: 1. Si crea una tabella nel database per la raccolta dei dati. Per la creazione si parte

Dettagli

Applicazioni e Architetture Internet. T. Catarci, M. Scannapieco, Corso di Basi di Dati, A.A. 2008/2009, Sapienza Università di Roma

Applicazioni e Architetture Internet. T. Catarci, M. Scannapieco, Corso di Basi di Dati, A.A. 2008/2009, Sapienza Università di Roma Applicazioni e Architetture Internet 1 Introduzione Introduzione alle architetture a tre livelli Formati di dati per il Web HTML, XML, DTD 2 Componenti dei sistemi dataintensive Tre tipi separati di funzionalità:

Dettagli

Esercizi ed appunti PHP

Esercizi ed appunti PHP Indice 1. Informazioni sulla versione PHP installata... 2 2. Generatore di numeri random... 2 3. Contatore di visitatori... 2 4. Programma di inserimento di un nuovo record in un file... 4 scrivi_record.htm...

Dettagli

Rilevazione e analisi. Qlik Sense 1.0.3 Copyright 1993-2015 QlikTech International AB. Tutti i diritti riservati.

Rilevazione e analisi. Qlik Sense 1.0.3 Copyright 1993-2015 QlikTech International AB. Tutti i diritti riservati. Rilevazione e analisi Qlik Sense 1.0.3 Copyright 1993-2015 QlikTech International AB. Tutti i diritti riservati. Copyright 1993-2015 QlikTech International AB. Tutti i diritti riservati. Qlik, QlikTech,

Dettagli

Introduzione a XML: Document Type Definition; parser XML; XML-schema; extensible Stylesheet Language. a.a. 2004/05 Tecnologie Web 1

Introduzione a XML: Document Type Definition; parser XML; XML-schema; extensible Stylesheet Language. a.a. 2004/05 Tecnologie Web 1 Introduzione a XML: Document Type Definition; parser XML; XML-schema; extensible Stylesheet Language a.a. 2004/05 Tecnologie Web 1 XML - I XML (exstensible Markup Language): XML è un formato standard,

Dettagli

Settimana I...1. Giorno 1 - Introduzione all XSLT...3

Settimana I...1. Giorno 1 - Introduzione all XSLT...3 Settimana I...1 Giorno 1 - Introduzione all XSLT...3 Generalità su XSLT...3 Introduzione a XML e XSLT... 4 Cos è XSLT?... 5 Che cosa fa XSLT?... 6 Come si presenta XSLT?... 6 XSLT e la famiglia di XML...

Dettagli

Esercitazione 8. Basi di dati e web

Esercitazione 8. Basi di dati e web Esercitazione 8 Basi di dati e web Rev. 1 Basi di dati - prof. Silvio Salza - a.a. 2014-2015 E8-1 Basi di dati e web Una modalità tipica di accesso alle basi di dati è tramite interfacce web Esiste una

Dettagli

APPUNTI DI HTML (SECONDA LEZIONE)

APPUNTI DI HTML (SECONDA LEZIONE) APPUNTI DI HTML (SECONDA LEZIONE) 1. TITOLI, PARAGRAFI, BLOCCHI DI TESTO E CONTENITORI. E utile scrivere il testo che vogliamo inserire nella nostra pagina html all interno di appositi tag. La pagina sarà

Dettagli

HTML. giovedì 22 settembre 11

HTML. giovedì 22 settembre 11 HTML Webmaster con strumenti Open Source AGENDA HTML/XHTML Introduzione Html Struttura di una pagina Html Fogli di stile (CSS) HTML/XHTML L'organizzazione che si occupa di standardizzare la sintassi del

Dettagli

Rappresentare i file XML - XSL

Rappresentare i file XML - XSL Rappresentare i file XML - XSL Laura Papaleo papaleo@disi.unige.it CSS2, XSL, XSLT, XPath 1 XSL - exstensible Stylesheet Language XSL Raccomandazione del W3C (2001) Per aumentare la flessibilità dello

Dettagli

INSTALLAZIONE DI JOOMLA! Guida alla installazione di Joomla!

INSTALLAZIONE DI JOOMLA! Guida alla installazione di Joomla! Guida di Virtuemart INSTALLAZIONE DI JOOMLA! Guida alla installazione di Joomla! INDICE INDICE... 1 INTRODUZIONE... 2 DONWLOAD... 2 INSTALLAZIONE... 2 REQUISITI MINIMI... 3 PASSAGGIO 1... 4 PASSAGGIO 2...

Dettagli

LABORATORIO PER IL DESIGN DELLE INTERFACCE PEGORARO ALESSANDRO CASSERO.IT MANUALE DI AGGIORNAMENTO, MANUTENZIONE E USO DEL SITO

LABORATORIO PER IL DESIGN DELLE INTERFACCE PEGORARO ALESSANDRO CASSERO.IT MANUALE DI AGGIORNAMENTO, MANUTENZIONE E USO DEL SITO CASSERO.IT MANUALE DI AGGIORNAMENTO, MANUTENZIONE E USO DEL SITO 1 Installazione e requisiti per il corretto funzionamento del sito: L istallazione è possibile sui più diffusi sistemi operativi. Il pacchetto

Dettagli

Simulazione seconda prova Esame di Stato Sito Web - Gestione di un centro agroalimentare all ingrosso (Parte seconda)

Simulazione seconda prova Esame di Stato Sito Web - Gestione di un centro agroalimentare all ingrosso (Parte seconda) Simulazione seconda prova Esame di Stato Sito Web - Gestione di un centro agroalimentare all ingrosso (Parte seconda) Il candidato realizzi inoltre il sito Internet del centro che deve permettere, tra

Dettagli

Tecnologie e Programmazione Web

Tecnologie e Programmazione Web Presentazione 1 Tecnologie e Programmazione Web Html, JavaScript e PHP RgLUG Ragusa Linux Users Group SOftware LIbero RAgusa http://www.solira.org - Nunzio Brugaletta (ennebi) - Reti 2 Scopi di una rete

Dettagli

Web Programming Specifiche dei progetti

Web Programming Specifiche dei progetti Web Programming Specifiche dei progetti Paolo Milazzo Anno Accademico 2010/2011 Argomenti trattati nel corso Nel corso di Web Programming sono state descritti i seguenti linguaggi (e tecnologie): HTML

Dettagli

Al giorno d oggi, i sistemi per la gestione di database

Al giorno d oggi, i sistemi per la gestione di database Introduzione Al giorno d oggi, i sistemi per la gestione di database implementano un linguaggio standard chiamato SQL (Structured Query Language). Fra le altre cose, il linguaggio SQL consente di prelevare,

Dettagli

1 Creazione pagine web utente

1 Creazione pagine web utente 1 Creazione pagine web utente Con il nuovo sistema operativo SFW184 è stata implementata la possibilità di creare pagine web direttamente dall'utente, queste pagine potranno essere trasferite nelle directory

Dettagli

Corso di PHP. Prerequisiti. 6.1 PHP e il web 1. Conoscenza HTML Tecnica della programmazione Principi di programmazione web

Corso di PHP. Prerequisiti. 6.1 PHP e il web 1. Conoscenza HTML Tecnica della programmazione Principi di programmazione web Corso di PHP 6.1 PHP e il web 1 1 Prerequisiti Conoscenza HTML Tecnica della programmazione Principi di programmazione web 2 1 Introduzione In questa Unità illustriamo alcuni strumenti di programmazione

Dettagli

Servizi web in LabVIEW

Servizi web in LabVIEW Servizi web in LabVIEW Soluzioni possibili, come si utilizzano. 1 Soluzioni possibili WEB SERVER Dalla versione 5.1 di LabVIEW è possibile implementare un Web server che consente di operare da remoto sul

Dettagli

XSLT WWW. Fabio Vitali 14 aprile 2000

XSLT WWW. Fabio Vitali 14 aprile 2000 XSLT Fabio Vitali 14 aprile 2000 Introduzione Oggi esaminiamo in breve: XSLT, ovvero il linguaggio di stile di XML. 2 XSL: un linguaggio di stylesheet Poiché nessun elemento di XML possiede un significato

Dettagli

Internet Architettura del www

Internet Architettura del www Internet Architettura del www Internet è una rete di computer. Il World Wide Web è l insieme di servizi che si basa sull architettura di internet. In una rete, ogni nodo (detto host) è connesso a tutti

Dettagli

CONTENUTI 1. INTRODUZIONE...3 2. CONCETTI BASICI SU EQUINOX CMS XPRESS...5 3. ACCESSO A EQUINOX CMS XPRESS...9 4. PAGINA D INIZIO...

CONTENUTI 1. INTRODUZIONE...3 2. CONCETTI BASICI SU EQUINOX CMS XPRESS...5 3. ACCESSO A EQUINOX CMS XPRESS...9 4. PAGINA D INIZIO... CONTENUTI 1. INTRODUZIONE...3 DEFINIZIONE...3 ELEMENTI DEL SERVIZIO...3 TECNOLOGIA E OPERAZIONE...3 WORKFLOW E GRAFICO DI PROCESSI...4 2. CONCETTI BASICI SU EQUINOX CMS XPRESS...5 STRUTTURA...5 OGGETTI...5

Dettagli

Corso di PHP. Prerequisiti. 1 - Introduzione

Corso di PHP. Prerequisiti. 1 - Introduzione Corso di PHP 1 - Introduzione 1 Prerequisiti Conoscenza HTML Principi di programmazione web Saper progettare un algoritmo Saper usare un sistema operativo Conoscere il concetto di espressione 2 1 Introduzione

Dettagli

extensible Markup Language

extensible Markup Language XML a.s. 2010-2011 extensible Markup Language XML è un meta-linguaggio per definire la struttura di documenti e dati non è un linguaggio di programmazione un documento XML è un file di testo che contiene

Dettagli

Introduzione al linguaggio XSL (exensible Styles Language) XSLT(eXensible Styles Language Trasformations)

Introduzione al linguaggio XSL (exensible Styles Language) XSLT(eXensible Styles Language Trasformations) Introduzione al linguaggio XSL (exensible Styles Language) XSLT(eXensible Styles Language Trasformations) Lezione del Corso Interazione Uomo Macchina 1, Docente Francesco Mele Corso di Laurea in Informatica

Dettagli

XML. Concetti principali. Risultato possibile. Differenze tra XML e HTML

XML. Concetti principali. Risultato possibile. Differenze tra XML e HTML Concetti principali Un documento XML contiente delle istruzioni particolari chiamate tag scritte in forma di coppia di parentesi (metalinguaggio con parentesi) Daniele Marini XML questa

Dettagli

Interazione con l utente : i moduli.

Interazione con l utente : i moduli. Interazione con l utente : i moduli. Nelle lezioni fin qui riportate, non abbiamo mai trattato l input di utente. Nelle applicazioni web, l input dell utente si acquisisce tramite i moduli (o FORM) HTML.

Dettagli

PHP e Structured Query Language

PHP e Structured Query Language Esercitazioni del corso di Tecnologie per la Comunicazione Aziendale PHP e Structured Query Language Marco Loregian loregian@disco.unimib.it www.siti.disco.unimib.it/didattica/tca2008 Interrogazioni (ripasso)

Dettagli

Introduzione allo sviluppo Web. Studium Generale, a.a. 2013-2014, II semestre

Introduzione allo sviluppo Web. Studium Generale, a.a. 2013-2014, II semestre Introduzione allo sviluppo Web Studium Generale, a.a. 2013-2014, II semestre 1 Contatto Daniel Graziotin daniel.graziotin@unibz.it http://ineed.coffee/teaching/introdu zione-allo-sviluppo-web 2 Esame Esame

Dettagli

Corso di Laurea Specialistica in Ingegneria Informatica. Corso di Linguaggi e Tecnologie Web A. A. 2011-2012. Language) Stylesheet.

Corso di Laurea Specialistica in Ingegneria Informatica. Corso di Linguaggi e Tecnologie Web A. A. 2011-2012. Language) Stylesheet. Corso di Laurea Specialistica in Ingegneria Informatica Corso di Linguaggi e Tecnologie Web A. A. 2011-2012 XSL (extensible( Stylesheet Language) Eufemia TINELLI Contenuti XSL = XSLT + XSL-FO (+ XPath)

Dettagli

G I O R D A N I A L E S S A N D R A I T T S E R A L E G. M A R C O N I

G I O R D A N I A L E S S A N D R A I T T S E R A L E G. M A R C O N I Introduzione ad XML G I O R D A N I A L E S S A N D R A I T T S E R A L E G. M A R C O N I XML XML (Extensible Markup Language) è un insieme standard di regole sintattiche per modellare la struttura di

Dettagli

HTML 1. HyperText Markup Language

HTML 1. HyperText Markup Language HTML 1 HyperText Markup Language Introduzione ad HTML Documenti HTML Tag di markup Formattazione del testo Collegamenti ipertestuali Immagini Tabelle Form in linea (moduli) Tecnologie di Sviluppo per il

Dettagli

Struttura logica di un programma

Struttura logica di un programma Struttura logica di un programma Tutti i programmi per computer prevedono tre operazioni principali: l input di dati (cioè l inserimento delle informazioni da elaborare) il calcolo dei risultati cercati

Dettagli

HTML per tu+ Chiara Pere+

HTML per tu+ Chiara Pere+ HTML per tu+ Chiara Pere+ Cos é L HTML è il linguaggio con cui potete indicare come i vari elemen7 saranno dispos7 in una pagina Web. L estensione del file è.html e verrà visualizzato corre?amente trascinandolo

Dettagli

TECNOLOGIE BASATE SU XML PER LA PUBBLICAZIONE DINAMICA DI ARCHIVI BIBLIOGRAFICI

TECNOLOGIE BASATE SU XML PER LA PUBBLICAZIONE DINAMICA DI ARCHIVI BIBLIOGRAFICI POLITECNICO DI TORINO FACOLTÀ DI ORGANIZZAZIONE D IMPRESA E INGEGNERIA GESTIONALE CORSO DI LAUREA IN INGEGNERIA LOGISTICA E DELLA PRODUZIONE TESI DI LAUREA TECNOLOGIE BASATE SU XML PER LA PUBBLICAZIONE

Dettagli

HTML HTML. HyperText Markup Language. Struttura di un documento. Gli elementi essenziali di un documento HTML sono i seguenti TAG: ...

HTML HTML. HyperText Markup Language. Struttura di un documento. Gli elementi essenziali di un documento HTML sono i seguenti TAG: <HTML>... HTML HyperText Markup Language Struttura di un documento HTML Gli elementi essenziali di un documento HTML sono i seguenti TAG: ... ... ... Struttura di un documento

Dettagli

Sistema integrato dei portali RAS: specifiche di integrazione

Sistema integrato dei portali RAS: specifiche di integrazione Sistema integrato dei portali RAS: specifiche di integrazione Linee guida tecniche per l'integrazione con il presentation layer del CMS RAS Data: File: Allegato 3 - Specifiche di integrazione SIP-RAS.odt

Dettagli

Passaggio dei dati tra HTML e PHP : array superglobali $_GET e $_POST

Passaggio dei dati tra HTML e PHP : array superglobali $_GET e $_POST Passaggio dei dati tra HTML e PHP : array superglobali $_GET e $_POST I valori inviati da un modulo (con metodo post o get), sono automaticamente memorizzati da PHP sia in variabili di ambiente associate

Dettagli

ACM ARIADNE CONTENT MANAGER MANUALE DI PRODUZIONE TEMPLATE

ACM ARIADNE CONTENT MANAGER MANUALE DI PRODUZIONE TEMPLATE ACM ARIADNE CONTENT MANAGER MANUALE DI PRODUZIONE TEMPLATE SOMMARIO SOMMARIO...2 1 INTRODUZIONE...3 1.1 SCOPO DEL DOCUMENTO...3 1.2 A CHI È RIVOLTO...3 2 IMPOSTAZIONE CONCETTUALE...3 2.1 ARCHITETTURA DELLA

Dettagli

Il linguaggio PHP. Parte I Introduzione. Paolo Milazzo

Il linguaggio PHP. Parte I Introduzione. Paolo Milazzo Il linguaggio PHP Parte I Introduzione Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it A.A. 2010/2011 Paolo Milazzo (Università di Pisa)

Dettagli

Richiesta pagina PHP (es: index.php)

Richiesta pagina PHP (es: index.php) PHP PHP = personal home page SERVER Richiesta pagina PHP (es: index.php) Server Web (Apache) in ascolto sulla porta 80, si accorge che la pagina richiesta è una pagina PHP in base all'estensione o con

Dettagli

Creare documenti XML. La natura epistemologica della codifica. Perché comprare XML? La struttura gerarchica ordinata. Riassumendo le componenti

Creare documenti XML. La natura epistemologica della codifica. Perché comprare XML? La struttura gerarchica ordinata. Riassumendo le componenti Lez. 7 Creare documenti XML La codifica deve raggiungere 2 traguardi: Accessibilità tecnica Permanenza a lungo termine 05/03/12 Perché comprare XML La natura epistemologica della codifica HTML Descrive

Dettagli

Svantaggi delle servlet

Svantaggi delle servlet Svantaggi delle servlet Le servlet sono la tecnologia principale di J2EE per comunicare con i browser dei client. Tuttavia ci sono degli inconvenienti per gli sviluppatori di applicazioni web: le servlet

Dettagli

Progetto LiberA. Studente/Relatore: Antonio Zambito Matricola: 124/1032 CdL: Informatica (0124) Prof.: Raffaele Montella

Progetto LiberA. Studente/Relatore: Antonio Zambito Matricola: 124/1032 CdL: Informatica (0124) Prof.: Raffaele Montella Progetto LiberA L implementazione di un applicazione Web (PHP, CSS3, HTML5, MYSQL, JAVASCRIPT) per facilitare la gestione di un associazione culturale, contestualmente un associazione di danza. Nasce dalla

Dettagli

Javascript. Politecnico di Milano Facoltà del Design Bovisa Elementi di Informatica e Reti di calcolatori

Javascript. Politecnico di Milano Facoltà del Design Bovisa Elementi di Informatica e Reti di calcolatori Javascript Politecnico di Facoltà del Design Bovisa Elementi di Informatica e Reti di calcolatori Ing. Claudio Menghi Dipartimento di Elettronica e Informazione menghi@elet.polimi.it http://home.dei.polimi.it/menghi

Dettagli

Obiettivo dell esercitazione

Obiettivo dell esercitazione Database e Web - Esercitazioni ASP - Andrea Proli proliand@csr.unibo.it Laboratorio di Basi di Dati A.A. 2005/2006 Obiettivo dell esercitazione L obiettivo finale dell esercitazione è quello di creare

Dettagli

Sommario. Settimana - Gli elementi fondamentali... 1. Introduzione...xv. Giorno 1 - I linguaggi di markup...3

Sommario. Settimana - Gli elementi fondamentali... 1. Introduzione...xv. Giorno 1 - I linguaggi di markup...3 000B-XML-Somm.fm Page iii Wednesday, June 12, 2002 9:25 AM Sommario Introduzione...xv A chi si rivolge questo libro...xvi Convenzioni usate in questo libro...xvi Settimana - Gli elementi fondamentali...

Dettagli

Indice. Introduzione. PARTE PRIMA PHP: i fondamenti 1

Indice. Introduzione. PARTE PRIMA PHP: i fondamenti 1 Indice Introduzione XV PARTE PRIMA PHP: i fondamenti 1 Capitolo 1 Perché PHP e MySQL? 3 1.1 Cos è PHP? 3 1.2 Cos è MySQL? 4 1.3 La storia di PHP 5 1.4 La storia di MySQL 6 1.5 Le ragioni per amare PHP

Dettagli

OBIETTIVI SPECIFICI DI APPRENDIMENTO

OBIETTIVI SPECIFICI DI APPRENDIMENTO Disciplina:... Anno scolastico: 20.../20... Classe/i :... Docente:... DI APPRENDIMENTO SEZIONE 1 Premesse matematiche Nozioni fondamentali sui sistemi di numerazione Sistemi di numerazione in base diversa

Dettagli

Tutorial di HTML HyperText Markup Language

Tutorial di HTML HyperText Markup Language Tutorial di HTML HyperText Markup Language 1 Indice L'HTML E I BROWSER... 3 STRUTTURA PAGINA... 3 TESTO... 5 FONT DEL TESTO... 5 COLORE DEL TESTO... 5 DIMENSIONI DEL TESTO... 6 STILE DEL TESTO... 6 TITOLI,

Dettagli

ESAME DI MATURITA 2015 Seconda prova scritta indirizzo Informatica Abacus Informatica

ESAME DI MATURITA 2015 Seconda prova scritta indirizzo Informatica Abacus Informatica ESAME DI MATURITA 2015 Seconda prova scritta indirizzo Informatica Abacus Informatica Premessa. La traccia comprende due parti. La prima, in linea con la tradizione, chiede l implementazione di un Data

Dettagli

GUIDA UTENTE FATTURA IMPRESA

GUIDA UTENTE FATTURA IMPRESA GUIDA UTENTE FATTURA IMPRESA (Vers. 4.5.0) Installazione... 2 Prima esecuzione... 5 Login... 6 Funzionalità... 7 Documenti... 8 Creazione di un nuovo documento... 9 Ricerca di un documento... 17 Calcolare

Dettagli

Linguaggi per il web oltre HTML: XML

Linguaggi per il web oltre HTML: XML Linguaggi per il web oltre HTML: XML Luca Console Con XML si arriva alla separazione completa tra il contenuto e gli aspetti concernenti la presentazione (visualizzazione). XML è in realtà un meta-formalismo

Dettagli

Capire i Template. Guida estremamente basilare per iniziare a realizare template

Capire i Template. Guida estremamente basilare per iniziare a realizare template Joomla! 2.5 Capire i Template Guida estremamente basilare per iniziare a realizare template [Una guida molto semplice] Ciao a tutti, iniziamo oggi un percorso che ci porterà a comprendere meglio il modo

Dettagli

Breve introduzione curata da Alessandro Benedetti. Struts2-Introduzione e breve guida

Breve introduzione curata da Alessandro Benedetti. Struts2-Introduzione e breve guida Breve introduzione curata da Alessandro Benedetti Struts2-Introduzione e breve guida 22-11- 2008 1 Struts 2 Costruisci,attiva e mantieni! Apache Struts 2 è un framework elegante ed estensibile per creare

Dettagli

Comandi filtro: sed. Se non si specificano azioni, sed stampa sullo standard output le linee in input, lasciandole inalterate.

Comandi filtro: sed. Se non si specificano azioni, sed stampa sullo standard output le linee in input, lasciandole inalterate. Comandi filtro: sed Il nome del comando sed sta per Stream EDitor e la sua funzione è quella di permettere di editare il testo passato da un comando ad un altro in una pipeline. Ciò è molto utile perché

Dettagli

Gestire le sessioni con le Servlet

Gestire le sessioni con le Servlet PROGETTO Gestire le sessioni con le Servlet Con il termine sessione si intende un insieme di attività correlate, con una o alcune di queste che sono preliminari ad altre. Si pensi, per esempio, a un qualsiasi

Dettagli

Architetture Web I Server Web e gli Standard della Comunicazione

Architetture Web I Server Web e gli Standard della Comunicazione Architetture Web I Server Web e gli Standard della Comunicazione Alessandro Martinelli alessandro.martinelli@unipv.it 27 Marzo 2012 Architetture Architetture Web Protocolli di Comunicazione Il Client Side

Dettagli

RELAZIONE DI PROGETTO DELL ESAME STRUMENTI PER APPLICAZIONI WEB

RELAZIONE DI PROGETTO DELL ESAME STRUMENTI PER APPLICAZIONI WEB RELAZIONE DI PROGETTO DELL ESAME STRUMENTI PER APPLICAZIONI WEB Studente: Nigro Carlo N.mat.: 145559 Tema: Negozio virtuale Nome sito: INFOTECH Url: http://spaw.ce.unipr.it/progetti/infotech Per il progetto

Dettagli

PHP e MySQL. Guida scaricata da www.webstyling.it

PHP e MySQL. Guida scaricata da www.webstyling.it Home -> Manuali & Tutorials -> Guida PHP PHP e MySQL E' possibile realizzare delle applicazioni in php appoggiandosi ad un database, quale ad esempio MySQL. Con le novità introdotte ai tempi di MySQL 4.1

Dettagli

Indice. Introduzione PARTE PRIMA PHP: I FONDAMENTI

Indice. Introduzione PARTE PRIMA PHP: I FONDAMENTI 00som_PHP_4320_2 12-03-2003 20:59 Pagina V Indice Introduzione XV PARTE PRIMA PHP: I FONDAMENTI Capitolo 1 Perché PHP? 3 1.1 Cos è PHP? 3 1.2 La storia di PHP 4 1.3 Le ragioni per amare PHP 5 1.4 Sommario

Dettagli

FileMaker Server 12. Pubblicazione Web personalizzata con XML

FileMaker Server 12. Pubblicazione Web personalizzata con XML FileMaker Server 12 Pubblicazione Web personalizzata con XML 2007 2012 FileMaker, Inc. Tutti i diritti riservati. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker e Bento

Dettagli

Introduzione. Portare HTML nella famiglia XML Mantenere compatibilità con i software che supportano HTML

Introduzione. Portare HTML nella famiglia XML Mantenere compatibilità con i software che supportano HTML Lezione 8 XHTML Introduzione " XHTML = HTML + XML " HTML: linguaggio di marcatura per presentare i contenuti di una pagina web " XML: super-linguaggio che consente la creazione di nuovi linguaggi di marcatura

Dettagli

Scaletta. Estensioni UML per il Web. Applicazioni web - 2. Applicazioni web. WAE: Web Application Extension for UML. «Client page»

Scaletta. Estensioni UML per il Web. Applicazioni web - 2. Applicazioni web. WAE: Web Application Extension for UML. «Client page» Scaletta Estensioni UML per il Web Michele Zennaro 14-05-2004 Le applicazioni web Scopo di un estensione UML per il web Due punti di vista Uno più astratto Uno più vicino ai file fisici conclusivo Commenti

Dettagli

Dove die( stringa ) è una funzione di utilità del php che stampa la stringa e fa terminare lo script.

Dove die( stringa ) è una funzione di utilità del php che stampa la stringa e fa terminare lo script. I file in PHP Un file è un archivio elettronico contenente informazioni (dati) memorizzate su memoria di massa. Il file ha la caratteristica di consentire la lettura, la scrittura e la modifica dei dati

Dettagli

Web Intelligence. Argomenti 10/5/2010. abaroni@yahoo.com

Web Intelligence. Argomenti 10/5/2010. abaroni@yahoo.com Web Intelligence Argomenti Cap.1 Introduzione Cap.2 Creazione/Modifica di QUERY (semplici,custom,unioni) Cap.3 Uso dei Filtri e delle Condizioni Slide 2 - Copyright 2007 Business Objects SA - All Rights

Dettagli

Manuale d utilizzo. Gestione CMS. Stato: Gennaio 2011 / Versione: SITE 3.0. www.siteprofessional.com

Manuale d utilizzo. Gestione CMS. Stato: Gennaio 2011 / Versione: SITE 3.0. www.siteprofessional.com Manuale d utilizzo Gestione CMS Stato: Gennaio 2011 / Versione: SITE 3.0 www.siteprofessional.com Manuale d utilizzo Gestione CMS Introduzione pag. 2 Accesso a SITE pag. 3 Gestione CMS pag. 4 Pulsantiera,

Dettagli

Laboratorio di Basi di Dati e Web

Laboratorio di Basi di Dati e Web Laboratorio di Basi di Dati e Web Docente: Alberto Belussi Lezione 8 Java Server Pages Java Server Pages è essenzialmente un modo più comodo per il programmatore dell applicazione web di scrivere una Servlet.

Dettagli

INFORMATICA. Applicazioni WEB a tre livelli con approfondimento della loro manutenzione e memorizzazione dati e del DATABASE.

INFORMATICA. Applicazioni WEB a tre livelli con approfondimento della loro manutenzione e memorizzazione dati e del DATABASE. INFORMATICA Applicazioni WEB a tre livelli con approfondimento della loro manutenzione e memorizzazione dati e del DATABASE. APPLICAZIONI WEB L architettura di riferimento è quella ampiamente diffusa ed

Dettagli