Scarica [Del Grosso] Codifica di Testi e più Dispense in PDF di Storia Delle Codificazione Moderne solo su Docsity!
CODIFICA DI TESTI
PRESENTAZIONE
L’obbiettivo è quello di illustrare i principi di moderazione e le prassi di codifica del testo per una adeguata rappresentazione ed elaborazione digitale di risorse testuali. Fornire gli strumenti e le conoscenze necessarie per progettare e realizzare criticamente una codifica digitale di testi complessi, in particolare testi letterari e di interesse storico-culturale, usando le linee guida della TEI (text Encoding initiative). Quindi alla fine del corso le competenze saranno:
- Valutare metodo di codificati appropriato allo scenario di interesse
- Creare uno schema di codifica TEI
- Usare strumenti più idonei per la codifica di una risorsa testuale
- Elaborare e visualizzare il testo codificato I principali argomenti sono:
- Codifica di caratteri e testi
- Linguaggi markup e XML
- Creazione di schemi di codifica
- Norme TEI e specifici moduli
- Definizione di schemi di codifica personalizzati
- Fogli di stile XSLT
- Elaborazione documenti XML-TEI
- Esercitazioni ed esempi L’esame consiste in:
- Invio del progetto tramite github.
- Colloquio dove si discute il progetto e dove verranno verificate le conoscenze teoriche di base e di XML, XSD, XSL e del TEI P5 (moduli principali, parti spiegate a lezione, moduli particolari utilizzati nel progetto). La quasi totalità dei testi è registrata, trasmessa e quindi conservata attraverso supporti e materiali fisici di varia natura e forma, come le iscrizioni su pietra, pergamene, papiri, carta, libri a stampa… Per rendere disponibile questo patrimonio attraverso i sistemi per la gestione dell’informazione digitali e computazionali è necessario effettuare una trasposizione/transcodifica dei testi dal loro supporto originario verso il nuovo supporto elettronico (machine readable form). La codifica è uno strumento di analisi della conoscenza nell’ambito delle discipline che si occupano di testi. Il linguaggio di codifica adottato può essere considerato come un linguaggio teorico: esplicitare e formalizzare le ipotesi interpretative su un certo oggetto di studio.
Per ottenere una rappresentazione digitale del testo ci sono diversi formati, formalismi e prassi. La nostra scelta ricade sulla normativa TEI, anche se molte questioni non sono ancora risolte e altre sono controverse a riguardo di questa metodologia pratica-tecnologica, non considerando che le differenze di formato sono più che altro estetiche e non sostanziali, ma anche l’occhio umano vuole la sua parte. LA CODIFICA DI CARATTERI L’adozione di metodologie informatiche per il trattamento dei testi richiede in primo luogo la disponibilità di un’adeguata rappresentazione dei dati testuali in formato digitale. Il grado 0 (basso livello) è costituito dalla codifica di caratteri, che ne è solo la base di qualsiasi schema di codifica testuale. In questa codifica i caratteri vengono rappresentati all’interno di un elaboratore mediante una sequenza di codici binari Es: 01100001 corrisponde alla lettera A Come nel codice ASCII, dove ad ogni carattere corrispondono una sequenza di punti codice di 7 bit. Un insieme di caratteri astratti è detto character set (unità alfabetiche). Astratto perché non riguarda la rappresentazione materiale della forma sul supporto, ma è relativo alla forma mentale, fatta di simboli di codifica (referenti). Per poter trattare un insieme di unità alfabetiche in formato digitale bisogna assegnare a ciascun carattere un numero intero non negativo detto code Point (coded char set). Il fine ultimo della codifica è quello di rappresentare una sequenza di caratteri in una sequenza di byte. La codifica di un carattere utilizza un Encoding schema che a sua volta mappa o trasforma ciascun code Point in una sequenza di byte e quindi in ultima istanza in una sequenza di bit. Generalmente i code points sono espressi attraverso un sistema numerico esadecimale e disposti in una tabella di associazione. Quindi, trasformare una sequenza di caratteri appartenenti ad un char set in una sequenza di byte (bit) significa prima di tutto trasformare/mappare ciascun carattere nel proprio corrispettivo code Point e successivamente codificare/serializzare questo code Point nella relativa sequenza di byte (bit). Se si considerano tutti i possibili alfabeti del mondo e le molteplici esigenze poste dalla scrittura delle fonti manoscritte antiche e medievali, ci si accorge che la realizzazione di un sistema universale per la codifica dei caratteri è un progetto molto complesso con svariate sfide da affrontare. Ad oggi lo standard della codifica caratteri è l’unicode. Esso è in grado di codificare più di un milione di differenti unità alfabetiche, segni di interpunzione e diacritici, appartenenti a centinaia di lingue diverse. Unicode ha i code point indicati da una U+ seguito dall’esadecimale con pudding del codice:
La TEI è un autorevole progetto internazionale a cui afferiscono diverse organizzazioni e università il cui scopo è di fornire a studiosi di informatica umanistica uno strumento più espressivo e flessibile per rappresentare qualsiasi aspetto di interesse di una risorsa testuale da rappresentare digitalmente. Fondamentale l’impiego di XML da la possibilità di:
- Separare dati dall’applicativo di authoring/editing
- Separare la rappresentazione dei dati dalla loro presentazione
- Trasformare i dati in qualsiasi altro formato compatibile
- Rendere leggibili i file XML da parte degli esseri umani Ed è usato perché fa parte dello standard w3c, è aperto, personalizzabile, semplice per la condivisione e lo scambio di dati e adatto per codificare dati strutturati e semistrutturati. insomma, con XML abbiamo la possibilità di creare linguaggi di marcatura personalizzati e specifici per ogni esigenza. Ne fanno parte XSD (schema di definizione linguaggio), XPath, XSL, XSL-T, XSL-FO (fogli di stile), XQuery, XInclude, DTD (per definire linguaggi) e RelaxNG (per espressioni regolari). È possibile struttura dati, gestire strutture gerarchiche, e laborare e presentare dati, validare tipi di strutture e tipi di dati consentiti e aggiungere e gestire annotazioni a vari livelli di granularità. TEORIA E METODI Le tecnologie informatiche hanno cambiato la produzione, trasmissione e studio del sapere e della conoscenza. Il nuovo formato digitale ha determinato profonde trasformazioni nelle pratiche scientifiche che hanno per oggetto o fine i testi. Gli studiosi si sono interrogati sul nuovo rapporto che le discipline umanistiche devono avere con il testo che diventa elettronico o digitale. La natura del formato digitale ha aperto nuove sfide al fine di determinare e trovare soluzioni ai problemi connessi alla rappresentazione formale dei testi. L’informatica allo stato attuale è in grado di fornire allo studioso di scienze umane una serie di tecnologie per implementare dei sistemi di rappresentazione testuale. La discussione sulla rappresentazione digitale dei testi ha rivelato un intreccio di complesse questioni teoriche e pratiche. Per codifica informatica dei testi intendiamo la rappresentazione formale di un testo ad un qualche livello descrittivo su supporto digitale, in un formato utilizzabile da un elaboratore (machine readable form) mediante un opportuno linguaggio informatico. In principio c’è la comunicazione. Comunicare è la facoltà di trasmettere qualcosa a qualcuno. Per comunicare bisogna condividere un sistema di riferimento:
- qualcuno/qualcosa che produce
- qualcuno/qualcosa che trasmette
- qualcuno/qualcosa che consuma
Nella comunicazione umana non c’è un’assoluta corrispondenza tra sistema di codifica e sistema di decodifica. Il messaggio codificato è diverso dal messaggio decodificato. Il diasistema è un sistema linguistico di livello superiore, che riunisce due o più sistemi omogenei tra i quali ci sono somiglianze parziali sul piano fonetico, morfologico e lessicale. Il sistema di codifica e il sistema di decodifica sono due sottoinsiemi di uno stesso diasistema, quindi: Comunicazione = sistema emittente (S1) - sistema destinatario (S2) Il termine codifica può essere associato alla creazione di un testo, il termine decodifica può essere invece associato alla comprensione e interpretazione di un testo. Il messaggio può essere visto come contenitore di significato (testo). Il codice è il sistema di regole e segni per convertire informazioni da una forma anche astratta, in un’altra forma o rappresentazione per la comunicazione tramite un canale. Il codice deve essere in comune tra autore e macchina, in un formato comprensibile per entrambi. È in formato machine readable (MRF) se comprensibile dal calcolatore. Codificare per il computer implica una rimodifica del testo affinché vengano esplicitate le caratteristiche e le funzioni del testo identificate. Codificare in formato digitale un testo significa esplicitare i processi referenziali effettuati da un interprete nella comprensione del testo. La codifica testuale è la rappresentazione formale di un testo e delle sue caratteristiche mediante un linguaggio informatico. Questo linguaggio consente di rappresentare esplicitamente le caratteristiche di un testo applicando etichette meta-testuali la cui funzione e applicazione è descritta da una grammatica formale per essere comprese da una macchina o software. La codifica digitale del testo diviene a questo punto un linguaggio teorico attraverso il quale lo studioso costruisce modelli formali del testo. Ai fini della modellizzazione dei testi, tra i linguaggi formali si sono imposti quei sistemi basati sui cosiddetti linguaggi di marcatura (markup). La codifica informatica di un testo impone l’adozione di un sistema linguistico formalizzato che permetta a uno studioso di rendere esplicita una interpretazione di un testo e le varie operazioni che la hanno prodotta. I sistemi dichiarativi forniscono un potente dispositivo metalinguistico. Per una corretta rappresentazione digitale dei testi, bisogna definire e implementare un linguaggio formale che deve essere sia elaboratile da un computer sia sufficientemente espressivo per rappresentare la complessità del testo. Il principale requisito di uno schema di codifica pertanto è la capacità rappresentazione che esso offre allo studioso. MODELLO DEL TESTO L’informatica umanistica ruota attorno alla rappresentazione e all’elaborazione degli oggetti che costituiscono il dominio delle discipline umanistiche. Il testo ne è l’oggetto più ricorrente.
Il testo, come oggetto complessi multidimensionale/pluralista, è oggetto di molte analisi, tra le quali:
- grafematica (caratteri, ideogrammi)
- Strutturale (interna, editoriale)
- Metrica (piedi, versi, stanze, strofe)
- Stilistica e retorica
- Tematica
- Semantica L’emittente prepara il messagio, il destinatario potrebbe riceverlo anche dopo molto tempo. Il feedback molto spesso non è possibile. Il codice dell’emittente e quello del destinatario possono risultare diversi o parzialmente compatibili. La parola “documento” designa uno strumento per insegnare e atto a dimostrare qualcosa. È l’oggetto materiale, sensibile, concreto, che costituisce il supporto, stabile e riproducibile dell’informazione testuale che determina una modalità di interazione (lettura, decifrazione). La codifica di un documento è diversa dalla codifica di un testo. Il documento è cartaceo e digitale. Oltre alla sequenza di grafemi, un testo si presenta strutturato in segmentazioni logiche e partizioni interne in blocchi. Una struttura i cui elementi sono determinati dalla struttura logico-semantica del discorso con finalità e funzioni ben distinte (titolo di un capitolo, corpo di un paragrafo). Un documento, ugualmente, è costituito da elementi significativi, non solo verbali, da esplicitare formalmente (layout, segmentazione, foliazione, aspetti paratestuali, topograficie tipografici). Il testo è un oggetto reale dotato di una struttura che corrisponde alla struttura del linguaggio di rappresentazione. Gli oggetti di contenuto testuale sono perlopiù le strutture editoriali astratte di cui si compone un testo (divisioni logiche, segmentazioni e partizioni di un libro). Questi oggetti sono gerarchici e di contenuto in quanto tali elementi non possono contenere altri, ma sempre entità che veicolano contenuto. Sono ordinati in quanto esiste una relazione lineare tra due oggetti posti sul medesimo livello gerarchico (pensiamo alle parole di una frase all’interno di un paragrafo). Il primo modello implementato dalla TEI si è basato su questo impianto teorico. Sono però stati riscontrati una serie di problemi di rappresentazione ed espressività: esistono diversi insiemi di elementi di contenuto che non possono essere ricondotti a una struttura gerarchica unitaria. Pensiamo alla rappresentazione di parole e righe. Gli elementi di contenuto che si sovrappongono si comportano come se appartenessero a diverse gerarchie di oggetti testuali. Ogni prospettiva analitica su un testo determina una struttura gerarchica di oggetti di contenuto. Se due oggetti testuali evidenziati da una prospettiva teorica si sovrappongono, allora essi appartengono rispettivamente a due sottoprospettive diverse della prospettiva teorica principale. In questa ottica il testo diventa un sistema a più livelli, che corrispondono a diversi punti di vista dell’osservatore: sistema multidimensionale. Le strutture del testo sono gerarchiche. Il testo è un oggetto linguistico astratto organizzato secondo una struttura gerarchica ordinata di oggetti di contenuto.
IMPORTANZA DELLA CODIFICA DIGITALE
“La codifica informatica di un testo può essere vista come il prodotto di un insieme di inferenze che vengono espresse mediante un linguaggio formalizzato” - Ciotti. Digitalizzare e codificare per poter favorire l’elaborazione e il trattamento automatico dei testi, in analisi e trattamenti di tipo:
- Linguistico (ling- computazione, database testuali, corpore)
- Di altro tipo (metrica, stilistica…)
- Ricerca testuale avanzata
- Pubblicazioni in vari formati (web, ebook, stampa)
- Didattica Per facilitare e garantire una universalità di accesso al loro contenuto, si digitalizza un testo, perché le edizioni elettroniche garantiscono nuove funzionalità e maggior diffusione permettendo di preservare i documenti più antichi e ridurre la consultazione diretta. Anche se possono sussistere problemi riguardanti i sistemi proprietari, non sempre aperti, la reperibilità di hardware e software, la limitata manutenibilità e la difficile portabilità su piattaforme diverse. Per essere portatile, un documento digitale deve essere indipendente dall’hardware, il software, dai sistemi di codifica e dai processi applicativi. Deve essere interscambiabile tra sistemi diversi, e integrabile su diverse risorse informative omogenee. Quindi le modalità di codifica devono divenire uno standard per favorire la portabilità. I vantaggi di uno standard stanno anche nella sua apertura, disponibilità pubblica nelle sue specifiche. Standardizzare aiuta a produrre risultati confrontabili e condivisibili, produrre prodotti usufruibili nel futuro da utenze che non hanno necessariamente lo stesso software o hardware impiegato dalla codifica. Il sistema di codifica deve essere focalizzato sul contenuto piuttosto che sulla sua forma grafica. Se dichiarativo, si presta ottimamente per rappresentare strutture complesse come riferimenti incrociati e collegamenti tra elementi all’interno di un testo. In questo modo la codifica permette allo studioso di esplicitare le sue ipotesi interpretative, predicare l’appartenenza di un dato segmento testuale a una classe di strutture testuali definita dall’utente. La stessa sintassi del linguaggio di codifica gerarchico, può essere usata per rappresentare le relazioni tra gli elementi strutturali di un testo a un determinato livello di descrizione. L’applicazione di metodologie computazionali implica la formalizzazione di dati e di elaborazione. Implica la specificazione di algoritmi che, applicati alle strutture dati, sono in grado di simulare processi di manipolazionedei testi tipici della ricerca umanistica o in generale delle pratiche sociali. La specificazione di cosia sia un testo e di quale legame suscita tra questa specificazione, i processi di interpretazione e i linguaggi formali con i quali essa viene descritta è tutt’altro che banale. Anche le norme TEI impongono scelte teoriche e interpretative che non sono imputabili alla semplice trascrizione. Quindi
NON è CODIFICA DI UN TESTO
- Scansione documento
- Usare software OCR per avere un formato di testo diverso
- Creare HTML di un testo
- Creare documento di word processing
- Creare anche dati con testo destrutturato È CODIFICA DI TESTO
- Conversione formato comprensibile al calcolatore
- Usare un linguaggio di codifica formale
- Stabilire caratteristiche del testo che si intendono esplicitare (modello codifica)
- Definire o seguire schema ben preciso I LINGUAGGI DI CODIFICA Per codifica digitale dei testi intendiamo la rappresentazione formale di un testo ad un qualche livello descrittivo, su di un supporto digitale, in un formato utilizzabile da un elaboratore mediante un opportuno linguaggio. Un testo è molto di più della sequenza di caratteri che lo compongono. Per mezzo della codifica vogliamo rendere esplicite le caratteristiche che vogliamo analizzare. Solo quello che è esplicito può essere interpretato ed elaborato dal computer. Vogliamo codificare il testo per quello che è, non per quello che sembra, mediante un linguaggio di markup. La codifica con linguaggi di marcatura è in sostanza un insieme di convenzioni, rese attraverso specifiche sequenze di caratteri, etichette, codici, detti tags, intercalati nel testo per permettere agli elaboratori elettronici di distinguere le varie parti di un documento. Un linguaggio di markup è un sistema formale per scambiare e pubblicare informazioni in formato testo in modo strutturato, costituito da un sistema ben preciso di istruzioni, ognuna delle quali è dotata di una specifica semantica e sintassi. Esistono diversi linguaggi di markup, per rappresentare diversi tipi di documenti:
- Procedurali (specific)[LaTex, RTF] Orientati al documento, indicando come deve essere elaborato e disposto il testo. Le istruzioni da inserire nel testo per specificarne le caratteristiche. Font, dimensione, spaziatura, posizionamento della pagina, colore… L’unico utilizzo di un testo codificato in questa maniera è la creazione di un output orientato alla visualizzazione.
- Dichiarativi (generic) Orientati al testo, annotano la struttura, la funzione ed il significato degli elementi costitutivi del testo, tralasciandone l’aspetto. Possono indicare la posizione che il
brano in questione occupa all’interno del documento (markup strutturale), peculiarità del testo stesso (markup semantico). I fogli di stile definiscono la formattazione dell’output, quindi si possono avere molteplici usi del medesimo testo. La separazione tra contenuto e presentazione non è solo intenzionale, ma tipico di questi sistemi. Permette di concentrarsi sull’annotazione logica-semantica per funzioni di ricerca e di analisi, lasciando ai fogli di stile la resa grafica. In questo modo si ha inoltre la possibilità di utilizzare uno stesso testo codificato con finalità o formattazioni differenti, a seconda delle varie esigenze. Esistono anche linguaggi che possono essere definiti semi-procedurali o semi- dichiarativi: utilizzano le istruzioni sia per una codifica procedurale, sia per una codifica dichiarativa. HTML per esempio ha tra le sue etichette istruzioni di tipo procedurale per indicare come devono essere rese determinato porzioni di testo, e istruzioni di tipo dichiarativo che hanno una base semantica. FONDAMENTI DI XML XML ha origine dal linguaggio SGML, introdotto quest’ultimo negli anni 80 con il fine di descrivere la struttura e il contenuto di qualsiasi informazione. XML ne è una semplificazione, ed è un meta-linguaggio usato per creare linguaggi di marcatura personalizzabili (vocabolari o XML applications). XML è estensibile, è pensato per essere modificato ed esteso al fine di soddisfare le varie necessità di rappresentazione dell’informazione. Non contempla un vocabolario predefinito. È sviluppato e mantenuto la consorzio w3c, il quale sviluppa protocolli e standard riconosciuti dalla comunità scientifica e tecnica al fine di condividere informazioni sul web. XML è anche una specificazione per descrivere la struttura dell’informazione seguendo un modello dei dati gerarchico. Simile a HTML, si differenzia da esso perché non ha etichette predefinite. Sostanzialmente è un linguaggio:
- Case sensitive
- Con elementi annidabili
- Con attributi distinti e indicati tra apici
- Con caratteri speciali non usufruibili
- Con commenti mai prima della dichiarazione XML XML ha regole e strutture semplici, ma che vanno seguite rigorosamente alla lettera. Ciò rende la manutenibilità e la progettazione più semplici. XML ha un modello dei dati gerarchico e può quindi essere visto come un albero ordinato. Per questo motivo le informazioni sono rappresentate in modo ottimale se sono gerarchiche e sequenziali. Al fine di soddisfare i requisiti degli studiosi del testo il vocabolario TEI-XML è stato sviluppato nel corso degli ultimi decenni con lo scopo e l’obbiettivo di permettere la codifica di qualsiasi informazione testuale. Un vocabolario XML è un insieme di tag XML sviluppato per una particolare esigenza di codifica.
Tutti gli elementi nel body del documento sono figli di uno stesso elemento radice, necessario quest’ultimo per essere considerato ben formato il documento. Ciò è rappresentabile con un albero, dove prologo e commenti non ne fanno parte. Un modo rapido e comodo per visualizzare la struttura completa di un documento XML è quello di disegnare attraverso un diagramma ad albero gli elementi del documento XML. Gli elementi di un documento XML possono avere uno o più attributi. Un attributo descrive una caratteristica dell’elemento in cui appare. Un attributo ha senso solo all’interno del proprio elemento e non è possibile separarlo da esso in alcun modo e ha due componenti: nome - valore. Il valore di un attributo è una stringa e deve essere sempre racchiusa tra apici, singoli o doppi, e iniziare con una lettera o _. Gli spazi non sono consentiti e non può iniziare con la stringa xml: <element attribute:”value”>testo Il loro ordine non è significativo. Il contenuto testuale di un elemento XML può essere diviso in tre categorie:
- PCDATA Si riferisce a tutti quei caratteri che XML tratta come parte del codice e quindi interpretati dal parser (XML declaration, tag, referenze, commenti). La sua presenza può causare errori inaspettati per i caratteri speciali che non possono essere usati come contenuto testuale.
- CDATA Di questo tipo, i dati non vengono interpretati dal parser XML e vengono trattati come pure contenuto (blocco di testo). <! [CDATA [character data]]> Le sezioni di testo possono essere inserite in qualsiasi parte del documento XML. Utile se presentano molti caratteri speciali, anche se non è possibile inserire commenti, annidare sezioni, essere vuote e non ammettono i simboli “]]”.<
- White Space Gli spazi bianchi sono ignorati quando:
- sono tra i tag
- All’interno del prologo, epilogo e i tag Sono trattati come parte del contenuto se:
- Inseriti nel valore di un attributo
- All’interno del contenuto testuale
Una processing instruction è un comando, una direttiva, che indica al parser in che modo elaborare e trattare tutto o parte del documento XML.
Target identifica il tool al quale la processing instruction è diretta Instruction identifica le informazioni che il documento passa al parser per essere elaborate. Le istruzioni hanno la forma degli attributi (nome-valore). Un namespace può essere visto come una collezione di elementi a attributi e un insieme di regole che ne determina la struttura e il contenuto. È ereditato da tutti gli elementi discendenti dell’elemento in cui esso è dichiarato. Generalmente si dichiarano tutti i namespace nell’elemento root così da avere a disposizione tutti gli elementi dei vari namespace in tutto il documento XML. Es:
**VALIDARE UN DOCUMENTO XML** Se vogliamo condividere efficacemente informazioni bisogna avere dei meccanismi per controllare che i dati trasmessi rispettino una ben precisa struttura e abbiano un ben preciso e coerente modello dei contenuto, ergo una grammatica. Per esserne sicura si ricorre alla validazione, e per questo bisogna riferirsi a uno schema. Gli schemi XML sono regole che controllano come utilizzare correttamente gli elementi e gli attributi del vocabolario XML. Sono strumenti per descrivere le regole relative ad una corretta compilazione di un documento XML, corrispondenti alla DTD e alla XSD. Sono come un contratto formale condiviso tra chi codifica dati e chi deve consumarli. In questo modo può avvenire lo scambio delle informazioni codificate. Validare un documento XML significa verificare che il documento sia aderente al formato definito nello schema. È valido se esso è ben formato e se soddisfa anche le regole specificate all’interno dello schema. Lo schema infatti definisce: - La struttura
- Le regole
- Valida verifica da parte di un programma (checker) xmllint xmlfirst.xml —schema ../schema/xsd/xsdfirst.xsd da terminale per validazione. SCHEMI La DTD descrive le regole relative alla struttura di un documento XML. Dichiara gli elementi, attributi, entità e notazioni ammesse in esso. Se un documento XML non si riferisce ad esso o non rispetta le sue regole, seppur ben formato, non può essere valido.
Es:
Un elemento XML può essere anche vuoto: È possibile dichiarare anche elementi che hanno qualsiasi tipo di content model con la parola chiave ANY: La dichiarazione della DTD viene inserita attraverso una URL nel prologo del documento XML, tra la dichiarazione del documento XML e l’elemento radice. La DTD può quindi essere riutilizzata per altri documenti XML. Le entità servono per includere dati da diverse fonti, e la DTD le prevede. Ne esistono due: quelle generiche (espanse nel XML) e quelle parametriche (espanse nella DTD). Si possono classificare in interne ed esterne, a loro volta possono essere parsed o unparsed (tranne le parametriche che sono solo parsed). Le entità generiche interne aiutano ad includere nel documento XML i caratteri speciali che altrimenti causerebbero errori al passaggio del parser. DTD: XML: &entity-name; Spesso le entità vengono utilizzate per dare un nome ai riferimenti di carattere. Tuttavia un documento XML può avere anche entità generiche esterne: L’url è il luogo dove è l’entità esterna. Le entità esterne non posso contenere una DTD per motivi di gestione, ma è possibile utilizzare altre entità all’interno delle entità esterne. Le entità generiche sono dichiarate nella DTD, ma possono essere utilizzate all’interno di un documento XML e non nella DTD stessa. Le entità parametriche sono ad uso esclusivo della DTD: Quando vengono inserite in una DTD, vengono rimpiazzate dal suo contenuto a tempo di esecuzione. Ci permette di ottimizzare la manutenibilità. Quelle esterne facilitano la modulari di grandi DTD e permettono un lincino dinamico ai vari documenti di definizione. Grazie a questi tipi di entità è possibile includere pezzi di DTD residenti in posizioni remote e formare un completo e unico documento DTD a tempo di esecuzione. XSD
Uno schema XML descrive come deve essere realizzato un altro documento XML. È usato per validare, anche se viene realizzato tramite l’uso di un vocabolario predefinito riferibile attraverso un namespace con URI standard. L’elemento radice è sempre . Tutti gli elementi e gli attributi dello schema sono dichiarati all’interno del namespace. Tutti i documenti XSD contengono la dichiarazione questo namespace con prefisso convenzionale xsd o xs. I componenti di base di uno schema XSD sono le dichiarazioni degli elementi e le dichiarazioni degli attributi. È detto Element declaration lo scrivere un pezzo di codice XSD per descrivere e validare un elemento per un documento XML. XSD permette di dichiarare elementi, attributi e di specificare il numero di figli, occorrenze, ordine di apparizione e i tipi di dati del content model. La dichiarazione può essere di tipo semplice (ne figli ne attributi) o complesso (tutti gli altri casi). <xsd:schema xmlns:xsd=‘‘http://www.w3.org/2001/XMLSchema’’> <xsd:element name=‘‘text’’/> </xsd:schema> /Radice / Il primo documento XML Validato. /Dichiarazione di tipo semplice/ <xsd:element name=‘‘Employee’’> <xsd:complexType> </xsd:complexType> </xsd:element> </xsd:schema> /Dichiarazione di tipo complessa/ Il documento XML, istanza dello schema XSD per essere valido deve contenere un elemento radice. Validare il documento XML con il relativo XSD con XMLlint. Alla base dello standard XSD ci sono le dichiarazioni degli elementi e degli attributi, ad un livello di astrazione più alto ci sono i types e i groups. Una dichiarazione di un elemento rappresenta un elemento nel documento XML istanza dello schema. Il vantaggio di usare dichiarazioni di elementi globali è che la dichiarazione può essere riferita più volte da altre dichiarazioni all’interno del XSD. <xsd:schema xmlns:xsd=‘‘http://www.w3.org/2001/XMLSchema"> <xsd:element name=‘‘body’’> <xsd:complexType> <xsd:attribute name=‘‘lang’’/> <xsd:attribute name=‘‘type’’/> </xsd:complexType> </xsd:element> <xsd:element name=‘‘text’’> <xsd:complexType> <xsd:all> <xsd:element ref=‘‘body’’/> </xsd:all> </xsd:complexType> </xsd:element> </xsd:schema> Attributi e elementi possono essere raggruppati in costrutti detti attributi o Element groups. L’unico attributo obbligatorio è name (vedi codice sopra).
descrivere un certo dato in modo più accurato, contribuendo a valicare i valori in modo più efficace. XSD supporta una cinquantina di tipi di dato divisi in due categorie: primitive e derivate. Sono primitive i tipi di dati dai quali sono stati derivati altri tipi di dati. Non derivano da alcun tipo di base. Ciascun tipo di dato ha una collezione di proprietà che possono essere usate per attuare validazioni aggiuntive ai valori permessi dal tipo di dato corrente (facets). Attraverso i facets si definiscono le restrizioni volute. Ogni tipo ha un insieme stabilito di facets che controllano una certa proprietà o una certa caratteristica del tipo di dato considerato. Es: <xsd:restriction base=‘‘xsd:string’’> <xsd:pattern value=‘‘[A-Za-z]+’’/> Le definizioni di tipo globale sono utili per il riuso del codice e per mantenere ed organizzare al meglio uno schema XSD ampio. Un nuovo tipo può essere derivato da un tipo già dichiarato, primitivo o meno, ed ereditarne le caratteristiche.
- Derive by restriction
- Derive by list
- Derive by union Identificare il tipo di dato di base e aggiungere le dichiarazioni di restrizione e le regole di validazione che si reputano utili. I valori sono accettati solo se sono validi per uno dei tipi dichiarati nella derivazione. Nei costrutti di derivazione non è permesso aumentare lo spazio dei valori consentiti, non è possibile quindi definire regole meno restrittive di quelle che caratterizzano il tipo base. Quando si deriva un tipo semplice ad un altro tipo semplice, tutte le facets vengono ereditate (è possibile usare l’attributo fixed di una data proprietà a true per assicurare che la proprietà stessa non venga modificata dal tipo derivato). XSD ha anche un meccanismo per controllare e proteggere un tipo dall’essere derivato con l’attributo final. Le attribute declaration non possono avere tipi complessi. La struttura di un tipo complesso è chiamata content model. Se un elemento di tipo complesso contiene dichiarazioni di elementi e di attributi, la dichiarazione degli attributi segue la dichiarazione degli elementi. Gli attributi possono apparire in qualsiasi ordine, ma è importante specificare la politica di ordinamento degli stessi all’interno del content model: Complex types Descrizione Empty content non possono contenere testo, ma possono avere attributi. Element-only Composti solo da elementi figli e attributi. Non possono contenere testo. Mixed-content Può contenere figli, testo e attributi
Gli attributi non possono apparire più di una volta all’interno dell’elemento. Un elemento invece può apparire più di una volta all’interno del proprio elemento padre. Possiamo controllare quante occorrenze di un elemento sono consentite dagli attributi minOccurs e maxOccurs. Se si vuole rimuovere un attributo bisogna dichiararlo nuovamente e specificarne l’uso prohibited. <xsd:attribute name="Title" use="prohibited"/> La derivazione può avvenire nei seguenti casi: La derivazione di un tipo commesso può essere controllata impiegando l’attributo final nella dichiarazione del tipo. INTRODUZIONE AL TEI 1987: necessità di standard che permetta la creazione e interscambio in archivi 1990: prima guida della TEI 1900-94: fondi garantiti 2000: nascita della TEI 2002: passaggio da SGML a XML 2007: TEI P Elementi e attributi Descrizione <xsd:sequence /> Indica che gli elementi dichiarati devono seguire l’ordine specificato <xsd:all /> Indica che l’ordine degli elementi non è significativo <xsd:choice /> Indica che solo uno dell’insieme di elementi specificati può essere usato nel XML