TECNOLOGIE BASATE SU XML PER LA PUBBLICAZIONE DINAMICA DI ARCHIVI BIBLIOGRAFICI

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "TECNOLOGIE BASATE SU XML PER LA PUBBLICAZIONE DINAMICA DI ARCHIVI BIBLIOGRAFICI"

Transcript

1 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 DINAMICA DI ARCHIVI BIBLIOGRAFICI Relatore: Prof. Fulvio Corno Laureando: Nico Tanzarella Anno Accademico

2 INDICE Capitolo I - INTRODUZIONE Capitolo II - LINGUAGGI UTILIZZATI 1. Il linguaggio XML pag Il linguaggio XSD 4 3. Il linguaggio XSL 5 4. Elaborazione di file XML nel linguaggio PHP 7 Capitolo III - CASO DI STUDIO 1. Campo di applicazione 8 2. Obiettivi del progetto 8 Capitolo IV - XML e XMLSchema 1. Il documento XML 9 2. e il relativo Schema 11 Capitolo V - SPECIFICA DEL PROBLEMA 1. Output desiderato Principali costrutti PHP per la manipolazione di file XML 18 Capitolo VI - IL FOGLIO DI STILE XSL 1. Costrutti XSLT Il codice PHP Risultato ottenuto 29 Capitolo VII - CONCLUSIONI Appendice 1. Il file publications.xsd Il file xml_action.php 36 I

3 CAPITOLO I INTRODUZIONE L argomento della tesi che ora esamineremo riguarda l impiego di tecnologie web volte a consentire un facile utilizzo e un rapido aggiornamento dell informazione destinata ad essere condivisa sul web. Obiettivo di questa introduzione è enunciare il campo di applicazione di tali tecnologie e i linguaggi web utilizzati per l implementazione delle stesse. Entrambi gli argomenti verranno affrontati in dettaglio nel corso della trattazione. L idea che sta alla base del progetto è il rifacimento della sezione pubblicazioni del sito che comprende quasi quattrocento voci. I motivi del rifacimento consistono sostanzialmente nell invecchiamento delle tecnologie utilizzate per realizzare la prima versione della sezione in questione e saranno illustrati nel terzo capitolo. L elenco di pubblicazioni presente sul sito è oggetto di ricerche e statistiche, perciò, il rifacimento ha reso necessario l impiego di tecnologie e linguaggi che consentano di interagire con l informazione disponibile. Si è pertanto deciso di ricopiare tutte le pubblicazioni in un documento XML accompagnato da un opportuno Schema che ne definisce la struttura. La visualizzazione del contenuto dell XML è invece affidata ad un foglio di stile XSL che trasforma il documento XML di partenza in HTML. La realizzazione dell XSL costituisce la particolarità del caso di studio affrontato: il documento XSL non è un file statico ma viene costruito dinamicamente sfruttando le potenzialità messe a disposizione dal linguaggio PHP. Tale procedimento è necessario poiché, come abbiamo già detto, l elenco delle pubblicazioni può essere oggetto di ricerche perciò il contenuto del foglio di stile cambia in funzione delle stesse. Concludiamo questa breve introduzione riassumendo il contenuto dei prossimi capitoli. Il secondo capitolo presenta una descrizione non dettagliata dei linguaggi XML, XSD e XSL e illustra i vantaggi della trasformazione XML-HTML lato server. Il capitolo successivo offre una rapida descrizione del sito web e dei motivi che hanno determinato il rifacimento della sezione dedicata alle pubblicazioni. La realizzazione del documento XML contenente le pubblicazioni e del relativo Schema è invece l argomento del quarto capitolo. Il quinto capitolo precisa quale è il risultato che si intende ottenere mediante il foglio di stile XSL, descrive il meccanismo che consente all utente di effettuare le ricerche e introduce i principali costrutti PHP utilizzati per la costruzione e l applicazione del foglio di stile XSL al documento XML (si tratta di alcune delle funzioni delle librerie DOM e XSL). Infine, il sesto capitolo è

4 dedicato alla costruzione del foglio di stile XSL e alla presentazione del risultato ottenuto mentre l ultimo capitolo contiene le conclusioni. 2

5 CAPITOLO II LINGUAGGI UTILIZZATI 1. Il linguaggio XML L acronimo XML sta per: Extensible Markup Language. Si tratta di un linguaggio pensato per contenere, descrivere e condividere informazione sul web. Così come il ben più noto HTML, anche i documenti XML sono formati da marcatori (o tag) ognuno dei quali può contenere un pezzo di informazione (o semplicemente dato ). Il tag e l informazione in esso contenuta prendono il nome di elemento (o nodo). Un semplice esempio di elemento XML può essere il seguente: <colore>rosso</colore> Il tag colore contiene il dato rosso. Ogni elemento può inoltre essere accompagnato da uno o più attributi la cui sintassi riprende quella dell HTML: gli attributi vengono inseriti nel tag di apertura e il valore ad essi associato deve essere racchiuso tra apici (singoli o doppi). In definitiva, possiamo dire che un documento XML è una lista più o meno lunga di elementi ordinati secondo una precisa struttura gerarchica: ogni elemento può contenere un numero illimitato di elementi figli e può essere contenuto in elementi padri. Come l esempio della pagina precedente lascia intuire, l XML consente all autore del documento di decidere il nome dei vari tag con alcune limitazioni: i nomi non possono contenere spazi; i nomi non possono cominciare con un carattere numerico o con un carattere di punteggiatura; i nomi non possono cominciare con la sequenza di caratteri xml (o XML, o Xml ecc ). Oltre a queste semplici direttive riguardanti i nomi dei tag, un documento XML deve rispettare le seguenti regole di sintassi: ogni documento XML deve contenere un solo elemento di massimo livello (root element o elemento radice) che contenga tutti gli altri elementi del documento; ogni elemento deve avere un tag di chiusura; gli elementi devono essere correttamente annidati: i tag di chiusura devono seguire l ordine inverso dei rispettivi tag di apertura; 3

6 l XML fa distinzione tra caratteri minuscoli e caratteri maiuscoli (linguaggio case sensitive), perciò il tag di apertura e il tag di chiusura di un elemento devono coincidere anche sotto questo aspetto; i valori degli attributi devono sempre essere racchiusi tra apici. Un documento XML che rispetta tutte queste regole è detto ben formato (dall inglese well formed). 2. Il linguaggio XSD Come abbiamo detto nel paragrafo precedente, un documento XML è caratterizzato da una precisa struttura gerarchica che stabilisce le relazioni di parentela tra i nodi. Tale struttura viene definita, mediante il linguaggio XSD, all interno di un altro documento chiamato XMLSchema (o semplicemente Schema). Così come accade per un documento XML, anche uno Schema possiede un root element che racchiude l intero contenuto dello stesso: <xs:schema xmlns:xs=" contenuto </xs:schema> L attributo xmlns:xs definisce il namespace di riferimento. Oltre alla gerarchia di un documento XML, uno Schema permette di definire il tipo di dato contenuto in ogni elemento (uno o più sotto-elementi, testo puro, valore numerico ecc ) e gli attributi eventualmente associati ad ognuno di essi. Consideriamo il seguente frammento di Schema: <xs:element name="bookstore"> <xs:complextype> <xs:sequence> <xs:element name="book" type="xs:string" minoccurs="1" maxoccurs="unbounded"/> </xs:sequence> <xs:attribute name="id" type="xs:string"/> </xs:complextype> </xs:element> Tale blocco di codice definisce struttura e contenuto di due diversi elementi : bookstore e book. Il primo, definito complesso poiché contiene sottoelementi, consiste in una sequenza di elementi figli chiamati book contenenti una stringa di caratteri (type="xs:string"). La numerosità minima di tali elementi (definiti semplici perché non contengono sotto-elementi) è pari ad uno (minoccurs="1") mentre la numerosità massima degli stessi è illimitata (maxoccurs="unbounded"). L istruzione : 4

7 <xs:attribute name="id" type="xs:string"/> stabilisce inoltre che l elemento bookstore è accompagnato da un attributo id il cui contenuto è una stringa di caratteri. Una volta stabilita la struttura del documento XML mediante lo Schema, è possibile mettere in relazione i due file in modo tale che lo Schema convalidi la struttura del documento XML. In definitiva, mentre il documento XML racchiude il contenuto, lo Schema definisce tutte le specifiche strutturali relative al contenuto stesso. L uso degli Schema non è obbligatorio ma è consigliato poiché impedisce di commettere errori strutturali e logici nella stesura o nell aggiornamento di un documento XML. Il quarto capitolo contiene un esempio commentato di documento XML a cui è associato il relativo Schema. 3. Il linguaggio XSL Nel capitolo precedente abbiamo presentato l XML come un linguaggio pensato per il web ma non abbiamo spiegato come un documento XML riesca ad interagire positivamente con i browser. In altre parole, è necessario descrivere come vengono definite le specifiche di visualizzazione di un documento XML. A differenza dell HTML, un documento XML non è direttamente interpretabile dai browser ed è quindi necessario trasformare il documento XML in un altro tipo di documento riconosciuto dai browser (generalmente HTML). Ciò è reso possibile grazie al linguaggio XSL (Extensible Stylesheet Language). Se volessimo continuare il parallelo con l HTML, potremmo dire che,mentre il linguaggio CSS definisce i fogli di stile per i documenti HTML, l XSL definisce i fogli di stile per i documenti XML. In realtà, questo non è propriamente esatto poiché l XSL è un linguaggio molto più complesso rispetto ai semplici CSS. Per meglio comprendere le reali potenzialità dell XSL, distinguiamo innanzitutto le tre componenti principali di quest ultimo: XSLT (XSL Transformations): un linguaggio per trasformare un documento XML in un altro tipo di documento (ad es.: HTML); XPath (XML Path Language): un linguaggio per fare riferimento a parti specifiche di un documento XML (elementi, attributi ecc ); XSL-FO (XSL Formatting): un linguaggio per la formattazione di documenti XML. Oggetto di questa tesi saranno il linguaggio XSLT e il linguaggio XPath perciò la descrizione dei fogli di stile XSL presentata di seguito farà 5

