Com\’è dura la professione!

Il formato OpenDocument

Il formato testo di OpenDocument

Questo documento è un riassunto dell’esposizione tenuta da me al Linux Day 2006 del LugMan. Dal documento manca totalmente la sessione di programmazione in cui sono stati costruiti e manipolati i documenti di esempio. Di seguito sono riportati il sommatio e l’inizio del documento. Per scaricarne una versione completa in PDF utilizzate questo link.

1 Introduzione

1.1 Sommario di questo documento

2 Cosa e’ OpenDocument e perché è nato

2.1 Definizione

2.2 Perché un nuovo formato

3 XML per chi non lo conosce

4 Il formato OpenDocument

4.1 Struttura di OpenDocument

4.2 Dettaglio dei file che compongono un documento

5 Contenuti del formato Testo

5.1 Gli stili

5.2 Pagine

5.3 Il testo

5.4 Intestazioni

5.5 Hyperlinks

5.6 Segnalibri

5.7 Liste ed elenchi

5.8 Tabelle

5.9 Campi

5.10 Note

5.11 Immagini

6 Aspetti Avanzati

6.1 Sezioni

6.2 Frame

6.3 Ruby

7 Filtri di import-export

8 Manipolazione dei documenti

9 Riferimenti

10 Per finire

Introduzione

Sommario di questo documento

Il documento si concentra sul formato testo di OpenDocument è diviso in tre parti

  • Capire che problemi risolve OpenDocument

  • Conoscere in dettaglio il formato testo OpenDocument

  • Esaminare e manipolare documenti in formato testo OpenDocument utilizzando vari programmi e linguaggi di programmazione

Cosa e’ OpenDocument e perché è nato

Definizione

OpenDocument è un formato di file che descrive documenti per applicazioni di ufficio (testo, fogli elettronici, disegni, presentazioni ed altro). E’ basato su XML e diversi altri standard esistenti, è promosso dal consorzio OASIS ed e’ diventato uno standard ISO nel 2006.Anche l’Unione Europea sta dimostrando interesse per questo formato come base per lo scambio di documenti.

Perché un nuovo formato

Ci sono già tanti formati di file per applicazioni da ufficio, quindi un nuovo formato deve servire a risolvere un problema che nessuno sta indirizzando o ad offrire nuove opportunità.

Il software per applicazioni da ufficio più diffuso è proprietario e si basa su di un formato dei dati diverso per ogni applicativo; come scambio dati non si va più in là di un formato generico di esportazione se il produttore del programma lo mette a disposizione. In pratica ogni programma ha un suo formato segreto che può variare anche fra versioni diverse dello stesso applicativo. Il produttore di norma non documenta i formati e li cambia come politica di marketing, obbligando i clienti ad aggiornare i programmi. Spesso il formato descrive letteralmente la struttura interna del programma che lo crea (modello a oggetti), mentre per avere uno standard occorre abbandonare la politica del documento come rappresentazione interna dei vari applicativi.

Problemi per i privati e le ditte

Il problema si presenta al momento di scambiare dati fra persone o ditte che utilizzano applicativi diversi. Un altro problema lo si ha perché nel tempo i programmi possono essere resi obsoleti dal cambio del sistema operativo del computer, oppure perché il fallimento della ditta produttrice ne impedisce l’aggiornamento o la correzione di falle critiche. Il risultato finale è che vi possono essere problemi nell’accedere ai propri dati prodotti qualche tempo prima. Microsoft documenta Word solo fino alla versione 97. Difficile scrivere un programma che esporti i documenti senza avere bisogno di Word stesso, senza documentazione. I formati di esportazione più comuni sono limitati e di difficile manipolazione, è il caso di RTF.

Problemi per i cittadini

Nella nostra epoca le informazioni pubbliche importanti devono essere diffuse anche per via elettronica, se per la loro pubblicazione si utilizza un formato proprietario si obbliga il cittadino a possedere ed utilizzare uno specifico programma di una certa ditta, che spesso funziona solo su di un sistema operativo per scelta del produttore che si è quindi in pratica obbligati ad acquistare ed utilizzare. La situazione è comparabile alla pubblicazione della Gazzetta Ufficiale in sola lingua eschimese o al permettere l’accesso alle autostrade solo ai veicoli di una unica azienda.

Se non sapete cosa contiene un certo documento ed esiste un unico programma che lo può rivelare, allora si e’ dipendenti da quel programma e chi ve lo può affittare (i programmi non si vendono, si affittano). Un foglio di carta è un foglio di carta e tutti lo possono leggere, un documento elettronico no.

In che modo memorizzare le informazioni per averle sempre disponibili

Il formato PDF, le cui specifiche sono pubbliche, allevia parzialmente la situazione perché è un formato di descrizione di pagina, non di documento. Per risolvere questo tipo di problemi ci occorre un formato di documento standard ed aperto: OpenDocument.

