[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [translators] [docinfo] [indice analitico] [volume] [parte]
TEI (Text encoding initiative), è un sistema di codifica SGML/XML per testi, nato e sviluppato con l'intento di dare la possibilità di trascrivere in forma elettronica, un documento che originariamente è disponibile solo in forma cartacea.
A prima vista non si comprende il significato di questa precisazione, se non si considera lo studio di un testo dal punto di vista linguistico, storico e artistico. Tanto per fare un esempio, TEI prevede anche la possibilità di annotare dove si trovano i salti pagina e le interruzioni di riga, nell'ambito di una certa edizione del documento che viene trascritto.
In generale, TEI potrebbe essere usato per realizzare qualunque tipo di documento elettronico, ma la sua caratteristica lo porta a essere più adatto alla trascrizione di ciò che non nasce in forma elettronica.
Il DTD di TEI prevede una grande quantità di elementi, con scopi molto particolari. Sta comunque a chi lo utilizza (per scrivere un'opera originale o per trascrivere un altro documento), stabilire come analizzare e suddividere le informazioni, in base all'obiettivo che si prefigge con il suo lavoro.
TEI offre anche un sottoinsieme del DTD completo, denominato TEI Lite. In generale i sistemi di composizione basati su TEI potrebbero non essere in grado di gestire tutte le situazioni, pertanto conviene avvicinarsi a questo sistema iniziando dal modello semplificato.
Lo sviluppo di TEI è sostenuto da associazioni letterarie, linguistiche e umanistiche che hanno dato vita a un consorzio: il consorzio TEI.
Questo capitolo offre solo una panoramica superficiale delle caratteristiche di TEI, assieme a qualche piccolo esempio pratico. La documentazione citata alla fine del capitolo può servire per approfondirne lo studio.
In un sistema GNU esistono due modi per comporre un documento scritto secondo il formato XML di TEI: attraverso dei fogli di stile XSLT che permettono di ottenere un file XSL-FO da comporre successivamente, oppure attraverso PassiveTeX (e di conseguenza XMLTeX). In generale, nessuno dei due modi dà risultati perfetti, pertanto conviene considerarli entrambi.
|
L'esempio che si vede rappresenta il minimo necessario per scrivere una piccola frase. Supponendo di avere chiamato questo file tei-001.xml
, dovrebbe essere possibile ottenere la sua composizione con l'aiuto di PassiveTeX e XMLTeX in questo modo:
$
latex "&xmltex" tei-001.xml
[Invio]
Dal momento che non ci sono riferimenti incrociati, non serve ripetere il procedimento. Eventualmente, si può convertire il file DVI ottenuto in PostScript:
$
dvips -o tei-001.ps tei-001.dvi
[Invio]
In alternativa a questi passaggi si potrebbe generare direttamente un file PDF in questo modo:
$
pdflatex "&pdfxmltex" tei-001.xml
[Invio]
Se invece si vuole percorrere la strada della trasformazione XSLT e della composizione del file XSL-FO che si genera, occorre procurarsi i fogli di stile, dall'indirizzo <http://www.tei-c.org/Stylesheets/teixsl-fo.zip>. I fogli di stile vanno estratti dall'archivio teixsl-fo.zip
, oppure prelevati uno per uno seguendo i riferimenti contenuti in questa pagina: <http://www.tei-c.org/Stylesheets/teixsl.html>.
Una volta ottenuti tutti i file che compongono il pacchetto dei fogli di stile per la composizione per la stampa, si può procedere alla trasformazione con strumenti come Xalan (capitolo 337):
$
xalan -IN tei-001.xml -XSL tei.xsl -OUT tei-001.fo
[Invio]
Si dovrebbe ottenere così il file tei-001.fo
da rielaborare ulteriormente.
La composizione del file XSL-FO generato si può ottenere per mezzo di FOP, oppure sempre con PassiveTeX e XMLTeX. Qui si mostra il secondo caso; per l'uso di FOP si può consultare il capitolo 338:
$
pdflatex "&pdfxmltex" tei-001.fo
[Invio]
Un documento TEI è contenuto nell'elemento TEI.2, che si compone necessariamente degli elementi teiHeader e text. A sua volta, l'elemento teiHeader si scompone in altri elementi, parte dei quali sono obbligatori. Il modello seguente si riferisce al minimo della struttura complessiva:
<TEI.2> <teiHeader> <fileDesc> <titleStmt> <title>titolo</title> [<author>autore</author>] ... [<editor>editore</editor>] ... </titleStmt> <publicationStmt> dichiarazione_relativa_alla_pubblicazione </publicationStmt> <sourceDesc> descrizione_della_fonte </sourceDesc> </fileDesc> </teiHeader> <text> <body> corpo </body> </text> </TEI.2> |
Il contenuto del documento, circoscritto dall'elemento text, può contenere, oltre all'elemento body, gli elementi front e back, per inserire rispettivamente, qualcosa da mettere all'inizio (come una prefazione) e alla fine (come un'appendice o un indice analitico). Al posto dell'elemento body si può mettere un elemento group, che a sua volta può contenere un elemento text con la sua suddivisione. Queste possibilità vengono solo accennate, ma non si mostrano esempi di questo tipo.
L'elemento body (così come front e back) può contenere del testo senza suddivisioni, composte per esempio da elementi p (paragrafi, come per HTML), oppure una suddivisione in sezioni, ma forse è più appropriato definirle «divisioni», delineate da elementi div o divn:
<div> ... <div> ... <div> ... ... </div> </div> </div> |
<div1> ... <div2> ... <div3> ... ... </div3> </div2> </div1> |
I due modelli sintattici dovrebbero permettere di capire che esiste un modo di usare gli elementi div, annidandoli, lasciando intendere il livello in base all'annidamento, mentre è anche possibile usare elementi divn che devono essere collocati in modo appropriato in base all'annidamento. In pratica, il secondo modo consente di avere un controllo maggiore rispetto agli errori che si possono fare involontariamente. È anche evidente che le due forme di suddivisione non sono miscelabili.
I vari attributi di questi elementi consentono di inserire informazioni che possono tornare utili per descrivere le caratteristiche della divisione, ma in linea di principio non intervengono nel modificare l'aspetto della composizione finale.
Una divisione ha probabilmente un titolo, che si definisce utilizzando l'elemento head prima del testo che si vuole inserire al suo interno:
<div[n]> <head>titolo</head> contenuto [<div[n]> ... </div[n]>] </div[n]> |
Segue un esempio molto semplice, con l'uso di divisioni non numerate:
|
Si può osservare il risultato della composizione ottenuta con PassiveTeX e XMLTeX nella figura successiva:
|
Dagli esempi mostrati è già apparso l'uso dell'elemento p, che idealmente rappresenta ciò che viene chiamato normalmente «paragrafo», allo scopo di racchiudere del testo lineare, trasformandolo così in un blocco impaginato.
In generale non c'è molto da aggiungere a proposito di questo elemento, se non avvisare che sono disponibili diversi attributi per qualificare il testo che contiene.
<p>testo_lineare</p> |
Negli esempi già mostrati appare anche l'uso di paragrafi vuoti, rappresentati come <p/>, quando il contesto richiede espressamente l'inserimento di un blocco anche quando non si vuole fornire alcuna indicazione.
Gli elenchi si realizzano con l'elemento list, che contiene normalmente soltanto elementi item. Notoriamente si distinguono diversi tipi di elenchi, in base al fatto che siano puntati, numerati o descrittivi. Questa caratteristica, contrariamente ad altri sistemi SGML/XML si ottiene assegnando il termine appropriate all'attributo type:
<list type="simple"|"bulleted"|"ordered"> <item>testo_lineare|blocco</item> ... </list> |
<list type="gloss"> <label>etichetta</label> <item>testo_lineare|blocco</item> ... </list> |
I due modelli sintattici sono semplificati rispetto alle possibilità, soprattutto per quanto riguarda la disponibilità di altri attributi non indispensabili. Dal confronto, si deve intendere che il secondo modello riguarda gli elenchi descrittivi, dove la componente descrittiva dei punti dell'elenco è contenuta nell'elemento label.
|
L'elenco mostra due elenchi, uno puntato e l'altro numerato, contenuti ognuno in una divisione distinta. Si può osservare il fatto che gli elementi item possono contenere testo lineare o altri blocchi, pertanto si possono realizzare anche dei sottoelenchi. Il risultato della composizione ottenuta con PassiveTeX e XMLTeX appare nella figura successiva:
|
Le tabelle di TEI, pur essendo evidentemente dei blocchi, devono essere contenute all'interno di un elementi p o simili. Una tabella si compone essenzialmente secondo la sintassi seguente:
<table rows="n_righe" cols="n_colonne"> <row> <cell>contenuto_cella</cell> ... </row> ... </table> |
Naturalmente sono disponibili molti attributi per gli elementi, oltre quelli che sono stati mostrati; inoltre, è possibile inserire anche altri tipi di elementi prima della descrizione delle righe, ma questo tipo di utilizzo non viene mostrato.
Le celle della tabella possono contenere sia testo lineare, sia blocchi; tuttavia, può darsi che il sistema di composizione non sia in grado di gestire celle che contengono testo molto lungo.
|
L'esempio mostra una divisione che contiene una tabella molto semplice. Alcune celle della tabella contengono un testo molto lungo: dipende dal sistema di composizione effettivo la capacità o meno di impaginarlo correttamente. Nella figura successiva si vede cosa può accadere se ciò non avviene:
|
Anche le figure devono essere contenute all'interno di un elementi p o simile. Una figura si compone essenzialmente secondo la sintassi seguente:
<figure [entity="entità_generale"]> <figDesc>descrizione_opzionale</figDesc> </figure> |
Una figura, secondo il sistema TEI può anche non essere dichiarata come oggetto grafico, ma semplicemente come indicatore della sua presenza. Pertanto, l'attributo entity che ha lo scopo di fare riferimento al file che contiene l'immagine, è facoltativo. Si osservi che l'elemento figDesc serve a inserire una descrizione che permetta di dare qualche indicazione a chi consulta il documento senza la possibilità di visualizzare l'immagine; pertanto non è da confondere con una didascalia.
L'indicazione del file che contiene l'immagine da visualizzare non avviene nello stesso modo di altri sistemi SGML/XML, perché si fa riferimento al nome di un'entità generale che deve essere dichiarata all'inizio del documento. Si osservi l'esempio seguente, nel quale viene dichiarata l'entità FiguraEsempio, contenente il nome del file da inserire (esempio.jpg
), a cui si fa riferimento nell'elemento figure:
|
Come si può osservare, nella dichiarazione dell'entità generale è stato specificato il formato dell'immagine. Sono disponibili le definizioni seguenti per i formati più comuni:
|
È ancora più importante osservare che il nome dell'entità viene inserito nell'attributo entity senza apparire come macro, ovvero senza la e-commerciale (&) che servirebbe a espanderne il contenuto. Infatti, se così fosse, sarebbe sufficiente mettere il nome del file direttamente. |
Si può vedere il risultato della composizione ottenuta attraverso la trasformazione dei fogli di stile XSLT nella figura seguente. Rispetto ad altri esempi che sono stati trasformati con PassiveTeX e XMLTeX, si notano delle informazioni in più.
|
TEI prevede diverse forme di evidenziamento del testo, ma per «evidenziamento» si deve intendere qualcosa che va oltre il puro aspetto visivo della composizione finale, perché lo scopo è quello di descrivere ciò che era in origine. Per esempio, si può delimitare una porzione del testo specificando che si tratta di un corsivo, ma questo è importante soprattutto per sapere che così era nel testo originale che si trascrive, mentre non è sicuro che il sistema di composizione usato renda effettivamente in corsivo il testo.
Gli elementi destinati a contenere testo prevedono un attributo comune, denominato rend (rendition), il cui scopo prevalente è quello di descrivere l'aspetto del carattere tipografico. A questo attributo si possono associare nomi come italic, bold, roman, gothic e tanti altri, ma non sempre il sistema di composizione è in grado di riconoscerli.
|
TEI prevede diversi tipi di note (note a margine, note a piè pagina, ecc.), per poter descrivere sia le annotazioni presenti nel testo che si va a trascrivere, sia quelle che potrebbero essere aggiunte in fase di trascrizione. Queste annotazioni si inseriscono con l'elemento note, che si utilizza in un contesto lineare:
<note place="foot"|"inline"|"left"|"right"|"end"|... [resp="author"|"editor"|...] [altri_attributi]> nota </note> |
Come si vede, nel modello sintattico si vede anche la possibilità di usare l'attributo resp, con lo scopo di specificare chi ha fatto la nota.
L'esempio seguente mostra la dichiarazione di una nota a piè pagina comune, senza indicazioni particolari:
|
Quando si fanno riferimenti interi al documento, si utilizzano degli elementi che puntano a delle ancore, ovvero delle etichette, dichiarate attraverso un attributo comune alla maggior parte degli altri elementi: id. In mancanza di altro, si possono usare gli elementi anchor e seg per inserire un'etichetta:
<anchor id="etichetta" /> |
<seg id="etichetta"> testo </seg> |
Per fare riferimento a queste ancore, si usano gli elementi ref e ptr:
<ptr target="etichetta" /> |
<ref target="etichetta"> testo </ref> |
Per fare riferimento a documenti esterni, le cose si complicano, perché occorre dichiarare gli indirizzi all'interno di entità generali, come avviene per i file delle figure:
<xptr doc="entità" /> |
<xref doc="entità"> testo </xref> |
L'esempio seguente mostra l'uso di un riferimento interno e di uno esterno; alcune righe sono state omesse:
|
Quando si scrive documentazione tecnica diventa importante poter rappresentare del testo con un carattere a larghezza uniforme, spesso rispettando le interruzioni di riga. Per questo si usano due elementi in particolare: eg e code:
<code>testo_lineare</code> |
<eg> testo_lineare ... </eg> |
Dal modello sintattico potrebbe non essere chiaro, ma l'elemento eg è quello che rispetta le interruzioni di riga.
Naturalmente, dove appropriato, si possono usare sezioni marcate di tipo CDATA (<![[CDATA[testo_letterale]]>), per poter usare letteralmente alcuni simboli che per SGML e XML hanno significati particolari. |
L'esempio seguente riepiloga l'uso di questi due elementi:
|
Come in altri sistemi di composizione SGML o XML, anche con TEI è possibile generare automaticamente degli indici. Si usa per questo l'elemento divGen, che va a collocarsi al posto di un elemento div o div1:
<divGen type="toc"/> |
Quello che si vede è il modo per ottenere un indice generale dai titoli delle divisioni. Per ottenere un indice analitico occorre prima inserire degli elementi index nel testo, dove si possono individuare dei termini importanti da annotare nell'indice:
<index level1="voce" [level2="voce_inferiore" [level3="voce_inferiore" [...]]] /> |
In pratica, è possibile indicare una voce singola, oppure una voce suddivisa in più livelli. Per ottenere l'indice analitico si usa sempre l'elemento divGen, specificando che si tratta di un indice analitico:
<divGen type="index"/> |
L'esempio seguente mostra i due casi. Si osservi che probabilmente gli strumenti di composizione comuni portano a ottenere l'indice generale, ma non quello analitico:
|
TEI Consortium, Text Encoding Initiative
Martin Mueller, A very gentle introduction to the TEI
TEI Consortium, TEI Lite DTD
Sebastian Rahtz, XSL stylesheets for TEI XML
Sebastian Rahtz, PassiveTeX
Appunti di informatica libera 2006.07.01 --- Copyright © 2000-2006 Daniele Giacomini -- <daniele (ad) swlibero·org>
Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome introduzione_a_tei.htm
[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [translators] [docinfo] [indice analitico]