8 riferimento a queste due sole componenti. Analogamente a quanto visto per gli Schema, anche il contenuto di un foglio di stile XSL viene inserito in un file esterno richiamato dal relativo documento XML mediante la direttiva di elaborazione: <?xml-stylesheet type= text/xsl href= stylesheet.xsl?> Per quanto riguarda invece la struttura di un foglio di stile, osserviamo innanzitutto che l intero contenuto di quest ultimo deve essere racchiuso all interno dell elemento radice <xsl:stylesheet>: <xsl:stylesheet version= 1.0 xmlns:xsl= contenuto </xsl:stylesheet> L attributo version specifica la versione del linguaggio XSL utilizzato mentre l attributo xmlns:xsl definisce il namespace di riferimento. Il contenuto del foglio di stile può ospitare qualunque costrutto (o elemento ) messo a disposizione dal linguaggio XSLT, ognuno dei quali è caratterizzato da un tag di apertura e uno di chiusura. Il costrutto più importante è indubbiamente l elemento template che presenta la seguente sintassi: <xsl:template match= espressione XPath > contenuto </xsl:template> Un template contiene un set di regole di visualizzazione che vengono applicate ogni qual volta viene incontrato un nodo del documento XML che soddisfa l espressione XPath adottata come valore dell attributo match. La selezione del nodo desiderato mediante il linguaggio XPath avviene specificando il percorso che separa il nodo stesso dal root element. Ad esempio, l istruzione: <xsl:template match= bookstore/book > </xsl:template> specifica che il template verrà applicato a tutti gli elementi book figli di bookstore, dove bookstore è il root element. Il contenuto di un template può includere, oltre a qualunque costrutto definito dall XSLT, tutti i tag tipici dell HTML (<html>, <body>, <div>, <table> ecc ). Proprio questa particolarità rende possibile la traduzione da XML a HTML. In definitiva, un foglio di stile XSL è un insieme di template ognuno dei quali processa una parte del documento XML associato all XSL. A questo punto è facile intuire che il tassello mancante tra XML e browser è un opportuno foglio di stile XSL che trasformi il documento XML di 6

9 partenza in HTML. I browser più recenti possiedono infatti un processore XSLT che, presi in input il documento XML e il relativo foglio di stile, opera autonomamente la trasformazione. Anche se questa soluzione funziona correttamente, possono comunque sorgere problemi legati al tipo e alla versione del browser utilizzato: come abbiamo detto, solo i browser più recenti possiedono un processore XSLT e ogni browser utilizza il proprio processore diverso da quello degli altri. Il prossimo paragrafo presenterà una più efficiente alternativa alla trasformazione lato client. 4. Elaborazione di file XML nel linguaggio PHP Il PHP (PHP: Hypertext Preprocessor) è un linguaggio open source potente e complesso utilizzato per numerose applicazioni una delle quali è la realizzazione di pagine web dinamiche (pagine web in grado di modificare autonomamente il proprio contenuto). Ad eccezione di alcuni particolari costrutti, la sintassi del PHP non sarà oggetto di questo elaborato. Il codice PHP può essere integrato direttamente nell HTML ma, a differenza di quest ultimo, viene interpretato lato server cioè prima che la pagina web giunga al browser. Questa caratteristica ci permette di superare i problemi descritti nel paragrafo precedente legati alla particolare tipologia di browser utilizzato dall utente. Il PHP permette infatti di definire un processore XSLT che, come nel caso descritto nel paragrafo precedente, sfrutta un opportuno foglio di stile XSL per trasformare un documento XML in HTML. La differenza fondamentale rispetto alla trasformazione lato browser consiste nel fatto che, sfruttando le potenzialità del server, è possibile fare in modo che il browser riceva HTML puro evitando che il browser stesso compia operazioni che vanno al di là della sua normale competenza. Il linguaggio PHP comprende inoltre numerose funzioni orientate agli oggetti (PHP DOM functions e XSL functions) che permettono di modificare e interagire sia con il documento XML, che con il foglio di stile ad esso associato. Il funzionamento del processore XSLT e le potenzialità delle funzioni in questione saranno descritte in dettaglio nel quinto capitolo. 7

10 CAPITOLO III CASO DI STUDIO 1. Campo di applicazione Le tecnologie web oggetto di questo elaborato sono state utilizzate per il rifacimento della sezione pubblicazioni del sito web: Si tratta del sito del gruppo di ricerca CAD che ha sede presso il Dipartimento di Automatica e Informatica del Politecnico di Torino. Le informazioni disponibili al suddetto indirizzo riguardano non solo i progetti, le pubblicazioni e le proposte di tesi realizzati dal gruppo, ma anche i docenti e i ricercatori che ne fanno parte. Per quanto riguarda invece i motivi che hanno determinato il rifacimento della sezione pubblicazioni, diciamo innanzitutto che il motore di ricerca che gestisce attualmente le pubblicazioni è stato scritto in PERL con una struttura dati simil-xml. Tale applicazione, presenta però alcuni difetti: difficile manutenzione dell informazione contenuta; nessun controllo su eventuali errori legati al codice; difficile estrapolazione di dati necessari per generare statistiche. 2. Obiettivi del progetto L obiettivo del progetto è sostanzialmente la risoluzione dei problemi prima enunciati mediante la rielaborazione del motore di ricerca con tecnologie più moderne. Tale risultato deve però essere ottenuto mantenendo tutte le funzionalità attualmente offerte dal sito. 8

11 CAPITOLO IV XML E XMLSCHEMA 1.Il documento XML Come anticipato nel primo capitolo, il punto di partenza del progetto in esame è il linguaggio XML. Più in particolare, tutte le pubblicazioni attualmente presenti sul sito cad.polito.it verranno ricopiate in un documento XML che costituirà una sorta di database continuamente aggiornabile ogni volta che ciò sarà necessario. Tale documento non esiste ancora poiché, per testare il funzionamento di quella che sarà la nuova sezione pubblicazioni, è stato sufficiente ricorrere a un piccolo estratto dell intero elenco disponibile. È importante sottolineare che vi sono sei diverse tipologie di pubblicazione: article (un articolo di giornale o rivista); book (un libro completo pubblicato da un editore); inbook (una parte di libro: capitolo, sezione o gruppo di pagine); inproceedings (un articolo discusso durante una conferenza); thesis (una tesi di Dottorato); techport (un report pubblicato da una scuola o da altra istituzione). Inoltre, uno stesso lavoro può essere pubblicato più di una volta (ad es. sia come articolo sia come parte di libro). Per rendere possibile la traduzione di tutte le informazioni associate ad ogni pubblicazione (o entry ) secondo la sintassi dell XML, sono stati definiti una serie di campi globali e specifici. Tutte le entry possiedono i seguenti campi globali: author(s), title, keyword(s), diffusion, language e abstract. Oltre a questi, vi sono due campi globali non obbligatori: url(s) e note. I campi specifici dipendono invece dal tipo di pubblicazione: article: journal, year, pages, volume, number, year, isbn, issn, doi; book: publisher, year, volume, edition, numpages, isbn, issn, doi; inbook: booktitle, pages, publisher, year, editor(s), volume, edition, isbn, issn, doi; inproceedings: conferencename, year, pages, booktitle, editor(s), organization, publisher, conferencelocation, isbn, issn, doi; thesis: school, year, advisor(s); techport: institution, year, type, number. I campi in grassetto sono obbligatori. È interessante notare che il campo year, pur essendo presente in ogni tipo di pubblicazione come campo 9

12 obbligatorio, non è stato inserito tra i campi globali. Ciò è dovuto al fatto che ogni entry può essere pubblicata più di una volta non necessariamente nello stesso anno. Riportiamo adesso un estratto del documento XML (publications.xml) contenente una sola entry (cioè una pubblicazione): <?xml version="1.0" encoding="utf-8"?> <publications xsi:nonamespaceschemalocation="publications.xsd" xmlns:xsi=" <entry code="tcad96a"> <title>gatto: a Genetic Algorithm for Automatic Test Pattern Generation for Large Synchronous Sequential Circuits</title> <authors> <author>f. Corno</author> <author>p. Prinetto</author> <author>m. Rebaudengo</author> <author>m. Sonza Reorda</author> </authors> <keywords> <keyword>approximate Methods</keyword> <keyword>evolutionary Algorithms</keyword> <keyword>genetic Algorithms</keyword> </keywords> <diffusion>int</diffusion> <language>en</language> <article> <journal>ieee Transactions on Computer-Aided Design</journal> <year>1996</year> <pages>pp </pages> <volume>vol. 15</volume> <number>no. 8</number> <isbn>320</isbn> </article> <inbook> <booktitle>from Theory to Sound Practice</booktitle> <pages>pp </pages> <publisher>ios Press</publisher> <year>1992</year> <editors> <editor> W. Joosen </editor> <editor> E. Milgrom </editor> </editors> </inbook> <abstract>...</abstract> </entry> </publications> 10

13 La prima riga del documento definisce la versione dell XML (1.0) e il set di caratteri utilizzato (utf-8). Subito dopo incontriamo il root element (publications) al quale sono associati due attributi: il primo lega il documento XML al relativo Schema (publications.xsd) mentre il secondo precisa il namespace di riferimento. Il successivo elemento è entry anch esso accompagnato da un attributo: code. Si tratta di un identificatore univoco la cui funzione verrà chiarita nel sesto capitolo. L elemento entry contiene tutte le informazioni che prima erano state definite campi ed è interessante osservare come ogni campo è stato tradotto in un elemento XML. Terminiamo questa descrizione facendo notare che il documento XML non è associato a nessun foglio di stile. Il motivo di questa scelta sarà spiegato nel prossimo capitolo. 2. e il relativo Schema In questo paragrafo ci limiteremo ad illustrare il codice XSD che definisce la struttura dell elemento entry e dell elemento article. La restante parte di codice non verrà descritta poiché contiene le medesime istruzioni che ci accingiamo a commentare. Ad ogni modo, l appendice di pag. 35 riporta l intero contenuto del file publications.xsd. Cominciamo con l elemento entry: <xs:element name="entry"> <xs:complextype> <xs:sequence> <xs:element name="title" type="xs:string"/> <xs:element ref="authors"/> <xs:element ref="keywords"/> <xs:element ref="diffusion"/> <xs:element ref="language"/> <xs:element ref="urls" minoccurs="0"/> <xs:sequence> <xs:element ref="article" minoccurs="0" maxoccurs="unbounded"/> <xs:element ref="book" minoccurs="0" maxoccurs="unbounded"/> <xs:element ref="inbook" minoccurs="0 maxoccurs="unbounded"/> <xs:element ref="inproceedings" minoccurs="0" maxoccurs="unbounded"/> <xs:element ref="thesis" minoccurs="0" maxoccurs="unbounded"/> 11