I vantaggi di OpenDocument, riassumendo, sono:

  • Standard ISO pubblicamente documentato, leggibile e scrivibile da chiunque su qualsiasi sistema operativo.

  • Possiamo utilizzare l’applicazione di nostra preferenza per manipolarlo.

  • Possiamo generare un documento con un semplice programma anche web, senza installare applicativi mastodontici su un server o dovere pagare costi di licenza.

  • I contenuti finalmente ci appartengono e possono sopravvivere alla particolare versione dell’applicazione utilizzata per generarli.

  • Utilizza molti standard esistenti

    • Alta qualità (basandosi su standard di qualità)

    • Basso tempo di sviluppo (riutilizzo di specifiche e codice)

    • Interoperabilità fra applicativi e piattaforme (MacOS, Linux,Windows)

E’ stato formalizzato da un comitato aperto (OASIS) che rende pubblici tutti i lavori ed accetta contributi anche della comunità Open Source, al contrario di ECMA, cui è stato sottoposto MS OpenXML, che rappresenta le grandi ditte (IBM,Microsoft,Sun, ecc)

XML per chi non lo conosce

Cenni su XML

  • markup

  • tag, ben formati

    • elementi ed attributi

  • gerarchico

  • significato dipende dal contesto

  • vantaggi di manipolazione

  • separazione della resa grafica dal contenuto

Il formato OpenDocument

Descrive tutti i formati della suite OpenOffice, si basa su di una struttura XML che idealizza i componenti del documento. Utilizza numerosi standard e raccomandazioni W3C come XSL-FO, Xlink, Dublin Core, SVG ed altri.

I file che compongono un documento contengono XML per separare i contenuti dalla formattazione.

Struttura di OpenDocument

Il documento può essere sia un unico file XML che un archivio compresso in un package ZIP per ridurre le dimensioni. E’ uno JAR Java.

  • Formato noto
  • Riunisce tanti file
  • Comprime le dimensioni

Se rinominiamo e scompattiamo un file vediamo i file che compongono il package.

lbell:~/Desktop/tmp lbell$ unzip -v ../prova.odt
Archive:  ../prova.odt
 Length   Method    Size  Ratio   Date   Time   CRC-32    Name
--------  ------  ------- -----   ----   ----   ------    ----
      39  Stored       39   0%  08-16-06 09:52  0c32c65e  mimetype
    (......)
    2773  Defl:N      704  75%  08-16-06 09:52  df3348e0  content.xml
    8425  Defl:N     1688  80%  08-16-06 09:52  4f72aa53  styles.xml
    1123  Stored     1123   0%  08-16-06 09:52  4d0cde59  meta.xml
     503  Defl:N      182  64%  08-16-06 09:52  aac6c364  Thumbnails/thumbnail.png
    7371  Defl:N     1191  84%  08-16-06 09:52  ae9b1660  settings.xml
    1866  Defl:N      318  83%  08-16-06 09:52  39d76235  META-INF/manifest.xml
--------          -------  ---                            -------
   22100             5247  76%                            15 files

Contiene almeno i seguenti file che sono documenti XML completi in sé:

mimetype Tipo del documento
META-INF/manifest.xml Informazioni sui file del documento
content.xml Contenuto vero e proprio e gli stili automatici utilizzati.
styles.xml Stili usati nel documento
meta.xml informazioni sul documento (autore,data,linguaggio, ecc)

Dettaglio dei file che compongono un documento

mimetype : cosa si è

Contiene il tipo del documento

    • per il testo: application/vnd.oasis.opendocument.text

 

manifest.xml : chi si è

Si trova in META-INF/manifest.xml. Contiene la lista di tutti i file con il loro percorso relativo al package, le dimensioni (se il documento è cifrato) ed il loro tipo MIME. Se un file è cifrato le informazioni per decifrarlo sono contenute nel manifest.xml, come vedremo più avanti.

 

lbell:~/Desktop/tmp lbell$ more META-INF/manifest.xml

<?xml version="1.0" encoding="UTF-8"?>
<manifest:manifest xmlns:manifest="urn:oasis:names:tc:opendocument:xmlns:manifest:1.0">
 <manifest:file-entry manifest:media-type="application/vnd.oasis.opendocument.text" manifest:full-path="/"/>
 <manifest:file-entry manifest:media-type="" manifest:full-path="Configurations2/statusbar/"/>
 <manifest:file-entry manifest:media-type="text/xml" manifest:full-path="content.xml"/>
 <manifest:file-entry manifest:media-type="text/xml" manifest:full-path="styles.xml"/>
 <manifest:file-entry manifest:media-type="text/xml" manifest:full-path="meta.xml"/>
 <manifest:file-entry manifest:media-type="" manifest:full-path="Thumbnails/thumbnail.png"/>
 <manifest:file-entry manifest:media-type="" manifest:full-path="Thumbnails/"/>
 <manifest:file-entry manifest:media-type="text/xml" manifest:full-path="settings.xml"/>
