MDL accoglie proposte di collaborazione da studiosi e istituzioni esterne. Questa pagina descrive la procedura e mette a disposizione lo schema di codifica TEI adottato dalla biblioteca.
Chiunque curi l'edizione o la descrizione di un testo latino medievale o umanistico: singoli studiosi, gruppi di ricerca, progetti di edizione digitale, biblioteche e archivi. I contributi possono riguardare un testo nuovo, l'aggiornamento di una scheda già pubblicata oppure la segnalazione di errori nei testi esistenti.
RegoleTEI.rng e le regole
RegoleTEI.sch — prima dell'invio.
Sono gli stessi controlli che la MDL esegue in fase di importazione.
<editor> del
<teiHeader>.
Le regole di codifica della MDL sono definite in un ODD TEI, dal quale sono generati automaticamente i due schemi usati per la validazione. I tre file dicono la stessa cosa, ma servono a scopi diversi.
<publisher> valga sempre
SISMEL. Edizioni del Galluzzo o che
<date> sia un anno di quattro
cifre). Le stesse regole sono incorporate nell'RNG, ma quasi nessun
validatore RELAX NG le applica: per verificarle davvero serve questo file
e un motore Schematron.
Se lo schema risulta troppo restrittivo per il testo che si sta codificando — un elemento necessario non è ammesso, un valore di attributo manca dal vocabolario controllato — non va aggirato: si segnala alla redazione, che valuta la modifica dell'ODD e rigenera lo schema.
Il modo più comodo è dichiarare entrambi gli schemi nel documento
stesso, con due istruzioni di elaborazione
<?xml-model?>. oXygen XML
Editor le riconosce entrambe e applica i due livelli mentre si scrive;
Visual Studio Code (con l'estensione XML di Red Hat), Emacs (nXML) e
altri editor usano almeno la grammatica RELAX NG per validazione e
completamento automatico.
<?xml-model href="https://www.mirabileweb.it/mdl/schema/RegoleTEI.rng"
type="application/xml"
schematypens="http://relaxng.org/ns/structure/1.0"?>
<?xml-model href="https://www.mirabileweb.it/mdl/schema/RegoleTEI.sch"
type="application/xml"
schematypens="http://purl.oclc.org/dsdl/schematron"?>
In alternativa si scaricano i due file accanto ai propri documenti e si
indica un percorso relativo (ad esempio
href="RegoleTEI.rng").
I due livelli si controllano con due strumenti distinti. Sono gli stessi che usa la MDL, così il risultato in locale coincide con quello che si otterrà all'importazione.
# 1. grammatica RELAX NG — jing (richiede Java)
jing RegoleTEI.rng documento.xml
# 2. regole sui valori — Schematron (richiede Node.js)
npx -p node-schematron -p slimdom-sax-parser \
node-schematron RegoleTEI.sch documento.xml
jing non stampa nulla quando il documento è valido; node-schematron
stampa pass oppure l'elenco delle
asserzioni violate, con il messaggio in italiano previsto dallo schema.
Si invia solo dopo che entrambi i comandi sono puliti.
jing si installa con brew install jing-trang
su macOS, apt install jing su Debian
e derivate, oppure scaricando il jar dal sito del progetto (in quel caso
il comando è java -jar jing.jar … e
serve una JVM installata). Il secondo
pacchetto nel comando npx,
slimdom-sax-parser, va indicato
esplicitamente: node-schematron lo richiede ma non lo dichiara fra le
proprie dipendenze.
Per la grammatica va usato jing, non xmllint: l'implementazione
RELAX NG di libxml2 gestisce male
interleave e su questo schema
respinge documenti perfettamente validi (166 su 419 nel corpus della
biblioteca). jing è l'implementazione di riferimento ed è quella che fa
fede.
Lo schema impone l'ordine di alcuni blocchi e il valore di alcuni campi editoriali, che sono costanti per tutta la biblioteca. Questo scheletro valida ed è il punto di partenza consigliato:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-model href="https://www.mirabileweb.it/mdl/schema/RegoleTEI.rng"
type="application/xml"
schematypens="http://relaxng.org/ns/structure/1.0"?>
<?xml-model href="https://www.mirabileweb.it/mdl/schema/RegoleTEI.sch"
type="application/xml"
schematypens="http://purl.oclc.org/dsdl/schematron"?>
<TEI xmlns="http://www.tei-c.org/ns/1.0">
<teiHeader>
<fileDesc>
<titleStmt>
<title xml:id="n1342">Titolo dell'opera</title>
<author>
<persName xml:id="n20689">Nome normalizzato dell'autore</persName>
<term>Hagiographia</term>
</author>
</titleStmt>
<editionStmt>
<edition xml:id="n645891">Editio Princeps</edition>
<editor xml:id="n15472">Cognome, Nome del curatore</editor>
<sponsor xml:id="n206">SISMEL</sponsor>
</editionStmt>
<publicationStmt>
<publisher xml:id="n10536">SISMEL. Edizioni del Galluzzo</publisher>
<pubPlace xml:id="n70">Firenze</pubPlace>
<date>2018</date>
</publicationStmt>
<sourceDesc>
<listWit ana="descendants of α">
<witness xml:id="n99001" ana="A" style="blue">
<msDesc>
<msIdentifier>
<msName>Firenze, Biblioteca Medicea Laurenziana, Plut. 12.34</msName>
</msIdentifier>
</msDesc>
</witness>
</listWit>
<listBibl>
<bibl xml:id="n7001">Riferimento bibliografico</bibl>
</listBibl>
</sourceDesc>
</fileDesc>
<encodingDesc>
<p>Criteri di codifica e di trascrizione adottati.</p>
</encodingDesc>
</teiHeader>
<text>
<body>
<div>
<head>Incipit</head>
<p>
<app>
<lem wit="#n99001">lezione a testo</lem>
<rdg wit="#n99002">variante</rdg>
</app>
</p>
</div>
</body>
</text>
</TEI> Alcuni punti su cui lo schema è severo:
<publicationStmt> contiene
esattamente publisher,
pubPlace,
date in quest'ordine, con i valori
fissi SISMEL. Edizioni del Galluzzo, Firenze e un
anno di quattro cifre.
<editionStmt> contiene
edition, uno o più
editor (ciascuno con
xml:id) e
sponsor, il cui contenuto deve
essere SISMEL.
<term> indica il genere e va
dentro <author>, non
direttamente in <titleStmt>.
Accetta solo i valori del vocabolario controllato (Hagiographia,
Carmina, Historia, Sermo…): l'elenco completo è nell'ODD.
<sourceDesc> richiede
esattamente un <listWit> al
primo livello: ogni altro testimone, comprese le famiglie e i
testimoni extra-stemmatici, va annidato dentro quello. I
<listWit> possono annidarsi
per rappresentare le famiglie stemmatiche, e
@ana ne descrive la relazione
(ad esempio descendants of α).
xml:id di autori, testimoni,
curatori e voci bibliografiche corrispondono agli identificativi
Mirabile: sono ciò che collega la scheda TEI al resto della banca
dati. Se non si conosce l'identificativo di un'entità, lo si chiede
alla redazione anziché inventarlo.
xml:lang e
xml:space sono stati rimossi
globalmente dallo schema e non vanno usati.
Per refusi, errori di codifica o problemi di visualizzazione in un testo già pubblicato è sufficiente scrivere a redazione@mirabileweb.it indicando l'URL della scheda. Per malfunzionamenti della piattaforma si scrive al supporto tecnico.