14 <xs:element ref="techreport" minoccurs="0" maxoccurs="unbounded"/> </xs:sequence> <xs:element name="abstract" type="xs:string"/> <xs:element name="note" type="xs:string" minoccurs="0"/> </xs:sequence> <xs:attribute name="code" type="xs:string"/> </xs:complextype> </xs:element> L immagine seguente mostra un diagramma ad albero che riproduce la struttura gerarchica dell elemento in questione: Come è possibile osservare, entry è un elemento complesso consistente in una sequenza di numerosi sotto-elementi obbligatori o facoltativi. 12

15 L obbligatorietà o la discrezionalità dei vari elementi viene definita mediante gli attributi minoccurs e maxoccurs: fissare entrambi gli attributi a 1 equivale a rendere un particolare elemento obbligatorio e non ripetibile mentre fissare minoccurs a 0 rende un elemento non obbligatorio. Inoltre, precisiamo che, nel caso in cui gli attributi minoccurs e/o maxoccurs non vengano definiti dal programmatore, gli stessi vengono automaticamente impostati a 1. Terminiamo la descrizione spiegando la funzione dell istruzione: ref. Tale istruzione sta a significare che la struttura dell elemento specificato come valore della stessa ref viene definita in un blocco di codice esterno a quello corrente (si veda il file publications.xsd in appendice). Esaminiamo adesso la struttura dell elemento article: <xs:element name="article"> <xs:complextype> <xs:sequence> <xs:element name="journal" type="xs:string"/> <xs:element name="year" type="xs:integer"/> <xs:element name="pages" type="xs:string"/> <xs:element name="volume" type="xs:string" minoccurs="0"/> <xs:element name="number" type="xs:string" minoccurs="0"/> <xs:group ref="codes"/> </xs:sequence> </xs:complextype> </xs:element> Anche in questo caso riportiamo il relativo diagramma ad albero: 13

16 Rispetto al codice precedente, osserviamo la presenza di un nuovo costrutto: xs:group. Si tratta di un istruzione XSD utilizzata per definire una serie di elementi comuni a due o più padri. Nel nostro caso le tipologie article, book, inbook e inproceedings possono essere accompagnate dal relativo codice bibliografico composto dagli elementi isbn e/o issn e/o doi. Per questo motivo, tali elementi sono stati raggruppati nel costrutto xs:group. Per evitare confusione, concludiamo precisando che CODES non è un elemento XML ma unicamente un costrutto interno allo Schema. 14

17 CAPITOLO V SPECIFICA DEL PROBLEMA 1. Output desiderato Il capitolo precedente ha descritto la realizzazione del documento XML e del relativo Schema ovvero l input da fornire al PHP affinché quest ultimo generi l HTML desiderato (cioè il nostro output). Per avere un idea del risultato che intendiamo ottenere lato browser, possiamo considerare le immagini seguenti che mostrano alcune delle pagine attualmente presenti sul sito cad.polito.it: 15

18 L immagine qui sopra mostra il form che consente all utente di selezionare le pubblicazioni di maggiore interesse mediante l esecuzione di opportune ricerche. Questa utile funzionalità, che la nuova sezione dedicata alle pubblicazioni dovrà garantire, ci permette di enunciare la particolarità del caso di studio affrontato: il foglio di stile XSL utilizzato per convertire in HTML il documento publications.xml non può essere un file esterno puramente statico ma deve essere generato dinamicamente in modo tale da adattarsi, di volta in volta, alla richiesta dell utente. In altre parole, il foglio di stile deve visualizzare l intero l elenco delle pubblicazioni oppure solo quelle entry che soddisfano l eventuale ricerca eseguita dall utente. Questo è anche il motivo per cui il documento XML non è stato preventivamente associato a nessun foglio di stile. Prima di procedere, è opportuno illustrare in quale modo è stato ricostruito il meccanismo che consente all utente di effettuare una ricerca. Diciamo innanzitutto che l utente non ha alcuna interazione con la pagina web che esegue la trasformazione del documento XML in HTML (xml_action.php). Tale pagina viene infatti richiamata dalla pagina web ricerca.php che interagisce con l utente dando a quest ultimo la possibilità di visionare l intero elenco delle pubblicazioni o di effettuare ricerche mediante la compilazione di un form. Più in particolare, l utente ha a disposizione le seguenti chiavi di ricerca: year (anno di pubblicazione); type (tipo di pubblicazione: articolo, libro ecc ); author (autore della pubblicazione); key (chiave di ricerca scelta da una lista predefinita); free (ricerca, nel titolo della pubblicazione, una parola o una frase inserita dall utente). I parametri della ricerca, se selezionati, vengono poi inviati alla pagina xml_action.php che li utilizzerà per generare un opportuno foglio di stile XSL. Osserviamo infine che, in termini di XML, tutte le chiavi di ricerca ad eccezione di year corrispondono ad elementi XML che presentano una struttura gerarchica fissa: type è sempre figlio di entry, author è sempre figlio di authors che è a sua volta figlio di entry ecc L elemento year può invece avere sei diversi elementi padri: article, book, inbook, inproceedings, thesis e techport. Questa particolarità ha richiesto, in termini di codice PHP, una più attenta implementazione per le chiavi di ricerca year e type. Tornando al sito esistente, se l utente ha utilizzato il precedente form di ricerca, cliccando sul pulsante Search viene visualizzato il risultato della ricerca: 16

19 In questo caso, l utente ha richiesto tutte le pubblicazioni del Come l immagine lascia intuire, i titoli delle pubblicazioni sono link che rimandano alla pagina di dettaglio. Ad esempio, se l utente cliccasse sul primo titolo, verrebbero visualizzate le seguenti informazioni: 17

20 La pagina di dettaglio mostra chiaramente le parole chiave associate alla pubblicazione (keywords) e una sintesi del contenuto di quest ultima (abstract). 2. Principali costrutti PHP per la manipolazione di file XML Il processo di costruzione del foglio di stile XSL sarà il principale argomento del prossimo capitolo. In questo paragrafo ci limitiamo ad anticipare la descrizione delle principali istruzioni PHP utilizzate per effettuare la trasformazione del documento publications.xml in HTML. L istruzione: 18

21 oggetto_domdocument = new DOMDocument(); crea un oggetto di tipo DOMDocument. Tali oggetti vengono utilizzati per contenere file HTML o XML (cioè aventi estensione.xml,.xsd o.xsl) poiché possono fare riferimento alle funzioni della libreria DOM che, come anticipato precedentemente, consente di modificare queste tipologie di file. Una delle funzioni presenti nella libreria DOM è la funzione load: oggetto_domdocument->load('file xml o html'); Come è lecito pensare, l istruzione appena scritta associa all oggetto DOMDocument il file specificato nella lista dei parametri. Se tale file è di tipo XML ed è provvisto di Schema, è possibile verificare se l XML rispetta la struttura definita nello Schema mediante l istruzione: oggetto_domdocument->schemavalidate('file xsd'); Una volta che il documento XML e il relativo XSL sono stati caricati in due oggetti diversi, è necessario definire un processore XSLT che applichi il foglio di stile al documento XML. L istruzione: processore_xslt = new XSLTProcessor(); crea un processore XSLT. Il passo successivo consiste nell associare al processore il foglio di stile contenuto nell oggetto DOMDocument. Ciò è reso possibile dalla funzione importstylesheet: processore_xslt->importstylesheet(domdocument tipo XSL); A questo punto il processore è pronto per applicare il foglio di stile al documento XML. Tale operazione viene eseguita dalla funzione transformtoxml: processore_xslt->transformtoxml(domdocument tipo XML); Terminiamo la descrizione precisando che le funzioni importstylesheet e transformtoxml appartengono alla libreria XSL. 19

22 CAPITOLO VI IL FOGLIO DI STILE XSL 1. Costrutti XSLT La costruzione del foglio di stile XSL verrà illustrata in parte in questo paragrafo, in parte nel successivo. Più in particolare, descriveremo dapprima l intero foglio di stile e successivamente il meccanismo dinamico, contenuto nella pagina xml_action, che genera il foglio di stile stesso. Commentiamo la parte iniziale dell XSL: <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl=" <xsl:template match="/"> <html> <head> <title> - pubblicazioni</title> <meta http-equiv="content-type" content="text/html; charset=iso "/> <style type="text/css"> h2 { font-family:arial; text-align:center } span.title { font-family:verdana; font-size:11pt; color:blue; text-decoration:underline } span.authors { font-style:italic } span.codes { font-style:italic } span.confname { font-style:italic } span.note { font-weight:bold } </style> </head> <body> <h2> </h2> Il template: <xsl:template match="/"> seleziona l intero documento XML e lo racchiude all interno dei tag html e body. Subito dopo troviamo un primo esempio dell aspetto dinamico del foglio di stile: il titolo della pagina HTML risultato dell applicazione del foglio di stile XSL al documento publications.xml cambia a seconda che l utente abbia richiesto l elenco completo delle pubblicazioni o abbia effettuato una ricerca. La scelta di un titolo opportuno verrà descritta nel prossimo paragrafo. Continuiamo a commentare il codice: 20

23 <xsl:for-each select="publications/entry"> Il costrutto iterativo for-each seleziona, uno alla volta, tutti gli elementi entry presenti nel file publications.xml (notare l espressione XPath inserita come valore dell attributo select). A questo punto, la pagina xml_action provvede a inserire uno o più costrutti di selezione if per scegliere le entry che soddisfano la richiesta dell utente nel caso in cui quest ultimo abbia effettuato una ricerca. Ad esempio, se l utente avesse richiesto tutte le pubblicazioni che presentano come parola chiave il termine php, verrebbe aggiunto il costrutto: <xsl:if test="keywords/keyword='php'"> In questo modo verrebbero selezionate solo quelle entry che presentano un elemento keyword contenente la stringa php. Procediamo con l analisi del foglio di stile: <p> <xsl:number value="position()"/>. <xsl:apply-templates select="..."/> </p> La prima istruzione apre un paragrafo che racchiude il contenuto della entry corrente. Quest ultimo è preceduto dalla posizione della stessa entry: la funzione XSLT position restituisce la posizione dell elemento correntemente processato mentre la funzione number stampa il valore numerico contenuto nell attributo value. L istruzione seguente provvede ad inserire il costrutto xsl:apply-templates. Tale istruzione si trova sempre all interno di un template e svolge simultaneamente due operazioni: visualizza il contenuto dell elemento correntemente elaborato (una delle pubblicazioni); controlla, all interno del foglio di stile, l eventuale presenza di altri template applicabili al contenuto dell elemento stesso (questo aspetto sarà illustrato tra breve). Più in particolare, apply-templates visualizza unicamente i sotto-elementi dell elemento corrente specificati dall attributo select. Se tale attributo è assente, apply-templates visualizza l intero contenuto dell elemento. Come è facile intuire, il contenuto dell attributo select dipende fortemente dalla richiesta dell utente perciò descriveremo il codice PHP che lo definisce nel paragrafo successivo. L ultima riga di codice chiude il paragrafo dedicato alla pubblicazione. Il blocco di codice che segue deve innanzitutto provvedere a chiudere i costrutti if eventualmente aperti in precedenza mediante l istruzione: 21