</manifest:manifest>

meta.xml

Contiene le meta informazioni sul documento (autore,data,linguaggio, ecc). Si basa sullo standard Dublin Core che definisce un set di 15 elementi di base più alcune estensioni.

 

<?xml version="1.0" encoding="UTF-8"?>
<office:document-meta xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:ooo="http://openoffice.org/2004/office" office:version="1.0">
        <office:meta>
                <meta:generator>OpenOffice.org/2.0$Unix OpenOffice.org_project/680m5$Build-9036
                </meta:generator>
                <dc:title>il titolo</dc:title>
                <dc:description>commento commento commento commento commento commento </dc:description>
                <dc:subject>l'argomento</dc:subject>
                <meta:initial-creator>l b</meta:initial-creator>
                <meta:creation-date>2006-08-17T15:59:29</meta:creation-date>
                <dc:creator>l b</dc:creator>
                <dc:date>2006-08-17T16:03:44</dc:date>
                <meta:keyword>parole chiave</meta:keyword>
                <dc:language>it-IT</dc:language>
                <meta:editing-cycles>3</meta:editing-cycles>
                <meta:editing-duration>PT4M18S</meta:editing-duration>
                <meta:user-defined meta:name="Info 1">info1</meta:user-defined>
                <meta:user-defined meta:name="Info 2">info2</meta:user-defined>
                <meta:user-defined meta:name="Info 3">info3</meta:user-defined>
                <meta:user-defined meta:name="Info 4">info4</meta:user-defined>
                <meta:document-statistic meta:table-count="1" meta:image-count="1" meta:object-count="0" meta:page-count="1" meta:paragraph-count="5" meta:word-count="17" meta:character-count="58"/>
        </office:meta>
</office:document-meta>

settings.xml

Opzioni dell’applicativo che ha generato il documento (zoom, colonne visibili, ecc)

Pictures

E’ una directory che contiene le immagini incluse nel documento, un file per immagine con formati standard (JPEG, PNG)

Basic

Contiene il testo delle macro se esistono.

content.xml

Vi si trova il contenuto vero e proprio del documento (finalmente). Nelle varie sezioni troviamo anche gli stitli ed i fonts utilizzati nella composizione.

styles.xml

Gli stili

Thumbnails

E’ consigliato produrre una anteprima del documento come immagine PNG e riporla in questa directory. In questo modo non occorre interpretare il documento per darne un’idea del contenuto. Può essere utilizzata da programmi web.

Il corpo del documento

Il documento vero e proprio inizia con la dichiarazione degli stili, di eventuali campi e variabili, seguiti dal corpo del testo

<?xml version="1.0" encoding="UTF-8"?>
<office:document-content xmlns:office=(...)">
 <office:scripts/>
 <office:font-face-decls>
  <style:font-face style:name="Arial" svg:font-family="Arial" style:font-family-generic="swiss" style:font-pitch="variable"/>
 </office:font-face-decls>
 <office:automatic-styles>
 </office:automatic-styles>
 <office:body>
  <office:text>
   <office:forms form:automatic-focus="false" form:apply-design-mode="false"/>
   <text:sequence-decls>
    <text:sequence-decl text:display-outline-level="0" text:name="Illustration"/>
    <text:sequence-decl text:display-outline-level="0" text:name="Table"/>
    <text:sequence-decl text:display-outline-level="0" text:name="Text"/>
    <text:sequence-decl text:display-outline-level="0" text:name="Drawing"/>
   </text:sequence-decls>
   <text:h text:style-name="Heading_20_1" text:outline-level="1">Un header</text:h>
   <text:p text:style-name="Text_20_body">Del testo normale,
  </office:text>
 </office:body>
</office:document-content>

Protezione

Con l’eccezione di manifest.xml e meta.xml ogni altro file può essere cifrato con un algoritmo Blowfish CFB assicurando integrità e confidenzialità utilizzando una password fornita dall’utente. I dati di sommario restano in chiaro. Si possono proteggere sezioni con password contro la modifica come pure le varie revisioni. Prima di eseguire una macro OO ne chiede l’autorizzazione.

Estensioni

E’ possibile inserire elementi non previsti dalle specifiche, con namespace non inclusi nello standard, ed i programmi che li caricano possono tenerne conto, ma in ogni caso devono leggere correttamente la parte aderente alle specifiche del documento.

Per accedere alla parte che descrive il dettaglio del formato testo di OpenDocument salta alla seconda pagina scarica il documento completo utilizzando questo link: il Formato OpenDocument.

PAGINA 2 >> 

Lascia un commento »

Non c'è ancora nessun commento.

RSS feed for comments on this post. TrackBack URI

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

Blog su WordPress.com.

%d blogger cliccano Mi Piace per questo: