Standard del progetto NIR
Introduzione ai DTD del gruppo NormeInRete
Fabio Vitali, Università di Bologna
& IAT/CNR
1 Introduzione
In questo documento si illustrano le caratteristiche salienti della struttura
formale dei documenti normativi generata dal gruppo di lavoro DTD del gruppo
NormeInRete. Viene introdotto il linguaggio di strutturazione XML, il concetto
di DTD e le sue evoluzioni, e viene descritto a grandi linee il contenuto del
documento DTD generato. Per informazioni più precise si consiglia di
leggere il documento "
Note sul DTD di NormeInRete",
in cui vengono descritte nel dettaglio tutte le caratteristiche rilevanti del
DTD NormeInRete
2 Che cos'è XML
XML (Extensible Markup Language) è il più recente e promettente tra i linguaggi di markup, una tecnologia per arricchire documenti di testo di informazioni utili per la stampa, la catalogazione, la strutturazione. XML trae le sue origini da SGML, Standard Generalized Markup Language (standard ISO 8879 del 1988), e da HTML, il linguaggio di markup dei documenti del Web. Sebbene sia uno standard non proprietario (è proposto dal W3C, il comitato che sviluppa i linguaggi ed i protocolli tecnici del World Wide Web), è promosso e supportato dai principali produttori di software, da Microsoft a IBM, a Oracle, ad Adobe.
Caratteristica importante di XML è la possibilità, come già in SGML, di specificare non già l'aspetto tipografico di un documento, ma anche e soprattutto le strutture caratteristiche della categoria di cui il documento fa parte. Tramite XML, cioè, è possibile descrivere classi arbitrarie di documenti elencandone gli elementi costitutivi e i vincoli strutturali.
3 La sintassi dei linguaggi di markup
Caratteristiche costitutive di un linguaggio di markup sono gli elementi, gli attributi e le entità.
3.1 Elementi
XML, come altri linguaggi di markup derivati a vario titolo da SGML, attribuisce caratteristiche strutturali o descrittive ai vari elementi di un documento circondandoli con "tag", etichette testuali individuate da parentesi angolari, come segue:
<nota>Qui va il testo di una nota</nota>
Nell'esempio in questione si dirà che l'elemento "nota" è
composto da un tag d'apertura ("<nota>"),
un contenuto ("Qui va il testo di una nota")
ed un tag di chiusura ("</nota>").
Gli elementi possono anche contenere altri elementi (si dice che si annidano
l'un dentro l'altro) oppure possono anche essere vuoti, ovvero privi
di contenuto (nel qual caso hanno una sintassi particolare):
<nota>Qui va il <enfasi>testo</enfasi> di
una nota</nota>
Elementi annidati: l'elemento "enfasi" è contenuto nell'elemento
"nota"
<new/>
Elemento privo di contenuto: l'elemento "new" è vuoto,
ovvero è composto dal solo tag d'apertura.
Da notare la chiusura differente del tag.
3.2 Attributi
Sono dati aggiuntivi al contenuto, che permettono di arricchire l'elemento di informazioni ulteriori, utili per scopi come la navigazione ipertestuale, la formattazione tipografica, la ricerca testuale. Sono posti necessariamente dentro al tag di apertura, e hanno una sintassi del tipo
nome = "valore"
Ad esempio, il seguente elemento definisce in HTML un link ipertestuali, cliccando
il quale il browser ci conduce alla pagina "http://www.w3c.org".
Questa informazione, che non appare sul browser, viene da esso usata per stabilire
quale nuovo documento caricare:
<a href="http://www.w3c.org/">Sito del W3C</a>
3.3 Entità
I linguaggi di markup permettono di definire elementi testuali ripetibili specificandone nel testo soltanto il nome. Il visualizzatore di documenti provvede automaticamente a sostituirli con i caratteri corrispondenti. Le entità vengono perlopiù usate per specificare caratteri "pericolosi", ovvero quei caratteri che per motivi storici e di incompatibilità vengono codificati diversamente su computer di marche e sistemi operativi diversi. Ad esempio le lettere accentate, di notevole importanza nella lingua italiana, vengono codificate in maniera diversa a seconda dei sistemi operativi.
Nei linguaggi di markup derivati da SGML un'entità viene introdotta
dal carattere "&" e conclusa dal carattere ";". Ad esempio, in HTML, l'entità
"à" produrrà sempre una
a con l'accento grave ('à') indipendentemente dal sistema su cui il documento
verrà visualizzato.
4 Cos'è un DTD
Un DTD (Document Type Definition) è una parte facoltativa di un documento
XML. Attraverso un DTD è possibile specificare vincoli di correttezza
strutturale su una classe di documenti XML. Questo significa che è possibile
specificare tutti e soli gli elementi leciti all'interno di una classe di documenti,
e alcune regole obbligate di composizione tra gli elementi. L'operazione di
validazione permette di confrontare un documento XML con le sue regole, e di
identificare e segnalare eventuali difformità. I DTD sono strumenti utili
per l'omogeneizzazione strutturale di documenti dello stesso tipo: attraverso
un DTD, infatti, è possibile verificare facilmente se documenti di un
dato tipo hanno o meno strutture analoghe.
Da notare tuttavia che i DTD permettono di fornire regole di correttezza solo per la struttura degli elementi, non per i loro contenuti. Ad esempio, è possibile imporre che il documento "lettera" contenga necessariamente un elemento "mittente", un elemento "destinatario" o un elemento "data", ma non che il contenuto dell'elemento "data" sia effettivamente una vera data. Per ovviare a questo limite, uno standard aggiuntivo a XML, chiamato XML-Schema, permetterà di specificare vincoli sia strutturali che di contenuto. Tuttavia a tutt'oggi (ottobre 2000) questo standard (anch'esso del W3C) è ancora in fase di elaborazione e pochi strumenti software lo supportano. Il DTD rimane dunque lo strumento, sebbene limitato, ad oggi più sicuro per esprimere vincoli di correttezza su documenti XML.
5 I documenti normativi ed XML
I documenti normativi sono redatti in modo da organizzare al meglio la materia
su cui si esprime la norma, e per poter identificare rapidamente, attraverso
elementi formulaici chiamati riferimenti, sottoparti del testo di particolare
importanza. La buona redazione formale di un documento normativo riflette secoli
di tradizione legislativa, richiede professionalità specifiche, e contribuisce
in maniera determinante alla leggibilità ed in ultima analisi all'applicabilità
della norma stessa.
Recentemente si sono moltiplicate le iniziative per formalizzare in documenti
dettagliati le regole di buona normazione distillate nei secoli. Ne è
un esempio il cosiddetto Manuale Rescigno ("Regole e suggerimenti per la redazione
di testi normativi", 1991), come pure la circolare del Presidente del Senato
della Repubblica, del Presidente della camera dei Deputati e della Presidenza
del Consiglio dei ministri del 24 febbraio 1986, pubblicata in Gazzetta ufficiale
n. 123 del 29/5/1986, s.o. 40), o, ultimissima, la Circolare 20 aprile 2001,
n. 1.1.26/10888/9.92 "Regole e raccomandazioni per la formulazione tecnica dei
testi legislativi". In questi documenti vengono fornite regole di ortografia,
lessico, sintassi, stile e struttura per la stesura dei testi normativi.
Anche precedentemente a questi documenti, tuttavia, esisteva una prassi di normazione più o meno dettagliata e rigida, che ha permesso una sostanziale uniformità strutturale ai documenti di vaore normativo pubblicati in Italia.
Per quel che riguarda la struttura, i documenti normativi (tra cui leggi, decreti,
regolamenti, ecc.) sono candidati ideali per essere descritti come documenti
XML:
-
hanno una struttura evidente e sistematica: la divisione
dell'articolato in libri, parti, titoli, sezioni, articoli e commi è
aspetto palese e inevitabile di questi documenti.
-
prevedono elementi obbligati e facoltativi: mentre la
numerazione degli articoli può essere considerata obbligatoria, molti
documenti del passato non numerano i commi; a volte, ma non sempre, può
essere necessaria una coda testuale non numerata dopo una lista di voci
numerate, ecc.
-
impongono vincoli di contenimento: è assurdo (in
termini XML è non valido) pensare ad un documento normativo in cui
i comma contengono articoli, o in cui la rubrica di un articolo sia divisa
in commi. Un documento che proponga contenimenti di questo tipo deve essere
senz'altro rifiutato in quanto non aderente a regole basilari di organizzazione
dei documenti normativi.
Per questo motivo il gruppo di lavoro NormeInRete ha deciso di realizzare
un gruppo di DTD per esprimere le regole di struttura dei documenti normativi,
includendo sia quelli generati secondo le regole particolarmente rigide della
Circolare 20 aprile 2001, sia quelli realizzati secondo la prassi, meno precisa
e meno formalizzata, in voga prima di questi documenti.
6 Una visione d'insieme del DTD di NormeInRete
6.1 DTD strict e DTD loose
L'aspetto più rilevante del DTD di NormeInRete è il supporto,
separato ma coerente, di documenti che seguono le direttive della Circolare
e di documenti che non lo fanno. La Circolare esprime vincoli rigidi per quel
che riguarda l'ordine e la denominazione delle sottoparti di un articolato,
o la numerazione di articoli e commi, che nei testi precedenti non sempre sono
soddisfacibili. Questo ha portato il gruppo a realizzare due DTD, detti 'strict'
(rigido) e 'loose' (flessibile), per poter descrivere entrambi i tipi di documento.
Caratteristica importante di questi DTD è la loro compatibilità,
ovvero il fatto che il DTD strict non descrive strutture diverse dal DTD loose,
ma impone alcuni ulteriori vincoli di accettabilità. Questo fa sì,
ad esempio, che tutti i documenti che sono corretti secondo il DTD strict lo
siano anche secondo il DTD loose, e che tutti i documenti precedenti alla Circolare
ma che autonomamente hanno adottato i vincoli formalizzati in questo documento
sono compatibili con il DTD strict.
6.2 Le tre categorie di documenti
Fatte salve le differenze specifiche, i due DTD, 'strict' e 'loose', descrivono
identicamente i documenti normativi dividendoli in due grandi categorie: gli
articolati (ad esempio, la legge ordinaria o il decreto legge) e i semi-articolati,
ovvero tutti quei documenti o che non sono facilmente riconducibili ad articolati
tradizionali o che, pur potendo presentare strutture gerarchiche molto evidenti
e simili all'articolato delle leggi, presentano un numero sufficiente di differenze
da rendere improponibile l'uso di modelli di documenti più normalizzati.
La speranza del gruppo di lavoro è che con l'articolato si possano esprimere
tutti i documenti creati secondo le regole o la prassi standard di normazione,
e con il semi-articolato di possano esprimere tutti gli altri tipi di documento,
indipendentemente dalla loro regolarità.
Il DTD descrive dunque dodici tipi di documenti e li attribuisce ad una di queste tre categorie: legge ordinaria, legge costituzionale e legge regionale nella categoria articolato senza preambolo, decreto legge, decreto legislativo, decreto ministeriale, decreto del Presidente della Repubblica e decreto del Presidente del Consiglio dei Ministri nella categoria documento articolato con preambolo, atto di authority, decreto ministeriale non numerato, decreto del Presidente della Repubblica non numerato e decreto del Presidente del Consiglio dei Ministri non numerato nella struttura semi-articolato. Inoltre esistono quattro nomi "generici" di documento che possono essere adattati a tutte le categorie di documenti non esplicitamente elencati.
6.3 Organizzazione del DTD
Il DTD di NormeInRete è organizzato in sei documenti principali ed altri
sette documenti accessori. I documenti accessori descrivono alcuni caratteri
speciali o pericolosi (caratteri che, come le lettere accentate, possono essere
rese diversamente su sistemi operativi diversi). I sei documenti principali,
invece, descrivono le strutture del DTD organizzandole come segue:
-
-
-
Definizioni generiche a tutti i DTD nel file
globali.dtd
-
Definizioni di strutture specificamente normative nel file
norme.dtd
-
Definizioni di strutture testuali, tabellari o modulari
nel file
testo.dtd
-
Definizioni di strutture per la gestione delle meta-informazioni
nel file
meta.dtd
Ovviamente, i file globali.dtd, norme.dtd, text.dtd e meta.dtd, oltre ai file accessori, sono usati in maniera identica nel DTD strict e DTD loose, e le uniche differenze sono concentrate nei due file nirstrict.dtd e nirloose.dtd.
6.4 Elementi normativi
La struttura normativa descritta in
norme.dtd
è composta da un'intestazione, un (eventuale) preambolo, un articolato,
una conclusione, e zero o più annessi. In più sono previste le
formule iniziali e finali del documento.
Di ogni elemento sono fornite ovviamente le caratteristiche e le strutture
interne più appropriate. Ad esempio, l'articolato si compone di libro,
parte, titolo, capo, sezione, paragrafo, articolo e comma secondo le regole
della Circolare 20 aprile 2001 e della prassi normativa.
I commi contengono o un corpo di testo o un elenco di elementi. Il DTD prevede
due tipi di elenchi, quelli composti di elementi lettera e quelli composti di
elementi numero, annidati l'uno dentro l'altro.
Gli annessi possono essere o brevi blocchi di testo, o tabelle, o addirittura
interi documenti. E' dunque possibile secondo il DTD fornire un elenco degli
annessi, e per ciascun annesso specificare una formula di giunzione al documento
ospitante (ad esempio, "Allegato 1") ed informazioni pre-annesso in forma
libera.
In questo modulo vengono anche descritti alcuni elementi speciali, utilizzabili
liberamente ovunque vi sia del testo (ad esempio, nel corpo di un comma).
Questi elementi speciali permettono di identificare parti che hanno un significato
preciso per i documenti normativi, come riferimenti, date, luoghi, atti,
enti e soggetti. Lo scopo di questi elementi è fornire un meccanismo
per normalizzare gli estremi dei riferimenti, o valori delle date, o i nomi
di luoghi, atti, enti e soggetti, senza interferire con il testo della norma
o restringere la libertà del legislatore nello scegliere le parole
del testo. L'ipotesi è che applicazioni sofisticate (di navigazione,
ricerca, ecc.) possano essere realizzate soltanto se esistono vincoli affidabili
nella sintassi utilizzata per i riferimenti, la descrizione di date, ecc.,
e che questo sia possibile fornendo al marcatore di documenti una sintassi
per descrivere con precisione i valori di riferimenti, date, luoghi, ecc.
che il legislatore ha scritto in assoluta libertà.
6.5 Elementi testuali, tabellari e modulari
Nel file
testo.dtd vengono definiti elementi testuali,
tabellari e modulari. Essi coprono due funzioni diverse. In primo luogo, la
possibilità di descrivere strutture particolari, ovvero tabelle e moduli,
inserite sia come annessi ai documenti normativi, sia all'interno dei documenti
stessi. In secondo luogo, la possibilità di descrivere strutture con
un valore più tipografico che semantico, come capoversi, grassetti, corsivi,
ecc.
La prima funzione ha applicabilità universale, poiché tabelle
e moduli vengono frequentemente inclusi nei testi normativi, indipendentemente
dalla loro natura. La seconda funzione, invece, è di notevole importanza
per quei tipi di testo (ad esempio, atti di authority) o quelle parti di
documento (ad esempio il preambolo) che non hanno una struttura rigorosa
e formalizzata, di cui può essere identificata una struttura vaga
e generica (ad esempio di capoversi) e di cui viene descritto soltanto l'aspetto
tipografico.
Infine può succedere che il legislatore, per nessuna identificabile
ragione semantica, decida di usare stili tipografici particolari a parti
di testo non altrimenti individuate. In questi casi si propone l'uso di
elementi ad hoc che riflettano la scelta tipografica adottata ignorando
qualunque interpretazione semantica.
Per queste categorie di elementi, il gruppo NormeInRete ha deciso di usare
nomi tratti da HTML, al fine di sfruttare conoscenze e software già
diffusi. Sono dunque definiti elementi come p, b, i, table, ecc., che chiunque
conosca HTML sa già come e per che scopo utilizzare. Tuttavia va
sottolineato che questi non sono elementi HTML: l'elenco degli elementi
forniti è molto limitato, l'elenco degli attributi utilizzabili è
molto più ristretto, e l'ambito d'uso è molto più controllato
che in HTML.
Infine va notato che è possibile assegnare a qualunque elemento del
documento, sia testuale che normativo, uno stile tipografico nella sintassi
dei
Cascading Style Sheet,
lo standard tipografico di maggior diffusione nel World Wide Web.
6.6 Meta-informazioni
Nel file
meta.dtd vengono descritte le tipologie
previste di metainformazioni associabili ai documenti ed alle parti di documento
descritte con il DTD di NormeInRete. In realtà le metainformazioni spalancano
infinite possibilità di valore aggiunto, di cui per il momento solo alcune
sono suggerite in questo documento, allo scopo di lasciare ampio spazio ad ulteriori
approfondimenti.
Va precisato che il DTD non suggerisce che le metainformazioni debbano essere poste all'interno del documento, né che debba esistere un unico blocco di metainformazioni per ogni documento. Esso fornisce una sintassi ed un'organizzazione delle meta-informazioni e, indipendentemente, indica alcune posizioni standard nel documento dove inserire tali meta-informazioni, nel caso si fosse deciso di porle internamente.
Il DTD di NormeInRete permette al momento di descrivere cinque tipologie di meta-informazioni:
- Descrittori: sono alcune metainformazioni fondamentali per descrivere
il documento in questione. Tra queste ricordiamo la pubblicazione ufficiale
del documento, l'urn a cui associare il documento, il o gli eventuali alias
(altre forme testuali con cui il documento è noto), le vigenze in caso
di documento con una multivigenza, eventuali relazioni con altri documenti
normativi, e una lista di parole chiave per descrivere il documento.
- lavori preparatori: in questa sezione è possibile includere,
a testo libero, informazioni e documenti connessi con la fase preparatoria
del testo
- proprietario: uno schema libero di meta-informazioni relative ad
un'applicazione proprietaria.
- redazionale: in questa sezione la redazione che si occupa di pubblicare
un documento ha la possibilità di inserire informazioni libere sulla
pubblicazione medesima
- disposizioni: in questa sezione si possono inserire disposizioni
caratterizzanti o analitiche per descrivere il contenuto normativo di un documento.
Per una giustificazione dell'utilità, ed una breve analisi delle caratteristiche
sintattiche delle disposizioni, si veda la sezione 10.
Ovviamente, le discussioni successive potranno proporre nuovi elementi nelle
categorie esistenti, o nuove categorie di metainformazioni. Il DTD dovrebbe
accomodare queste modifiche con poca fatica.
7 Conclusioni
Il DTD è accompagnato da un
documento testuale
che fornisce spiegazioni dettagliate sul contenuto del DTD. Inoltre nello stesso
documento vengono fornite alcune prescrizioni per aspetti del markup che non
sono esprimibili con la sintassi dei DTD. Ad esempio, per i valori dell'attributo
ID, che serve per fornire un indirizzo univoco ad ogni elemento indirizzabile
del documento normativo, viene fornita una sintassi obbligata. Analogamente
per date, luoghi, ecc.