24 </xsl:if> Fatto ciò, viene chiuso il costrutto iterativo for-each e viene inserita l ultima parte del contenuto del template: </xsl:for-each> <xsl:if test="boolean(publications/entry[ ])=false"> <p><b>nessun riscontro ottenuto con i parametri inseriti</b></p> </xsl:if> <p><a href="ricerca.php">ricerca</a></p> </body> </html> </xsl:template> Come vedremo nel prossimo paragrafo, il costrutto xsl:if precedente viene inserito solo se l utente ha effettuato una ricerca ed è utilizzato per verificare l effettiva presenza di pubblicazioni che soddisfano la richiesta dell utente. La funzione XSLT boolean verifica infatti l esistenza di entry aventi caratteristiche uguali a quelle specificate dall utente. Queste ultime costituiscono il contenuto delle parentesi quadre (anche questo aspetto sarà descritto in dettaglio nel prossimo paragrafo). Nel caso in cui il documento XML non contenga pubblicazioni in grado di soddisfare i parametri della ricerca, il costrutto if consente la visualizzazione del messaggio: Nessun riscontro ottenuto con i parametri inseriti. Le ultime righe di codice inseriscono un link alla pagina ricerca.php e chiudono sia la pagina HTML che il template. Il prossimo frammento di codice presenta una serie di template che elaborano alcuni degli elementi comuni a tutte le tipologie di pubblicazione (title, authors e note): <xsl:template match="title"> <a> <xsl:attribute name="href"> dettaglio.php?code=<xsl:value-of select="../@code"/> </xsl:attribute> <span class="title"><xsl:value-of select="."/></span> </a> </xsl:template> <xsl:template match="authors"> <br/> <xsl:for-each select="author"> <a> <xsl:attribute name="href"> xml_action.php?spy&author=<xsl:value-of select="."/> 22

25 </xsl:attribute> <span class="authors"> <xsl:value-of select="."/> </span> </a> <xsl:choose> <xsl:when test="position()=last()">; </xsl:when> <xsl:otherwise>, </xsl:otherwise> </xsl:choose> </xsl:for-each> </xsl:template> <xsl:template match="note"> <br/><span class="note"><xsl:value-of select="."/></span> </xsl:template> Il primo template elabora l elemento title: dopo aver estratto il valore dell elemento mediante l istruzione <xsl:value-of select="."/>, lo stesso viene racchiuso all interno del tag HTML <a>. L attributo href di quest ultimo viene inserito dal costrutto xsl:attribute il cui contenuto rimanda alla pagina dettaglio.php. I titoli delle entry diventano quindi una serie di link che indirizzano l utente a tale pagina la cui funzione è quella di mostrare tutte le informazioni disponibili relative ad una particolare entry. Dettaglio.php presenta un meccanismo di funzionamento del tutto simile a xml_action.php. Anche in questo caso possiamo infatti distinguere tre operazioni fondamentali: acquisizione del documento publications.xml; costruzione dinamica di un opportuno foglio di stile XSL; applicazione del foglio di stile al documento XML e restituzione del risultato al browser. Poiché dettaglio.php prende in input l intero elenco delle entry, è necessario consentire alla pagina stessa di riconoscere quale pubblicazione elaborare. Per questo motivo, l URL di redirezione è accompagnata dal parametro code che contiene l identificatore univoco della pubblicazione su cui l utente a cliccato: l istruzione <xsl:value-of select="../@code"/> estrae il valore dell attributo code della entry corrente. Il foglio di stile XSL utilizzerà il parametro code per selezionare ed elaborare l unica entry il cui attributo code risulta uguale all omonimo parametro ricevuto mediante link. Dopo questa breve parentesi sulla pagina dettaglio.php terminiamo la spiegazione del codice precedente descrivendo il template che si occupa dell elemento authors. Tale costrutto presenta una struttura simile a quella del caso precedente: ogni autore è un link alla pagina xml_action.php alla quale viene inviato il nome dell autore stesso. In altre parole, cliccare su uno degli autori di una qualunque pubblicazione equivale a richiedere tutte le pubblicazioni di quel particolare autore proprio come se fosse stato 23

26 utilizzato il form di ricerca. Infine, il template in questione fa uso del costrutto xsl:choose. Si tratta di un istruzione che opera come uno switch del linguaggio PHP e, in questo caso, serve unicamente a inserire una virgola dopo il nome di ogni autore (o un punto e virgola se l autore è l ultimo dell elenco). La restante parte di codice contiene i template dedicati all elaborazione delle sei diverse tipologie di pubblicazione. Ci limitiamo a descrivere il template relativo all elemento article poiché tutti presentano la medesima struttura: <xsl:template match="article"> <br/> ARTICLE - <span class="journal"><xsl:value-of select="journal"/>, </span> <span class="year"><xsl:value-of select="year"/>, </span> <xsl:value-of select="pages"/> <xsl:if test="boolean(isbn or issn or doi)">, <span class="codes">codes: <xsl:value-of select="isbn"/> <xsl:if test="isbn and (issn or doi)">-</xsl:if> <xsl:value-of select="issn"/> <xsl:if test="issn and doi">-</xsl:if> <xsl:value-of select="doi"/> </span> </xsl:if> </xsl:template>... </xsl:stylesheet> Come è possibile osservare, ad eccezione del codice bibliografico dell articolo, gli unici elementi che vengono processati corrispondono ai campi obbligatori della tipologia article (tutte le altre informazioni sono visibili nella pagina di dettaglio). Prima di concludere, precisiamo che i template descritti in questo e nel precedente blocco di codice vengono richiamati dall istruzione xsl:apply-templates per elaborare i relativi elementi. L ultima riga di codice chiude il foglio di stile XSL. 2. Il codice PHP In questo paragrafo descriveremo il processo dinamico che consente alla pagina xml_action di costruire il foglio di stile XSL illustrato nel precedente paragrafo. Precisiamo che le parti puramente statiche dell XSL vengono scritte in file esterni e incorporate al resto del documento mediante la funzione PHP file_get_contents( nome_file ). 24

27 Anche in questo caso commenteremo un blocco di codice per volta: <?php $xml_file=new DOMDocument(); $xml_file->load('publications.xml'); $xsl_file=new DOMDocument(); $xsl_string=file_get_contents("inizio_xsl.txt"); if(isset($_request["spy"])) $xsl_string=$xsl_string."<h2>risultati della ricerca</h2>"; else $xsl_string=$xsl_string."<h2>elenco completo delle pubblicazioni</h2>"; $xsl_string=$xsl_string."<xsl:for-each select=\"publications/entry\">"; Le prime righe di codice presentano alcune delle istruzioni descritte in precedenza: la variabile $xml_file contiene il file XML publications.xml mentre la variabile $xsl_file sarà utilizzata per fare riferimento al foglio di stile XSL. Quest ultimo viene memorizzato nella variabile $xsl_string sotto forma di stringa (il file inizio_xsl.txt contiene la parte di foglio di stile compresa tra la riga iniziale e il tag body). A questo punto è necessario spiegare perché il foglio di stile non viene scritto in un file esterno come accade per il documento XML. Tale ipotesi non è accettabile poiché darebbe vita a problemi di condivisione delle risorse nel momento in cui due o più utenti richiedessero contemporaneamente l elenco delle pubblicazioni o effettuassero simultaneamente una ricerca. In altre parole, xml_action cercherebbe di scrivere due o più volte lo stesso file nello stesso momento. Torniamo al codice: il costrutto if-else che segue applica un titolo opportuno alla pagina HTML grazie alla variabile $_REQUEST[ spy ]. Tale variabile viene inviata dalla pagina ricerca.php se l utente ha utilizzato il form di ricerca. Se la variabile in questione esiste (cioè se è stata ricevuta) il titolo della pagina HTML sarà: Risultati della ricerca. In caso contrario verrà stampato il titolo: Elenco delle pubblicazioni. L ultima riga di codice aggiunge il già citato costrutto iterativo for-each. La parte di codice che segue si occupa di implementare l eventuale richiesta di ricerche da parte dell utente. Poiché le istruzioni PHP utilizzate per gestire ognuna delle sei chiavi di ricerca sono essenzialmente le stesse, ci limiteremo a descrivere i costrutti XSL che vengono aggiunti al foglio di stile per consentire a quest ultimo di selezionare le pubblicazioni adatte alla richiesta dell utente. L intero codice è comunque disponibile in appendice. Il frammento di codice che gestisce le ricerche definisce innanzitutto un contatore e una variabile sentinella: 25

28 $if_counter=0; $opened_if=false; Come il nome del contatore stesso lascia intendere, tale variabile conta quanti costrutti xsl:if sono stati aperti al fine di inserire nell XSL un ugual numero di tag di chiusura. La funzione della variabile $opened_if sarà invece descritta tra breve. Adesso possiamo descrivere come viene modificato il foglio di stile XSL in caso di ricerche. Supponiamo che l utente abbia richiesto tutte le pubblicazioni di un particolare anno. In questo caso la pagina xml_action.php provvederà ad inserire nell XSL il seguente costrutto: <xsl:if test="*/year='$year'"> dove la variabile $year all interno dell espressione XPath contiene l anno specificato dall utente. Il carattere * viene interpretato dal processore XSLT come qualunque nodo e la sua presenza è giustificata dal fatto che, secondo la struttura dell XML, l elemento year può avere sei diversi padri: article, book, inbook, inproceedings, thesis o techreport. In altre parole, l istruzione precedente seleziona tutte le entry che presentano un elemento year il cui valore risulta uguale al contenuto della variabile $year indipendentemente da quale sia il nodo padre di year. Subito dopo xml_action.php eseguirà l istruzione seguente: $last_if="<xsl:if test=\"boolean(publications/entry [*/year='$year'"; La variabile $last_if contiene la parte iniziale del costrutto if che verifica l effettiva presenza di pubblicazioni rispondenti alla richiesta dell utente. Come il codice in appendice mostra, tale costrutto viene realizzato pezzo per pezzo in base ai parametri scelti dall utente e, proprio per questo motivo, è necessario impiegare una variabile sentinella che ricordi l avvenuta apertura del costrutto. Questo compito è assolto dalla variabile booleana $opened_if: la variabile vale false se l if non è ancora stato aperto, true in caso contrario. Il costrutto in questione viene memorizzato nella variabile $last_if poiché verrà aggiunto al foglio di stile quando ciò sarà necessario. Le istruzioni appena descritte vengono ripetute per ogni chiave di ricerca selezionata in modo tale da aggiungere nuovi costrutti xsl:if che filtrano ulteriormente l elenco delle pubblicazioni. Terminiamo la descrizione di questa parte di codice con un osservazione relativa al frammento di PHP che si occupa della chiave di ricerca free (si veda il file xml_action.php in appendice). Tale blocco di codice sfrutta due funzioni XSLT: translate e contains. La prima viene utilizzata per trasformare in minuscolo il titolo di ogni entry al fine di evitare che il processo di ricerca faccia distinzione tra caratteri minuscoli e maiuscoli: il testo inserito dall utente viene infatti convertito in minuscolo dalla funzione 26

29 PHP strtr. La seconda verifica che la parola (o la frase) inserita dall utente sia contenuta all interno del titolo della pubblicazione corrente. A dire il vero, il linguaggio XSLT mette a disposizione del programmatore la funzione lower-case(stringa) che converte in minuscolo la stringa di caratteri inserita nella lista dei parametri. Tuttavia, tale funzione non è stata utilizzata perché il processore XSLT presente nell ultima versione del PHP (5.0) sembra non supportarla. Proseguiamo con il successivo blocco di codice: if($opened_if) $last_if=$last_if."])=false\"> <p><b>nessun riscontro ottenuto con i parametri inseriti</b></p></xsl:if>"; $xsl_string=$xsl_string."<p><xsl:number value=\"position()\"/>."; $xsl_string=$xsl_string."<xsl:apply-templates select=\"title authors note "; if( isset($type) && isset($year) ) $xsl_string=$xsl_string.$type."[year='$year']\"/> </p>"; else if(isset($type)) $xsl_string=$xsl_string."$type\"/></p>"; else if(isset($year)) $xsl_string=$xsl_string."*[year='$year']\"/> </p>"; else $xsl_string=$xsl_string."article book inbook inproceedings thesis techport\"/></p>"; for($i=1;$i<=$if_counter;$i++) $xsl_string=$xsl_string."</xsl:if>"; $xsl_string=$xsl_string."</xsl:for-each>"; if($opened_if) $xsl_string=$xsl_string.$last_if; $xsl_string=$xsl_string.file_get_contents ("chiusura_xsl.txt"); La prima istruzione completa l if contenuto nella variabile $last_if di cui abbiamo già discusso. Subito dopo viene aperto il paragrafo che ospita il contenuto della entry corrente e viene aggiunto il costrutto apply-templates. Come anticipato, tale istruzione è accompagnata dall attributo select il cui contenuto dipende dalla richiesta dell utente. Più in particolare, al di là degli elementi title, authors e note presenti in ogni caso, il contenuto di select viene completato dai tre costrutti if-else che seguono. Il primo di questi controlla se le variabili $type e $year esistono (cioè se l utente ha 27

30 effettuato una ricerca che coinvolge una particolare tipologia e uno specifico anno di pubblicazione). Se questa condizione è soddisfatta, il completamento del valore dell attributo select è affidato alla stringa: $type."[year='$year']\"/> In altre parole vengono elaborati gli elementi: title, authors, note e il particolare tipo di pubblicazione che soddisfa la richiesta dell utente. I due if successivi gestiscono eventuali ricerche riguardanti una particolare tipologia o uno specifico anno di pubblicazione (rispettivamente). L istruzione contenuta all interno del terzo if fa uso del carattere * che viene interpretato dal processore XSLT come qualunque nodo : stiamo cioè selezionando qualunque tipologia di pubblicazione il cui figlio year contiene un valore uguale a quello della variabile $year. Nel caso in cui i tre if dovessero fallire, perchè l utente non ha effettuato ricerche riguardanti la tipologia e/o l anno di pubblicazione, la pagina esegue l istruzione racchiusa all interno dell ultimo else che seleziona indistintamente tutte le tipologie di pubblicazione. A questo punto è opportuno spiegare per quale motivo i costrutti appena descritti non prendono in considerazione le altre chiavi di ricerca disponibili (author, key e free). Il trattamento speciale riservato a type e year è necessario perché, come abbiamo già detto, uno stesso lavoro può essere pubblicato in due o più modi diversi non necessariamente nello stesso anno. Un esempio chiarirà questo aspetto. Consideriamo l unica entry contenuta nel documento XML descritto nel quarto capitolo e ipotizziamo che l utente desideri soltanto gli articoli disponibili. Tale richiesta rende necessario un opportuno attributo select che impedisca la visualizzazione delle informazioni relative alla tipologia inbook. Un esempio analogo può essere fatto considerando l anno di pubblicazione piuttosto che il tipo di entry. L utilizzo delle altre chiavi di ricerca non causa invece questo genere di problemi. Proseguendo la descrizione del codice, osserviamo che, dopo la chiusura del paragrafo dedicato alla pubblicazione, un ciclo for chiude tutti i costrutti xsl:if eventualmente aperti dal precedente blocco di codice. Subito dopo, viene chiuso il costrutto xsl:for-each e, se la variabile $opened_if vale true (cioè se l utente ha effettuato una ricerca), viene aggiunto l if contenuto nella variabile $last_if. Infine, l ultima istruzione aggiunge la restante parte del foglio di stile contenuta nel file chiusura_xsl.txt. A questo punto è possibile definire un processore XSLT che effettui la trasformazione del documento XML in HTML: $xsl_file->loadxml($xsl_string); $proc=new XSLTProcessor(); $proc->importstylesheet($xsl_file); echo $proc->transformtoxml($xml_file); 28

31 ?> Le istruzioni appena scritte utilizzano le funzioni descritte nel precedente capitolo ad eccezione della funzione loadxml. Quest ultima esegue un operazione del tutto simile alla funzione load con l unica differenza che il documento XML viene caricato da una stringa anziché da un file. 3. Risultato ottenuto Terminata la descrizione del codice, possiamo presentare il risultato ottenuto lato browser. Anticipiamo che le pagine realizzate presentano una grafica essenziale poiché la realizzazione di un estetica accattivante esula dagli obiettivi del progetto. L immagine seguente mostra la pagina ricerca.php che contiene il form utilizzato per le ricerche: Il link Elenco completo e il pulsante Cerca rimandano entrambi alla pagina xml_action.php che, come abbiamo visto, è in grado di distinguere 29

32 le due modalità di accesso. Supponiamo adesso che l utente abbia richiesto tutte le pubblicazioni che presentano come autore il prof. P. Prinetto. Dopo aver cliccato sul pulsante Cerca, xml_action.php provvederà a mostrare il seguente risultato: Infine, cliccando su uno dei titoli delle pubblicazioni, si accede alla pagina di dettaglio (dettaglio.php): 30

33 31

34 CAPITOLO VII CONCLUSIONI Il progetto che abbiamo esaminato aveva come obiettivi principali il rinnovamento della tecnologia utilizzata per realizzare la prima versione della sezione pubblicazioni del sito web e la conservazione di tutte le funzionalità preesistenti. Entrambi gli obiettivi sono stati raggiunti ricorrendo a tecnologie di facile comprensione e impiego considerato anche l enorme quantitativo di informazione a riguardo disponibile in rete. L unica parte del progetto che richiede un minimo di familiarità con la programmazione informatica è quella riguardante il codice PHP che conferisce dinamicità al processo di costruzione del foglio di stile XSL. Un argomento che nel corso della trattazione non è stato affrontato riguarda le motivazioni che hanno determinato l impiego di un database gerarchico invece di una base di dati relazionale. Tale scelta è dovuta al fatto che la numerosità e la discrezionalità di alcuni campi appartenenti alle varie tipologie di pubblicazione renderebbe la formulazione di un modello relazionale eccessivamente elaborata. Concludiamo l elaborato anticipando un possibile sviluppo futuro del progetto: la creazione di un interfaccia automatica di inserimento che consenta di aggiungere una nuova pubblicazione al file publications.xml senza dover scrivere l intero codice. 32

MODA-ML: Esempi di XSL (Extensible Stylesheet Language) Vocabolario di supporto alla creazione di un set di Schemi di documenti XML

MODA-ML: Esempi di XSL (Extensible Stylesheet Language) Vocabolario di supporto alla creazione di un set di Schemi di documenti XML MODA-ML: Esempi di XSL (Extensible Stylesheet Language) Vocabolario di supporto alla creazione di un set di Schemi di documenti XML Thomas Imolesi imolesi@libero.it fti@bologna.enea.it XML un linguaggio

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

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

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

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

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 Compilazione, link, esecuzione di programmi Conoscere

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

Database. Si ringrazia Marco Bertini per le slides

Database. Si ringrazia Marco Bertini per le slides Database Si ringrazia Marco Bertini per le slides Obiettivo Concetti base dati e informazioni cos è un database terminologia Modelli organizzativi flat file database relazionali Principi e linee guida

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

XML: extensible Markup Language

XML: extensible Markup Language XML: extensible Markup Language Laura Farinetti Dip. Automatica e Informatica Politecnico di Torino laura.farinetti@polito.it L. Farinetti - Politecnico di Torino 1 Introduzione XML: extensible Markup

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

5.3 TABELLE 5.3.1 RECORD 5.3.1.1 Inserire, eliminare record in una tabella Aggiungere record Eliminare record

5.3 TABELLE 5.3.1 RECORD 5.3.1.1 Inserire, eliminare record in una tabella Aggiungere record Eliminare record 5.3 TABELLE In un sistema di database relazionali le tabelle rappresentano la struttura di partenza, che resta poi fondamentale per tutte le fasi del lavoro di creazione e di gestione del database. 5.3.1

Dettagli

. A primi passi con microsoft a.ccepss SommarIo: i S 1. aprire e chiudere microsoft access Start (o avvio) l i b tutti i pro- grammi

. A primi passi con microsoft a.ccepss SommarIo: i S 1. aprire e chiudere microsoft access Start (o avvio) l i b tutti i pro- grammi Capitolo Terzo Primi passi con Microsoft Access Sommario: 1. Aprire e chiudere Microsoft Access. - 2. Aprire un database esistente. - 3. La barra multifunzione di Microsoft Access 2007. - 4. Creare e salvare

