Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoMirella Conti Modificato 9 anni fa
1
Gestione dei cambiamenti per documenti digitali sul Web Tesi di Laurea di: MICHELE SCHIRINZI Relatore: Chiar.mo Prof. FABIO VITALI
2
Introduzione “ Un documento non può essere semplicemente pensato come una sequenza statica di caratteri invariata nel tempo, ma è una struttura evolutiva a cui vengono aggiunte, eliminate o modificate delle parti. Queste modifiche sono parte integrante del documento stesso: è utile (se non fondamentale) poter ricostruire qualsiasi porzione di una qualsiasi versione, così come era in un qualsiasi momento della storia del documento ” [Nelson T.H.] Un sistema che soddisfi questa definizione deve poter memorizzare tutti gli stati di sviluppo intermedi (versioni) di un documento. Possono esserci due modi per compiere questa operazione: 1.Memorizzare interamente ogni stato del documento. 2.Memorizzare i cambiamenti avvenuti fra una versione e la sua successiva.
3
Memorizzazione delle versioni Nel primo caso immaginiamo di “fotografare” il documento in diversi momenti del suo sviluppo e mantenere ordinatamente le varie “fotografie”. Nel secondo caso andiamo a memorizzare solo i cambiamenti avvenuti fra una versione e la sua successiva (delta). Questo è il documento nella sua versione originale, la prima stesura del documento Prima stesura del documento Delete(8) Delete(15) Insert(testo1) Update(4,Ndelta) Insert(testo) Insert(testo2) Update(7,Ndelta) Delete(12) Insert(testo4) Delete(4) Delete(9) Insert(testo5) Questo è il documento nella sua versione originale, la prima stesura del documento Questo è il documento nella sua seconda versione, la seconda stesura del documento Questo è il documento nella sua terza versione, la terza stesura del documento Questo è il documento nella sua versione attuale, l’ultima stesura del documento Prima stesura del documento Versione attuale del documento Algoritmi di Diff. Versione del documento Diff (Delta) Differenze fra le due versioni L’input consiste in due versioni di uno stesso documento; Il risultato è un documento delta che rappresenta i cambiamenti avvenuti fra questi.
4
HML-diff: Un algoritmo di Diff per documenti XML 1.Ricerca della massima parte invariata fra i documenti. 2.Ricerca delle parti spostate dei documenti (una parte è considerata spostata se appare in punti diversi fra le due versioni rispetto alla parte più grande rimasta invariata delle versioni). 3.Ricerca delle parti aggiornate dei documenti (una parte è considerata aggiornata se appare nella stessa posizione fra le due versioni e differisce per una certa quantità limitata da una costante). 4.Espressione delle informazioni rilevate nelle fasi precedenti. Presentiamo ora un algoritmo ideato da noi per la ricerca dei cambiamenti fra versioni all’interno del progetto IsaWiki. L’algoritmo è stato implementato in PHP per essere usato all’interno del sistema IsaWiki. Sono state realizzate la funzionalità di Diff, la ricostruzione di un documento e la possibilità di visualizzare i cambiamenti fra due versioni. L’algoritmo si divide in 4 passi principali:
5
Ricerca delle parti invariate Il primo passo è serializzare i documenti XML. La serializzazione avviene attraverso una visita in profondità con pre-ordine degli alberi dei documenti. Ogni elemento della sequenza è un valore hash che rappresenta un sottoalbero dell’albero del documento. 1 2 7 93 4 8 5610 E1E1 E2E2.. 11 E 11 sequenza
6
Ricerca delle parti invariate Se S 1 [i]=S 2 [j] allora anche gli N elementi successivi a i e j saranno uguali, dove N è il numero di nodi appartenenti al sottoalbero radicato nel nodo associato all’elemento S 1 [i]. Dividiamo gli elementi di una sequenza in classi, in modo da limitare i confronti (Ha senso confrontare un nodo di testo con un nodo di testo). Questa suddivisione può essere compiuta in tempo lineare all’atto della creazione della sequenza. Applichiamo un algoritmo per trovare la LCS (Longest Common Subsequence) fra le sequenze che rappresentano i documenti da confrontare. L’algoritmo per trovare la LCS suppone che una LCS sia formata dalla concatenazione ordinata di LCCS(Longest Common Continuous Subsequence). Durante il calcolo della LCS possiamo usare i seguenti accorgimenti:
7
Passi successivi Una volta ottenute le parti uguali maggiori fra le due sequenze esaminiamo le parti restanti per rifinire la qualità del delta. In verde sono contrassegnate le parti uguali fra le due sequenze. Sequenza A Sequenza B
8
Espressione del delta Raccolte tutte le informazioni delle fasi precedenti, consideriamo: 1.Se un nodo della sequenza A non è stato trovato in nessuna delle fasi precedenti viene considerato cancellato 2.Se un nodo della sequenza B non è stato trovato in nessuna delle fasi precedenti viene considerato inserito 3.I nodi mossi e i nodi aggiornati sono quelli trovati nelle rispettive fasi Nell’espressione del delta vengono prima esplicitate tutte le operazioni di cancellazione e aggiornamento, di seguito vengono esplicitate le operazioni di inserimento. Quest’ordine è importante perché ci garantisce di trovare dopo l’esecuzione dell’ N-esima operazione, il documento nello stato in cui deve essere applicata N+1-esima operazione.
9
Complessità e Qualità Move, riconosce parti del documento spostare fra le due versioni. Update, riconosce aggiornamenti di nodi Testo, Elemento, Commento. L’algoritmo descritto ha una complessità di O(N * C * D) dove: N sono i numeri di nodi del documento A C la cardinalità media delle classi in cui vengono divisi gli elementi del documento. C << N. D un valore proporzionale alle differenze fra i due documenti confrontati. La qualità del delta ottenuto è buona in quanto oltre alle classiche operazioni di inserimento e cancellazione descrive operazioni di:
10
Conclusioni Con la transizione del Web verso XML, sistemi di questo tipo assumono un’importanza rilevante all’interno di CMS(Content Management System). Inoltre questi sistemi possono essere di supporto ad applicazione che usano i nuovi standard basati su XML(DocBook, RSS, RDF, ecc..). In generale è un’utilità fondamentale all’interno di sistemi in cui è interessante seguire lo sviluppo dei documenti in funzione del tempo, infatti permettono un’analisi semplice e comoda dell’evoluzione di un documento.
11
Book Chapter TitlePara Img Text 2Text 8 Chapter Title Para Text 6Text 7 Chapter Title Para Text 4Text 5 Chapter Title Para Text 11Text 12 Chapter Title Para Text 9Text 10 Text1 Book Chapter Para Img Text 2 Text 8 Chapter Title Para Text 6Text 7 Chapter Title Para Text 4 Text 11 Chapter Title Text 12 Chapter Title Para Text 9Text 10 Para Text 25 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 9 10 11 12 14 15 161718 19 20 21 22 23 24 26 25 1 2 3 4 5 6 7 8 13 updatematch move
12
Chapter Title Para Text 9 Text 10 20 21 22 23 19 b5g43g eewgrt qtrhky oxfbng bcnngh Chapter Title Para Text 9 Text 10 20 21 22 23 19 b5g43g eewgrt + b5g43g qtrhky oxfbng bcnngh qtrhky + bcnngh Chapter Title Para Text 9 Text 10 20 21 22 23 19 b5g43g eewgrt + b5g43g qtrhky oxfbng + eewgrt + b5g43g bcnngh Chapter Title Para Text 9 Text 10 20 21 22 23 19 b5g43g eewgrt + b5g43g oxfbng + eewgrt + b5g43g bcnngh qtrhky + bcnngh Chapter Title Para Text 9 Text 10 20 21 22 23 19 b5g43g eewgrt + b5g43g oxfbng + eewgrt + b5g43g + qtrhky + bcnngh bcnngh
13
X= Y= X= Y= X= Y= X=<> Y=<> X= Y= X= Y= X= Y= X= Y= X=<> Y=<> LCCS LCS
15
fcteabcdabba abcdafcteabcddbbe n m l1l1 abcda l3l3 l1l1 l2l2 l2l2 l3l3 fcteabcdabba abcdafcteabcddbbe n m abcda l1l1 l1l1 l2l2 l2l2 l3l3 l3l3 max 1 = l 2 = 4 max 2 = l 1 = 4 2° Ciclo 1° Ciclo
16
Confrontare documenti con 'Diff Doc' Ora è possibile confrontare documenti in modo veloce e preciso. “Diff Doc” è una potente utility per confronti e correzioni di cartelle/file di facile utilizzo. Permette infatti il confronto di file di tutti i tipi, compresi MS Word/Excel, PDF, RTF, HTML, Wordperfect e altri. “Diff Doc” può indicare le differenze fra i file in due diverse schermate, “All in One”, o “Side by Side”. Entrambe presentano dei vantaggi, per passare da una all’altra basta un clic col mouse (o premere F6). Infine, sono disponibili numerosi report, incluso quello in HTML, in cui vengono specificate le differenze Indipendentemente dal programma di editing utilizzato (MS Word, WordPad, Visual Basic, ecc), basta caricare i file originali e quelli modificati, premere il tasto Refresh (Aggiorna) (o F5), e il documento confrontato apparirà immediatamente. E’ inoltre possibile confrontare le cartelle per vedere esattamente quali file sono cambiati, prima ancora di effettuare il confronto. Confrontare file con 'Diff Doc' Ora è possibile confrontare documenti in modo rapido e preciso. “Diff Doc” è una potente utility per confronti e correzioni di cartelle/file di facile utilizzo. Permette infatti di confrontare file di tutti i tipi, compresi MS Word/Excel, PDF, RTF, Text, XML, HTML, Wordperfect e altri. Indipendentemente dal programma di editing utilizzato (MS Word, WordPad, Visual Basic, ecc), basta caricare i file originali e quelli modificati, premere il tasto Refresh (Aggiorna) (o F5), e il documento confrontato apparirà immediatamente. E’ inoltre possibile confrontare le cartelle per vedere esattamente quali file sono cambiati, prima ancora di effettuare il confronto. “Diff Doc” può indicare le differenze fra i file in due diverse schermate, “All in One”, o “Side by Side”. Entrambe presentano dei vantaggi, per passare da una all’altra basta un clic col mouse (o premere F6). Infine, sono disponibili numerosi report, incluso quello in HTML, in cui vengono specificate le differenze Aggiornamento Spostamento Invariato HML-diff: Esempio
17
A A AA A A A A A B B B B B B B B B B Nodo update Nodo Mosso Nodo Cancellato Nodo Inserito
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.