Dettagli

MANUALE MOODLE STUDENTI. Accesso al Materiale Didattico

MANUALE MOODLE STUDENTI. Accesso al Materiale Didattico MANUALE MOODLE STUDENTI Accesso al Materiale Didattico 1 INDICE 1. INTRODUZIONE ALLA PIATTAFORMA MOODLE... 3 1.1. Corso Moodle... 4 2. ACCESSO ALLA PIATTAFORMA... 7 2.1. Accesso diretto alla piattaforma...

Dettagli

EXPLOit Content Management Data Base per documenti SGML/XML

EXPLOit Content Management Data Base per documenti SGML/XML EXPLOit Content Management Data Base per documenti SGML/XML Introduzione L applicazione EXPLOit gestisce i contenuti dei documenti strutturati in SGML o XML, utilizzando il prodotto Adobe FrameMaker per

Dettagli

Informatica A per Ingegneria Gestionale (2005-2006) Il linguaggio HTML. Elisa Quintarelli-Laura Mandelli. HyperText Markup Language

Informatica A per Ingegneria Gestionale (2005-2006) Il linguaggio HTML. Elisa Quintarelli-Laura Mandelli. HyperText Markup Language Informatica A per Ingegneria Gestionale (2005-2006) Il linguaggio HTML Elisa Quintarelli-Laura Mandelli 1 HyperText Markup Language Linguaggio di descrizione di testi secondo lo schema SGML (Standard Generalized

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

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

Mon Ami 3000 Varianti articolo Gestione di varianti articoli

Mon Ami 3000 Varianti articolo Gestione di varianti articoli Prerequisiti Mon Ami 3000 Varianti articolo Gestione di varianti articoli L opzione Varianti articolo è disponibile per le versioni Azienda Light e Azienda Pro e include tre funzionalità distinte: 1. Gestione

Dettagli

Capitolo 4 Pianificazione e Sviluppo di Web Part

Capitolo 4 Pianificazione e Sviluppo di Web Part Capitolo 4 Pianificazione e Sviluppo di Web Part Questo capitolo mostra come usare Microsoft Office XP Developer per personalizzare Microsoft SharePoint Portal Server 2001. Spiega come creare, aggiungere,

Dettagli

Esercizi di JavaScript

Esercizi di JavaScript Esercizi di JavaScript JavaScript JavaScript é un linguaggio di programmazione interpretato e leggero, creato dalla Netscape. E' presente a patire da Netscape 2 in tutti i browser ed é dunque il linguaggio

Dettagli

Guida alla registrazione on-line di un NovaSun Log

Guida alla registrazione on-line di un NovaSun Log Guida alla registrazione on-line di un NovaSun Log Revisione 4.1 23/04/2012 pag. 1 di 16 Contenuti Il presente documento è una guida all accesso e all utilizzo del pannello di controllo web dell area clienti

Dettagli

Progettazione di un Database

Progettazione di un Database Progettazione di un Database Per comprendere il processo di progettazione di un Database deve essere chiaro il modo con cui vengono organizzati e quindi memorizzati i dati in un sistema di gestione di

Dettagli

Introduzione alla programmazione in C

Introduzione alla programmazione in C Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C P. Tosoratti Introduzione all informatica Materiale

Dettagli

5.6.1 REPORT, ESPORTAZIONE DI DATI

5.6.1 REPORT, ESPORTAZIONE DI DATI 5.6 STAMPA In alcune circostanze può essere necessario riprodurre su carta i dati di tabelle o il risultato di ricerche; altre volte, invece, occorre esportare il risultato di una ricerca, o i dati memorizzati

Dettagli

Università degli Studi "Roma Tre" Dipartimento di Informatica ed automazione. Facoltà di Ingegneria

Università degli Studi Roma Tre Dipartimento di Informatica ed automazione. Facoltà di Ingegneria Università degli Studi "Roma Tre" Dipartimento di Informatica ed automazione Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica Tesi di Laurea AUTENTICAZIONE PER APPLICAZIONI WEB Relatore

Dettagli

GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL

GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL GUIDA RAPIDA BOZZA 23/07/2008 INDICE 1. PERCHÉ UNA NUOVA VERSIONE DEI MODULI DI RACCOLTA DATI... 3 2. INDICAZIONI GENERALI... 4 2.1. Non modificare la struttura dei fogli di lavoro... 4 2.2. Cosa significano

Dettagli

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti Capitolo 3 L applicazione Java Diagrammi ER Dopo le fasi di analisi, progettazione ed implementazione il software è stato compilato ed ora è pronto all uso; in questo capitolo mostreremo passo passo tutta

Dettagli

Università Politecnica delle Marche. Progetto Didattico

Università Politecnica delle Marche. Progetto Didattico Università Politecnica delle Marche Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica e dell Automazione Sede di Ancona Anno Accademico 2011-2012 Corso di Tecnologie WEB Docente prof. Alessandro

Dettagli

Verbalizzazione e Firma Digitale

Verbalizzazione e Firma Digitale Verbalizzazione e Firma Digitale Area Docente Indice Premessa... 2 1 Tipologie di verbalizzazione online disponibili... 3 2 Test di firma in Esse 3... 4 3 Informazioni generali... 6 4 Gestione lista iscritti...

Dettagli

Le Basi di Dati. Le Basi di Dati

Le Basi di Dati. Le Basi di Dati Le Basi di Dati 20/05/02 Prof. Carlo Blundo 1 Le Basi di Dati Le Base di Dati (database) sono un insieme di tabelle di dati strutturate in maniera da favorire la ricerca di informazioni specializzate per

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

SITI-Reports. Progetto SITI. Manuale Utente. SITI-Reports. ABACO S.r.l.

SITI-Reports. Progetto SITI. Manuale Utente. SITI-Reports. ABACO S.r.l. Progetto SITI Manuale Utente SITI-Reports ABACO S.r.l. ABACO S.r.l. C.so Umberto, 43 46100 Mantova (Italy) Tel +39 376 222181 Fax +39 376 222182 www.abacogroup.eu e-mail : info@abacogroup.eu 02/03/2010

Dettagli

Database 1 biblioteca universitaria. Testo del quesito

Database 1 biblioteca universitaria. Testo del quesito Database 1 biblioteca universitaria Testo del quesito Una biblioteca universitaria acquista testi didattici su indicazione dei professori e cura il prestito dei testi agli studenti. La biblioteca vuole

Dettagli

Guida all uso di Java Diagrammi ER

Guida all uso di Java Diagrammi ER Guida all uso di Java Diagrammi ER Ver. 1.1 Alessandro Ballini 16/5/2004 Questa guida ha lo scopo di mostrare gli aspetti fondamentali dell utilizzo dell applicazione Java Diagrammi ER. Inizieremo con

Dettagli

Guida alla Navigazione e Utilizzo dell Area Fattura PA

Guida alla Navigazione e Utilizzo dell Area Fattura PA CONTENUTI Area Fatture PA... 3 Accesso area riservata... 3 Fatture... 4 Fatture da inviare... 6 Flussi di Importazione... 8 Risorse da Firmare... 9 Risorse Firmate... 10 Conservazione... 10 2 Area Fatture

Dettagli

Manuale d uso Event Bureau

Manuale d uso Event Bureau Manuale d uso Event Bureau step by step Agenda Premessa Accesso a Event Bureau Inserimento Nuovo Evento Generico o primo step: anagrafica evento o secondo step: organizzatori o terzo step: relatori interni

Dettagli

Mon Ami 3000 Ratei e Risconti Calcolo automatico di ratei e risconti

Mon Ami 3000 Ratei e Risconti Calcolo automatico di ratei e risconti Prerequisiti Mon Ami 3000 Ratei e Risconti Calcolo automatico di ratei e risconti L opzione Ratei e risconti estende le funzioni contabili già presenti nel modulo di base e può essere attivata solo con

Dettagli

MANUALE PER L UTILIZZO DELLA FUNZIONE EVENTI Rel.1.2 del 29 gennaio 2004

MANUALE PER L UTILIZZO DELLA FUNZIONE EVENTI Rel.1.2 del 29 gennaio 2004 MANUALE PER L UTILIZZO DELLA FUNZIONE EVENTI Rel.1.2 del 29 gennaio 2004 PRELIMINARE - Avete digitato la password che Vi è stata attribuita e siete entrati nell area riservata all AMMINISTRAZIONE del Vostro

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

ISTRUZIONI PER LA GESTIONE BUDGET

ISTRUZIONI PER LA GESTIONE BUDGET ISTRUZIONI PER LA GESTIONE BUDGET 1) OPERAZIONI PRELIMINARI PER LA GESTIONE BUDGET...1 2) INSERIMENTO E GESTIONE BUDGET PER LA PREVISIONE...4 3) STAMPA DIFFERENZE CAPITOLI/BUDGET.10 4) ANNULLAMENTO BUDGET

Dettagli

lo 2 2-1 - PERSONALIZZARE LA FINESTRA DI WORD 2000

lo 2 2-1 - PERSONALIZZARE LA FINESTRA DI WORD 2000 Capittol lo 2 Visualizzazione 2-1 - PERSONALIZZARE LA FINESTRA DI WORD 2000 Nel primo capitolo sono state analizzate le diverse componenti della finestra di Word 2000: barra del titolo, barra dei menu,

Dettagli

GESTIONE NEWSLETTER 2 CREAZIONE NEWSLETTER

GESTIONE NEWSLETTER 2 CREAZIONE NEWSLETTER GESTIONE NEWSLETTER 1 INTRODUZIONE In questa sezione vedremo come gestire la creazione e l invio delle Newsletter e come associarle alle Liste Clienti e alle Liste Email. Grazie a un editor avanzato è

Dettagli

Il database management system Access

Il database management system Access Il database management system Access Corso di autoistruzione http://www.manualipc.it/manuali/ corso/manuali.php? idcap=00&idman=17&size=12&sid= INTRODUZIONE Il concetto di base di dati, database o archivio

Dettagli

Scheda operativa Versione rif. 13.01.3c00. Libro Inventari

Scheda operativa Versione rif. 13.01.3c00. Libro Inventari 1 Inventario... 2 Prepara tabelle Inventario... 2 Gestione Inventario... 3 Tabella esistente... 3 Nuova tabella... 4 Stampa Inventario... 8 Procedure collegate... 11 Anagrafiche Archivi ditta Progressivi

Dettagli

SPORTELLO UNICO DELLE ATTIVITÀ PRODUTTIVE MANUALE OPERATIVO FUNZIONI DI PAGAMENTO ONLINE. Versione 05

SPORTELLO UNICO DELLE ATTIVITÀ PRODUTTIVE MANUALE OPERATIVO FUNZIONI DI PAGAMENTO ONLINE. Versione 05 SPORTELLO UNICO DELLE ATTIVITÀ PRODUTTIVE MANUALE OPERATIVO FUNZIONI DI PAGAMENTO ONLINE Versione 05 Novembre 2015 1 Sommario Generalità... 3 Pagare con ICONTO... 7 Pagare con carta di credito... 10 Pagare

Dettagli

Guida alla Navigazione e Utilizzo dell Area Fattura PA

Guida alla Navigazione e Utilizzo dell Area Fattura PA 2015 Guida alla Navigazione e Utilizzo dell Area Fattura PA CONTENUTI Area Fatture PA... 3 Accesso all Area Fatture PA... 3 Area Fattura PA in PAInvoice... 3 Compila una nuova Fattura online con PAInvoice...

Dettagli

Regione Toscana. ARPA Fonte Dati. Manuale Amministratore. L. Folchi (TAI) Redatto da

Regione Toscana. ARPA Fonte Dati. Manuale Amministratore. L. Folchi (TAI) Redatto da ARPA Fonte Dati Regione Toscana Redatto da L. Folchi (TAI) Rivisto da Approvato da Versione 1.0 Data emissione 06/08/13 Stato DRAFT 1 Versione Data Descrizione 1,0 06/08/13 Versione Iniziale 2 Sommario

Dettagli

Progetto: ARPA Fonte Dati. ARPA Fonte Dati. Regione Toscana. Manuale Amministratore

Progetto: ARPA Fonte Dati. ARPA Fonte Dati. Regione Toscana. Manuale Amministratore ARPA Fonte Dati Regione Toscana 1 Redatto da L. Folchi (TAI) Rivisto da Approvato da Versione 1.1 Data emissione 09/10/13 Stato FINAL 2 Versione Data Descrizione 1,0 06/08/13 Versione Iniziale 1.1 09/10/2013

Dettagli

Uso di base delle funzioni in Microsoft Excel

Uso di base delle funzioni in Microsoft Excel Uso di base delle funzioni in Microsoft Excel Le funzioni Una funzione è un operatore che applicato a uno o più argomenti (valori, siano essi numeri con virgola, numeri interi, stringhe di caratteri) restituisce

Dettagli

Organizzazione degli archivi

Organizzazione degli archivi COSA E UN DATA-BASE (DB)? è l insieme di dati relativo ad un sistema informativo COSA CARATTERIZZA UN DB? la struttura dei dati le relazioni fra i dati I REQUISITI DI UN DB SONO: la ridondanza minima i

Dettagli

Introduzione a Dev-C++

Introduzione a Dev-C++ Introduzione a Dev-C++ Università degli Studi di Brescia Docente: Massimiliano Giacomin Elementi di Informatica e Programmazione Università di Brescia 1 Note: Dev-C++ richiede Windows 95/98/NT/2000/XP

Dettagli

Capitolo 5. Cercare informazioni sul Web

Capitolo 5. Cercare informazioni sul Web Capitolo 5 Cercare informazioni sul Web Cercare nel posto giusto Posti logici e noti per reperire informazioni sui nostri contributi pensionistici, chiediamo all INPS Biblioteche on-line La maggior parte

Dettagli

Informatica. Prof. M. Colajanni Università di Modena Reggio Emilia

Informatica. Prof. M. Colajanni Università di Modena Reggio Emilia Informatica Prof. M. Colajanni Università di Modena Reggio Emilia PARTE 4 - World Wide Web WORLD WIDE WEB La killer application di Internet I motivi alla base del successo del Web ( perché è risultata

Dettagli

Manuale Operativo per l utilizzo della piattaforma E-Learning@AQ. Versione 1.1

Manuale Operativo per l utilizzo della piattaforma E-Learning@AQ. Versione 1.1 Manuale Operativo per l utilizzo della piattaforma E-Learning@AQ Versione 1.1 Autore Antonio Barbieri, antonio.barbieri@gmail.com Data inizio compilazione 11 maggio 2009 Data revisione 14 maggio 2009 Sommario

Dettagli

BDCC : Guida rapida all utilizzo

BDCC : Guida rapida all utilizzo BDCC : Guida rapida all utilizzo 1 Sommario 1. Funzionamento del sistema... 3 1.1 Cos è e cosa contiene la BDCC... 3 1.2 Meccanismi di funzionamento della BDCC... 3 1.3 Organizzazione di contenuti all

Dettagli

Versione 7.0 Taglie e Colori. Negozio Facile

Versione 7.0 Taglie e Colori. Negozio Facile Versione 7.0 Taglie e Colori Negozio Facile Negozio Facile: Gestione taglie e colori Il concetto di base dal quale siamo partiti è che ogni variante taglia/colore sia un articolo a se stante. Partendo

Dettagli

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. Algoritmi 1 Sommario Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. 2 Informatica Nome Informatica=informazione+automatica. Definizione Scienza che si occupa dell

Dettagli

Gestione ed analisi di base dati nell epidemiologia. delle malattie infettive

Gestione ed analisi di base dati nell epidemiologia. delle malattie infettive Università degli Studi di Torino - Facoltà di Medicina Veterinaria Laboratorio di epidemiologia delle malattie infettive Scuola Specializzazione in Sanità Animale, Allevamento e Produzioni Zootecniche

Dettagli

FISH Sardegna ONLUS. www.fishsardegna.org. Manuale Utente. www.fishsardegna.org

FISH Sardegna ONLUS. www.fishsardegna.org. Manuale Utente. www.fishsardegna.org FISH Sardegna ONLUS Manuale Utente Note generali: Il sito è costruito su CMS Drupal 7. Per avere maggiori informazioni su Drupal si puo consultare online il portale ufficiale http://drupal.org/( in inglese)

Dettagli

Capitolo 2. Operazione di limite

Capitolo 2. Operazione di limite Capitolo 2 Operazione di ite In questo capitolo vogliamo occuparci dell operazione di ite, strumento indispensabile per scoprire molte proprietà delle funzioni. D ora in avanti riguarderemo i domini A

Dettagli

Client - Server. Client Web: il BROWSER

Client - Server. Client Web: il BROWSER Client - Server Client Web: il BROWSER Il client Web è un applicazione software che svolge il ruolo di interfaccia fra l utente ed il WWW, mascherando la complessità di Internet. Funzioni principali Inviare

Dettagli

Esercizio data base "Biblioteca"

Esercizio data base Biblioteca Rocco Sergi Esercizio data base "Biblioteca" Database 2: Biblioteca Testo dell esercizio Si vuole realizzare una base dati per la gestione di una biblioteca. La base dati conterrà tutte le informazioni

Dettagli

1. Le macro in Access 2000/2003

1. Le macro in Access 2000/2003 LIBRERIA WEB 1. Le macro in Access 2000/2003 Per creare una macro, si deve aprire l elenco delle macro dalla finestra principale del database: facendo clic su Nuovo, si presenta la griglia che permette

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

WG-TRANSLATE Manuale Utente WG TRANSLATE. Pagina 1 di 15

WG-TRANSLATE Manuale Utente WG TRANSLATE. Pagina 1 di 15 WG TRANSLATE Pagina 1 di 15 Sommario WG TRANSLATE... 1 1.1 INTRODUZIONE... 3 1 TRADUZIONE DISPLAY FILE... 3 1.1 Traduzione singolo display file... 4 1.2 Traduzione stringhe da display file... 5 1.3 Traduzione

Dettagli

CREAZIONE E MODIFICA DELLA PAGINA WEB DELLA BIBLIOTECA Andare nel modulo Biblioteche in alto a sinistra. Digitare nel campo Nome Biblioteca la

CREAZIONE E MODIFICA DELLA PAGINA WEB DELLA BIBLIOTECA Andare nel modulo Biblioteche in alto a sinistra. Digitare nel campo Nome Biblioteca la CREAZIONE E MODIFICA DELLA PAGINA WEB DELLA BIBLIOTECA Andare nel modulo Biblioteche in alto a sinistra. Digitare nel campo Nome Biblioteca la denominazione del Comune della Biblioteca (basta anche solo

Dettagli

www.filoweb.it STAMPA UNIONE DI WORD

www.filoweb.it STAMPA UNIONE DI WORD STAMPA UNIONE DI WORD Molte volte abbiamo bisogno di stampare più volte lo stesso documento cambiando solo alcuni dati. Potremmo farlo manualmente e perdere un sacco di tempo, oppure possiamo ricorrere

Dettagli

Protocollo di tracciamento e valutazione degli studenti dei corsi di italiano ICoNLingua A.A. 2013-2014

Protocollo di tracciamento e valutazione degli studenti dei corsi di italiano ICoNLingua A.A. 2013-2014 Progetto ICoNLingua Scienza senza Frontiere CsF- Italia Protocollo di tracciamento e valutazione degli studenti dei corsi di italiano ICoNLingua A.A. 2013-2014 1. Introduzione La valutazione sia in itinere

Dettagli

Introduzione Ai Data Bases. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San giovanni

Introduzione Ai Data Bases. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San giovanni Introduzione Ai Data Bases Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San giovanni I Limiti Degli Archivi E Il Loro Superamento Le tecniche di gestione delle basi di dati nascono

Dettagli

MANUALE UTENTE. In questo manuale verranno descritte tutte le sue funzioni. Il sistema OTRS è raggiungibile al seguente link:

MANUALE UTENTE. In questo manuale verranno descritte tutte le sue funzioni. Il sistema OTRS è raggiungibile al seguente link: MANUALE UTENTE OTRS è il sistema di ticketing per la gestione delle richieste tecniche e di supporto ai clienti e partner di Delta Progetti 2000. La nuova versione 3.2.10 introduce una grafica più intuitiva

Dettagli

PSG Table Builder Manuale Utente. PSG TABLE BUILDER Manuale Utente

PSG Table Builder Manuale Utente. PSG TABLE BUILDER Manuale Utente PSG TABLE BUILDER Manuale Utente Paragrafo-Pagina di Pagine 1-1 di 9 Versione 2 del 13/02/2012 SOMMARIO 1 A Chi è destinato... 1-3 2 Pre requisiti... 2-3 3 Obiettivi... 3-3 4 Durata della formazione...

Dettagli

CONTROLLO DI GESTIONE DELLO STUDIO

CONTROLLO DI GESTIONE DELLO STUDIO CONTROLLO DI GESTIONE DELLO STUDIO Con il controllo di gestione dello studio il commercialista può meglio controllare le attività svolte dai propri collaboratori dello studio nei confronti dei clienti

Dettagli

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini. Algoritmi di routing dinamici (pag.89) UdA2_L5 Nelle moderne reti si usano algoritmi dinamici, che si adattano automaticamente ai cambiamenti della rete. Questi algoritmi non sono eseguiti solo all'avvio

Dettagli

Strutturazione logica dei dati: i file

Strutturazione logica dei dati: i file Strutturazione logica dei dati: i file Informazioni più complesse possono essere composte a partire da informazioni elementari Esempio di una banca: supponiamo di voler mantenere all'interno di un computer

Dettagli

PULSANTI E PAGINE Sommario PULSANTI E PAGINE...1

PULSANTI E PAGINE Sommario PULSANTI E PAGINE...1 Pagina 1 Sommario...1 Apertura...2 Visualizzazioni...2 Elenco...2 Testo sul pulsante e altre informazioni...3 Comandi...3 Informazioni...4 Flow chart...5 Comandi...6 Pulsanti Principali e Pulsanti Dipendenti...6

Dettagli

Appunti sulla Macchina di Turing. Macchina di Turing

Appunti sulla Macchina di Turing. Macchina di Turing Macchina di Turing Una macchina di Turing è costituita dai seguenti elementi (vedi fig. 1): a) una unità di memoria, detta memoria esterna, consistente in un nastro illimitato in entrambi i sensi e suddiviso

Dettagli

Accreditamento Soggetti Formatori in materia di Sicurezza sul Lavoro

Accreditamento Soggetti Formatori in materia di Sicurezza sul Lavoro Linee guida per l utilizzo del sistema informativo Pag.1 di 12 Linee guida per l utilizzo del sistema informativo Accreditamento Soggetti Formatori in materia di Sicurezza sul Lavoro Il presente documento

Dettagli

Accise Settore Prodotti Alcolici Manuale d uso

Accise Settore Prodotti Alcolici Manuale d uso Olitech Informatica Telematico Accise Accise Settore Prodotti Alcolici Manuale d uso Versione del manuale: 26-01-2010 1 Indice Accise Settore Prodotti Alcolici Manuale d uso... 1 Indice... 2 Funzionalità

Dettagli

Registratori di Cassa

Registratori di Cassa modulo Registratori di Cassa Interfacciamento con Registratore di Cassa RCH Nucleo@light GDO BREVE GUIDA ( su logiche di funzionamento e modalità d uso ) www.impresa24.ilsole24ore.com 1 Sommario Introduzione...

Dettagli

GIOCHI MATEMATICI PER LA SCUOLA SECONDARIA DI I GRADO ANNO SCOLASTICO 2011-2012

GIOCHI MATEMATICI PER LA SCUOLA SECONDARIA DI I GRADO ANNO SCOLASTICO 2011-2012 GIOCHI MATEMATICI PER LA SCUOLA SECONDARIA DI I GRADO ANNO SCOLASTICO 2011-2012 L unità di Milano Città Studi del Centro matematita propone anche per l a.s. 2011-2012 una serie di problemi pensati per

Dettagli

Progettaz. e sviluppo Data Base

Progettaz. e sviluppo Data Base Progettaz. e sviluppo Data Base! Progettazione Basi Dati: Metodologie e modelli!modello Entita -Relazione Progettazione Base Dati Introduzione alla Progettazione: Il ciclo di vita di un Sist. Informativo

Dettagli

Università degli Studi di Padova Corso di Laurea in Informatica

Università degli Studi di Padova Corso di Laurea in Informatica Cognome e Nome Matricola Università degli Studi di Padova Corso di Laurea in Informatica Corso di Tecnologie Web Prova scritta del 24/03/2006 Importante: Scrivere il proprio Cognome, Nome e numero di matricola

Dettagli

Che differenza c è tra una richiesta XML ed una domanda XML? (pag. 4)

Che differenza c è tra una richiesta XML ed una domanda XML? (pag. 4) FAQ INVIO DOMANDE CIGO CON FLUSSO XML Cosa serve per inviare una domanda CIGO con il flusso XML? (pag. 2) Come si prepara una domanda in formato XML? (pag. 3) Che differenza c è tra una richiesta XML ed

Dettagli

ACCESSO AL SISTEMA HELIOS...

ACCESSO AL SISTEMA HELIOS... Manuale Utente (Gestione Formazione) Versione 2.0.2 SOMMARIO 1. PREMESSA... 3 2. ACCESSO AL SISTEMA HELIOS... 4 2.1. Pagina Iniziale... 6 3. CARICAMENTO ORE FORMAZIONE GENERALE... 9 3.1. RECUPERO MODELLO

Dettagli

PROGRAMMA GESTIONE TURNI MANUALE UTENTE. Programma Gestione Turni Manuale Utente versione 1.1

PROGRAMMA GESTIONE TURNI MANUALE UTENTE. Programma Gestione Turni Manuale Utente versione 1.1 PROGRAMMA GESTIONE TURNI MANUALE UTENTE INDICE 1 PREMESSA 3 2 COMANDI COMUNI 3 3 SEDI 3 4 FESTIVITÀ 4 5 PERIODI TURNI 4 6 COD. TURNI 6 7 TURNI SPORTIVI 9 8 COD. EQUIPAGGI 9 9 DISPONIBILITÀ 10 10 INDISPONIBILITÀ

Dettagli

Corso introduttivo all utilizzo di TQ Qualifica

Corso introduttivo all utilizzo di TQ Qualifica Corso introduttivo all utilizzo di TQ Qualifica Le pagine che seguono introducono l utente all uso delle principali funzionalità di TQ Qualifica mediante un corso organizzato in quattro lezioni. Ogni lezione

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T2 3-Compilatori e interpreti 1 Prerequisiti Principi di programmazione Utilizzo di un compilatore 2 1 Introduzione Una volta progettato un algoritmo codificato in un linguaggio

Dettagli

PRINCIPALI AGGIORNAMENTI DELLA NUOVA VERSIONE DI WEBDIOCESI. 1 Nuovo menù di gestione

PRINCIPALI AGGIORNAMENTI DELLA NUOVA VERSIONE DI WEBDIOCESI. 1 Nuovo menù di gestione PRINCIPALI AGGIORNAMENTI DELLA NUOVA VERSIONE DI WEBDIOCESI 1 Nuovo menù di gestione La mappa per sezioni del sito è stata rinnovata soprattutto snellendo la visualizzazione dei vari rami che vengono nascosti

Dettagli

Manuale Utente Albo Pretorio GA

Manuale Utente Albo Pretorio GA Manuale Utente Albo Pretorio GA IDENTIFICATIVO DOCUMENTO MU_ALBOPRETORIO-GA_1.4 Versione 1.4 Data edizione 04.04.2013 1 TABELLA DELLE VERSIONI Versione Data Paragrafo Descrizione delle modifiche apportate

Dettagli

Automatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione

Automatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione Automatizzare i compiti ripetitivi I file batch Anno accademico 2000-01 1 Spesso capita di dover eseguire ripetutatmente una data sequenza di comandi Introdurli uno a uno da tastiera è un processo lento

Dettagli

Guida per la gestione del proprio profilo in Scopus utilizzando la piattaforma Scival di Elsevier

Guida per la gestione del proprio profilo in Scopus utilizzando la piattaforma Scival di Elsevier Guida per la gestione del proprio profilo in Scopus utilizzando la piattaforma Scival di Elsevier Lo scopo di questa guida è quello di spiegare come apportare delle modifiche al proprio profilo in Scopus

Dettagli

Pagina 2 di 14. Indice

Pagina 2 di 14. Indice Manuale d uso per la raccolta: Sicurezza e continuità del servizio di distribuzione gas (comma 28.17 dell'allegato A alla deliberazione 574/2013/R/gas) Pagina 1 di 14 Indice 1. Accesso alla raccolta...

Dettagli

Corso Analista Programmatore Web PHP Corso Online Analista Programmatore Web PHP

Corso Analista Programmatore Web PHP Corso Online Analista Programmatore Web PHP Corso Analista Programmatore Web PHP Corso Online Analista Programmatore Web PHP Accademia Futuro info@accademiafuturo.it Programma Generale del Corso Analista Programmatore Web PHP Tematiche Trattate

Dettagli

MANUALE PER LA GESTIONE DEL SERVIZIO DI NEWSLETTER

MANUALE PER LA GESTIONE DEL SERVIZIO DI NEWSLETTER MANUALE PER LA GESTIONE DEL SERVIZIO DI NEWSLETTER HNewsletter: Servizio di Newsletter HNewsletter è un applicazione che permette di inviare un solo messaggio di posta elettronica ad un elenco di indirizzi

Dettagli

Gestione Risorse Umane Web

Gestione Risorse Umane Web La gestione delle risorse umane Gestione Risorse Umane Web Generazione attestati di partecipazione ai corsi di formazione (Versione V03) Premessa... 2 Configurazione del sistema... 3 Estrattore dati...

Dettagli

Novità di Access 2010

Novità di Access 2010 2 Novità di Access 2010 In questo capitolo: Gestire le impostazioni e i file di Access nella visualizzazione Backstage Personalizzare l interfaccia utente di Access 2010 Creare database utilizzando modelli

Dettagli

Per accedere clicca su START o AVVIO (in basso a sinistra sul tuo schermo), poi su PROGRAMMI, ACCESSORI e infine su BLOCCO NOTE.

Per accedere clicca su START o AVVIO (in basso a sinistra sul tuo schermo), poi su PROGRAMMI, ACCESSORI e infine su BLOCCO NOTE. Cos'è l'html HTML è una sigla che viene da una frase inglese che vuol dire: " Linguaggio di contrassegno di ipertesti" (Hyper Text Markup Language) L'Html non è un vero e proprio linguaggio di programmazione,

Dettagli

Scuola Digitale. Manuale utente. Copyright 2014, Axios Italia

Scuola Digitale. Manuale utente. Copyright 2014, Axios Italia Scuola Digitale Manuale utente Copyright 2014, Axios Italia 1 SOMMARIO SOMMARIO... 2 Accesso al pannello di controllo di Scuola Digitale... 3 Amministrazione trasparente... 4 Premessa... 4 Codice HTML

Dettagli

Dispensa di database Access

Dispensa di database Access Dispensa di database Access Indice: Database come tabelle; fogli di lavoro e tabelle...2 Database con più tabelle; relazioni tra tabelle...2 Motore di database, complessità di un database; concetto di

Dettagli