Note al DTD dei documenti di NormeInRete (NIR)
Fabio Vitali, Università di Bologna & IAT/CNR e Fabrizio Megale,
Camera dei Deputati
Release del 16 luglio 2001
Questo documento è composto dalle seguenti sezioni:
- Introduzione
- Definizione di namespace per NormeInRete
- I file nirloose.dtd e nirstrict.dtd
- Il file globali.dtd
- Il file testo.dtd
- Il file norme.dtd
- Sintassi dei valori di alcuni attributi rilevanti
- Il file meta.dtd
- Criteri d'uso del DTD
- Sulle disposizioni nel DTD di NormeInRete
1 Introduzione
I DTD di NormeInRete definiscono alcuni tipi di documento a carattere normativo.
Per ogni tipo di documento (legge ordinaria, legge costituzionale, decreto-legge,ecc.)
sono specificati un DTD descrittivo, particolarmente flessibile, che si adegua
alle strutture dei documenti normativi creati fino ad oggi, ed uno prescrittivo,
più rigido, che verifica l'adesione dei vari documenti alle regole di
"buona scrittura" dei documenti normativi. Le differenze tra i due DTD (da qui
in poi chiamati loose e strict) sono poche e parametrizzate: gli elementi sono
gli stessi e hanno sostanzialmente le stesse regole di validità, ma il
DTD strict impone la verifica di alcune regole supplementari che nel DTD loose
sono assenti. Da questo si deduce fra l'altro che tutti i documenti validi secondo
il DTD strict sono anche validi secondo il DTD loose. In pratica, si utilizzerà
il primo DTD in condizioni di normazione, o legal drafting, ossia per
la creazione di nuove norme, mentre si ricorrerà al secondo per la descrizione
della situazione esistente, e ovunque le regole esposte nel DTD strict siano
considerate troppo restrittive. A parte queste differenze, tuttavia, non esistono
variazioni tra i due DTD e la descrizione seguente ignorerà ove non necessario
l'esistenza di due classi diverse di documenti.
Il DTD di NormeInRete si compone di sette moduli di DTD in senso stretto,
più altri sette di caratteri speciali:
- nirstrict.dtd: definizioni specifiche per documenti NIR con sintassi strict
- nirloose.dtd: definizioni specifiche per documenti NIR con sintassi loose
- globali.dtd: elementi ed attributi generici e condivisi da tutti i moduli
- norme.dtd: elementi specifici per parti normative strutturate
- testo.dtd: elementi specifici per parti testuali e non strutturate
- meta.dtd: elementi specifici per la descrizione di meta-informazioni
- proprietario.dtd: elementi specifici all'applicazione, esterni allo standard
NIR
- ISOlat1.pen: "ISO 8879-1986//ENTITIES Added Latin 1//EN//XML"
- ISOlat2.pen: "ISO 8879:1986//ENTITIES Added Latin 2//EN//XML"
- ISOgrk3.pen: "ISO 8879:1986//ENTITIES Greek Symbols//EN//XML"
- ISOdia.pen: "ISO 8879:1986//ENTITIES Diacritical Marks//EN//XML"
- ISOnum.pen: "ISO 8879:1986//ENTITIES Numeric and Special Graphic//EN//XML"
- ISOpub.pen: "ISO 8879:1986//ENTITIES Publishing//EN//XML"
- ISOtech.pen: "ISO 8879:1986//ENTITIES General Technical//EN//XML"
Questi DTD descrivono i seguenti tipi di documento: legge ordinaria, legge
costituzionale, decreto-legge, decreto legislativo, decreto ministeriale numerato,
regio decreto, dpr numerato, dpcm numerato, legge regionale, atto di authority,
dpr non numerato, decreto ministeriale non numerato, dpcm non numerato, articolato,
semi-articolato ed un tipo di documento senza una struttura predefinita, chiamato
genericamente documentoNIR. Ovviamente vi sono molte similarità nelle
strutture di questi documenti, tant'è vero che, sebbene con nomi diversi,
esistono di fatto solo due classi di documenti normativi:
- il documento articolato completo
- il documento semi-articolato
In tutti i casi la dichiarazione di tipo è simile, richiamando sempre e solo uno dei due moduli nirloose.dtd o nirstrict.dtd, a seconda del tipo di verifiche che si vogliono effettuare. Ad esempio, per marcare una legge ordinaria si dovrà preparare il documento come segue:
<?xml version='1.0' ?>
<!DOCTYPE NIR SYSTEM "nirloose.dtd">
<NIR><leggeordinaria> ... </leggeordinaria></NIR>
mentre un dpr non numerato si preparerà come segue:
<?xml version='1.0' ?>
<!DOCTYPE NIR SYSTEM "nirstrict.dtd">
<NIR><dprNN> ... </dprNN></NIR>
ecc.
2 Definizioni di NameSpace per NormeInRete
Questo documento suppone l'esistenza di due NameSpace XML riservati agli
elementi dei documenti di Norme In Rete. La trasformazione di questo documento
in definizione normativa dei tipi di documenti usati per il progetto NIR ufficializzerebbe
e congelerebbe le label che identificano questi NameSpace, le quali sono per
il momento: nel caso dei documenti normativi, http://www.normeinrete.it/nir/1.0,
nel caso delle meta-informazioni, http://www.normeinrete.it/nir/disposizioni/1.0.
3 I file nirloose.dtd e nirstrict.dtd
I due documenti "nirloose.dtd" e "nirstrict.dtd" sono
estremamente simili e sono divisi in sezioni ben distinguibili. Dapprima vengono
definite delle entità che costituiscono le differenze tra il DTD loose
e quello strict, quindi vengono organizzate le inclusioni degli altri documenti
(sia i DTD che le entità carattere) ed infine vengono elencate le classi
di documenti definibili da questo gruppo di DTD.
3.1 Entità specifiche del documento strict (o loose)
Le differenze tra DTD si concentrano, al momento, nell'articolato. Di fatti
in questa sezione vengono definiti (in maniera diversa tra i due moduli) i
content model di articolato, libro, parte, titolo, capo, sezione, paragrafo,
articolo e comma.
3.2 Rigore nella gerarchia
Nel DTD strict il content model di questi elementi segue la Circolare 20
aprile 2001, n. 1.1.26/10888/9.92 "Regole e raccomandazioni per la formulazione
tecnica dei testi legislativi" (d'ora in poi denominata "Circolare").
Come stabilito nella Circolare, infatti, gli elementi strutturali sono, nell'ordine,
libro, parte, titolo, capo e articolo. Inoltre il capo può ulteriormente
essere diviso in sezioni. Le sezioni rompono dunque la simmetria dei contenimenti,
perché possono solo comparire dentro a capi. Questo viene reso nel DTD.
Il content model del DTD strict impone che un documento iniziante con elementi
di un dato livello gerarchico debba poi continuare con elementi dello stesso
livello. Viceversa, sebbene anche nel DTD loose questi elementi vengano presentati
nello stesso ordine, in qualsiasi punto può essere inserito qualunque
elemento della gerarchia, permettendo ad un documento normativo, ad esempio,
di iniziare con alcuni articoli e proseguire diviso in parti o titoli. Il DTD
loose permette inoltre l'inserimento di elementi contenitore non prevedibili,
utilizzando l'elemento generico "contenitore".
3.3 Elemento paragrafo
Nel DTD strict, non essendo previsto dalla Circolare, il livello gerarchico
'paragrafo' non esiste. Tuttavia, alcune norme, tra cui i codici civile e penale,
il codice di procedura civile e varie leggi (es. n. 87 del 1953 sulla Corte
costituzionale o n. 633 del 1941 sul diritto d'autore) presentano il livello
di paragrafo, compreso tra quello di sezione e quello di articolo. Il DTD loose,
dunque, prevede anche questo elemento e lo inserisce nella posizione corretta
della gerarchia.
3.4 Facoltatività di numero e rubrica
Nel DTD loose sia il numero che la rubrica di ogni elemento sono facoltativi,
mentre nel DTD strict il numero diventa obbligatorio, anche se la rubrica resta
facoltativa.
3.5 Elemento meta
Ad ogni livello della gerarchia è possibile (ma non obbligatorio)
inserire un elemento 'inlinemeta' dove registrare meta-informazioni sulla parte
così individuata, ivi compresi interventi redazionali, note ed altre
informazioni rilevanti. Sebbene non vi siano differenze tra DTD strict e loose,
questa nota è stata inserita qui per ovvie ragioni di opportunità.
3.6 Entità esterne: caratteri e DTD accessori
In questa sezione (identica nei due moduli) vengono definiti e inclusi gli
altri moduli che costituiscono il DTD completo: ISOlat1.pen, ISOlat2.pen,
ISOgrk3.pen, ISOdia.pen, ISOnum.pen, ISOpub.pen, ISOtech.pen, globali.dtd,
norme.dtd, testo.dtd, table.dtd e meta.dtd.
3.7 Definizione degli elementi tipo-documento possibili
In questa sezione, identica nei due moduli, vengono definiti gli elementi
tipo-documento (ovvero le classi di documenti) definibili con questi DTD, e
la relativa lista di attributi. Le effettive descrizioni dei content model e
degli attributi (attraverso apposite entità) sono in norme.dtd ed in
global.dtd.
I DTD di NormeInrete definiscono dunque i seguenti tipi di documenti: legge
ordinaria, legge costituzionale, decreto-legge, decreto legislativo, decreto
ministeriale numerato, regio decreto, dpr numerato, dpcm numerato, legge regionale,
atto di authority, dpr non numerato, decreto ministeriale non numerato, dpcm
non numerato, articolato, semi-articolato ed un tipo di documento senza una
struttura predefinita, chiamato genericamente documentoNIR.
L'elemento radice è l'elemento NIR, che deve essere usato per ogni
tipo di documento. Al suo interno è possibile scegliere uno dei possibili
tipi di documento. Ogni elemento di tipo-documento ha assegnato uno dei due
content model possibili per i documenti NIR: docarticolato e semi-articolato
(in cui tutti gli elementi dell'articolato sono facoltativi ma possibili, e
oltre agli elementi dell'articolato si possono trovare elementi testuali arbitrari,
come blocchi di testo non strutturati gerarchicamente o gerarchie non standard).
Tutti gli elementi condividono i blocchi di attributi definiti 'globalireq'
e 'namespace'. Come meglio descritto nella sezione dedicata al modulo globali.dtd,
dove questi blocchi di attributi sono effettivamente posti, il blocco 'globalireq'
contiene gli attributi comuni alla maggior parte degli elementi del DTD (come
stile, lingua e vigenza) più un ID obbligatorio ed univoco utile per
la corretta identificazione dell'elemento. Il blocco 'namespace', invece, contiene
le definizioni di namespace XML necessarie per la corretta attribuzione degli
elementi e degli attributi presenti nei documenti NIR.
La maggior parte dei tipi di elementi radice descrivono ovviamente i documenti
con il nome corrispondente. Tuttavia, sono anche definiti tre tipi di documento
dal nome generico: 'DocArticolato', 'SemiArticolato' e 'DocumentoNIR'. Questi
servono per descrivere in maniera appropriata documenti che non rientrano
in una delle categorie descritte, e che possono o meno avere strutture riconducibili
a quelle dei documenti normativi. E' ovviamente possibile (e anzi doveroso)
estendere la lista delle classi di documenti descritti da questo DTD ed includere
quei documenti che sono e saranno di notevole importanza nella nostra legislazione.
Tuttavia esisteranno inevitabilmente classi di documenti la cui presenza nel
nostro ordinamento è del tutto episodica e per le quali non vale la
pena estendere esplicitamente il DTD. Gli elementi generici succitati permetteranno
di descrivere e strutturare correttamente anche tali documenti. L'attributo
nome, come meglio spiegato nella sezione dedicata al modulo globali.dtd, permette
di qualificare in modo appropriato queste classi senza creare un nuovo elemento
ad hoc.
L'elemento radice è l'elemento NIR. Esso contiene ogni tipo di documento
NIR, e attraverso l'attributo 'tipo' permette di specificare il tipo di intervento
redazionale a cui è stato sottoposto. A questo proposito, si veda la
sezione 4.2 Vigenza. I valori possibili sono 'originale', se il documento
è esattamente nella forma in cui è stato pubblicato dalla fonte
ufficiale del tipo di documento, vigente, se contiene tutte le modifiche dalla
versione originale ad uno specifico momento nel tempo, o multi-vigente, se
contiene, differenziate per tipo e data, le modifiche relative a due o più
documenti do modifica sul documento. In nessun caso si potrà usare
il valore 'originale' per documenti che sono stati rimaneggiati nel contenuto
nella fase di redazione del documento stesso.
4 Il file globali.dtd
Il modulo globali.dtd contiene la definizione di entità usate in tutti
i documenti. Tre sono gli scopi principali di questo modulo: definire attributi
e blocchi di attributi comuni a molti elementi, definire content model condivisi
da molti elementi, e definire elementi generici che possano, dopo opportuna
denominazione, essere usati per tutti gli scopi strutturali che al momento non
sono prevedibili.
4.1 Entità: attributi comuni agli elementi del DTD
In questa sezione si definiscono attributi singoli e gruppi di attributi.
NAMESPACE - In questo gruppo si definiscono i tre namespace usati dagli
elementi del DTD NormeInRete (meta-informazioni a parte): il NameSpace proprio
diNormeInRete (a proposito del quale si veda sotto), il NameSpace di XLink (per
gli attributi con caratteristiche ipertestuali dei documenti NIR) e il NameSpace
di HTML 4 per gli attributi di stile, lingua e classe utilizzati per gli stili
CSS. Questi attributi debbono essere presenti negli elementi radice che li
utilizzano.
Inoltre si fornisce in questa maniera un prefisso definitivo agli elementi
dei vari NameSpace, aumentando notevolmente la chiarezza e soprattutto
permettendo ad elementi di NameSpace diversi di essere valutati e validati
attraverso l'uso di DTD. Nel modulo meta.dtd è definito un ulteriore
NameSpace relativo agli elementi di
analisi delle disposizioni dei documenti normativi.
LINK - Al fine di rendere immediatamente il DTD NormeInRete compatibile con il futuro standard XLink, la definizione degli attributi con caratteristiche ipertestuali avviene usando la forma più semplice degli XLink, ossia attraverso l'uso di un NameSpace apposito, un attributo xlink:type con valore fissato a simple, e la destinazione del link con l'attributo xlink:href.
NOME - Come chiarito più avanti, nella sezione dedicata agli elementi generici del modulo testo.dtd, l'attributo "nome" viene usato per dare un nome significativo a parti dei documenti che, in mancanza di elementi specifici, vengono descritti con un elemento generico.
CSS - In questo gruppo si definiscono tre attributi, due dei quali direttamente
ereditati da HTML. Per questa ragione si è assegnato loro un NameSpace
proprio, appunto quello di HTML 4.0. Il primo e più semplice è
l'attributo xml:lang, previsto nella specifica XML e che qui diventa predefinito,
che permette di specificare la lingua in cui viene espresso un elemento del
documento. I valori possibili sono i codici di due lettere di [RFC1766] ("Tags
for the Identification of Languages", H. Alvestrand, March 1995, http://www.ietf.org/rfc/rfc1766.txt).
Per coerenza, si suppone che il valore dell'attributo css:lang venga ereditato
da tutti gli elementi contenuti nell'elemento che lo definisce.
Gli attributi h:style e h:class servono per associare stili CSS ad elementi
del documento NIR. Lo standard CSS ("Cascading Style Sheets, level 2", B. Bos,
H. W. Lie, C. Lilley, and I. Jacobs, 12 May 1998,
http://www.w3.org/TR/1998/REC-CSS2-19980512)
permette di definire semantiche di presentazione di buon livello e facilmente
utilizzabili sia in stampa che su video. In generale si suppone che gli elementi
dei documenti NIR abbiano una semantica di presentazione standard, che permetta
di porre in evidenza, ad esempio, titoli e numeri di parti e sezioni, ecc. Tuttavia,
può capitare che a volte alcune parti del testo richiedano una semantica
di presentazione ad hoc (ad esempio, il legislatore può aver messo alcune
parole in grassetto). Quando dunque alcune parti dei documenti debbono avere
una presentazione particolare, e tuttavia mancano elementi specifici che rendano
il significato soggiacente a questa presentazione particolare, sarà opportuno
associare a tali parti uno stile CSS specifico. Lo stile può essere posto
internamente o esternamente. Nel primo caso, nella sintassi CSS, esso verrà
posto come valore dell'attributo h:style. Nel secondo caso l'attributo id verrà
usato per identificare il singolo elemento a cui associare lo stile in questione,
mentre l'attributo h:class verrà adoperato per esprimere l'appartenenza
dell'elemento ad una classe cui lo stile CSS viene associato.
IDREQ e IDFAC - Molti elementi del DTD di NormeInRete ammettono un attributo
che identifichi in maniera univoca l'elemento. In tutti i casi di elementi fondamentali
per la struttura, l'id è obbligatorio. In altri casi, è data possibilità
al redattore di specificare o meno un identificativo.
GLOBALIREQ e GLOBALIFAC - Queste sono le entità che vengono effettivamente utilizzati nella definizione degli attributi degli elementi del DTD di NormeInRete. Essi comprendono gli attributi di vigenza, gli attributi di stile e l'attributo di identificazione (rispettivamente obbligatorio e facoltativo).
4.2 La vigenza dei documenti
Gli attributi dell'entità vigenza permettono di controllare e specificare
la gestione del consolidamento e dell'esclusione selettiva di parti del documento
normativo per ragioni redazionali.
Secondo l'attributo 'tipo' dell'elemento radice, infatti, i documenti NIR
possono essere o 'originali' (il loro contenuto rispecchia con la maggior
fedeltà possibile il documento pubblicato nella forma originale dalla
fonte ufficiale del tipo di documenti) oppure soggetti a lavoro redazionale
per aggiornarne o filtrarne il contenuto. Solo nel primo caso è possibile
usare il valore 'originale' per l'attributo 'tipo' dell'elemento NIR.
Tra i documenti con intervento redazionale, possiamo distinguere i documenti
in 'vigenti' e 'multi-vigenti'. Un documento 'vigente' è un documento
normativo in cui la redazione, in base a tecniche e analisi esterne alla competenza
di questo gruppo di lavoro, ha realizzato un documento consolidato ad una
data specificata, ma non ha indicato nel documento quali cambiamenti sono
stati effettuati dal testo originale a quello presentato. Il documento permette
dunque di stabilire il contenuto ad un'unica data di vigenza, che viene indicata
nell'urn del documento stesso.
Un documento 'multi-vigente', invece, presenta indicazioni di quali modifiche
siano state effettuate ed in quale data. La specifica avviene in due fasi:
nella prima fase, all'interno del blocco delle meta-informazioni si indicano
le date rilevanti per ogni cambiamento di contenuto del documento, attraverso
l'elemento 'vigenza'; ad ogni vigenza è associato un identificativo
univoco ed una data di inizio rilevanza. Nella seconda fase, si associano
le varie parti di testo modificato alle vigenze così specificate. Per
ogni elemento che è stato modificato, si indicheranno allora, dove
appropriato, la data di inizio vigenza, di fine vigenza, di inizio sospensione,
di fine sospensione. La mancanza di inizio sospensione o di fine vigenza indicano
che il testo è vigente alla data ultima di vigenza del documento (ad
esempio, ad oggi). La mancanza di inizio vigenza indica che il testo proviene
direttamente dalla prima vigenza indicata (vale a dire, dal testo originale
della norma).
Attraverso l'attributo 'status' verrà giustificata l'assenza di una
parte del testo per ragioni redazionali (ad esempio, di filtro o di irrilevanza
per il lettore). Se la redazione decide dunque di non riportare nel documento
una parte del testo, gli elementi relativi dovranno dunque essere comunque
usati, ma attraverso l'attributo facoltativo 'status' (con il valore 'abrogato'
o 'omissis' a seconda della situazione).
In tutti i casi, gli attributi status, inizio, fine, iniziosospensione e
finesospensione possono essere associati a qualunque parte del documento,
dai singoli commi ad intere partizioni. Nel caso si debbano indicare valori
di vigenza di singole parole o di brevi frasi all'interno di una partizione,
si suggerisce di circondare il testo da un elemento 'span' con gli attributi
di vigenza appropriati.
4.3 Entità: content model comuni ai vari tipi di elementi
Gli elementi del DTD di NIR appartengono a cinque livelli di strutturazione diversa, corrispondenti ad altrettanti diversi tipi di content model:
ELEMENTI VUOTI. Sono elementi privi di contenuto testuale. Rappresentano
"posizioni" all'interno del documento, oggetti non ulteriormente suddivisibili.
In sintassi XML sono corrispondenti al solo tag di apertura. Ad esempio, '<br/>'
ELEMENTI INLINE. Detti anche PhraseLevel nella nomenclatura HTML, sono elementi
che stanno all'interno dei blocchi (i.e. paragrafi) e identificano parti di
testo aventi una giustificazione semantica, strutturale o tipografica del testo.
Ad esempio '<i>' per il corsivo oppure
'<rif>' per un riferimento ad un testo
normativo.
ELEMENTI DI BLOCCO. Detti anche ParaLevel nella nomenclatura HTML, sono elementi
che separano il testo in blocchi a sequenza verticale, come i paragrafi. Ad
esempio '<p>'
ELEMENTI CONTENITORE. Sono elementi che definiscono al loro interno elementi
speciali, o che modificano il senso ed il comportamento di elementi definiti
anche altrove. Ad esempio '<table>'
o '<articolato>'.
ELEMENTI SPECIALI. Sono elementi utilizzabili solo all'interno di determinati
contesti (alcuni elementi contenitore) che li giustificano e li permettono.
Ad esempio '<input>' è definito
solo all'interno di '<form>', e '<corpo>'
è definito solo all'interno di '<comma>'.
Poiché si vuole ottenere di specificare in maniera semplice il content
model degli elementi del DTD, sono stati create alcune entità, che permettono
di raccogliere insieme gli elementi vuoti, gli elementi inline, gli elementi
blocco e gli elementi contenitore definiti nei vari moduli da cui è composto
il DTD: elementi generici e testuali (in testo.dtd), ed elementi specifici delle
norme (in norme.dtd).
Queste entità vengono poi raccolte in entità globali usate per
i content model effettivi degli elementi:
- el_inline comprende #PCDATA (cioè testo) più gli elementi
inline e gli elementi vuoti, ovvero tutti gli elementi che possono apparire
all'interno di un blocco;
- inline rappresenta una selezione ripetibile di elementi el_inline, ovvero
il content model standard per gli elementi inline e blocchi; Si sono separate
le due definizioni perché, stante le limitazioni nell'uso di PCDATA
nei content model, elementi che definiscano ulteriori elementi al loro interno
(come form e mod) possono comunque essere definiti tranquillamente.
- blocchi rappresenta una selezione ripetibile di elementi blocco, ovvero
il content model standard di elementi contenitore.
- strutture rappresenta una selezione ripetibile di elementi strutturalmente
rilevanti.
- PhraseLevel e ParaLevel sono la nomenclatura standard HTML per, rispettivamente,
inline e blocchi, e sono definite perché usate in nella tabella.
4.4 Nota del redattore
L'elemento ndr è stato inserito per permettere alla redazione di inserire
un riferimento ad una nota (il cui testo è posto nelle meta-informazioni).
L'attributo 'num' specifica l'attributo id della nota, mentre l'attributo 'value'
specifica il valore da visualizzare del riferimento.
4.5 Elementi generici
Gli elementi generici sono introdotti per descrivere parti di testo che,
pur non essendo considerate nel DTD, hanno comunque una rilevanza particolare.
L'attributo nome permette di assegnare un nome significativo a questi elementi
senza modificare il DTD. Si può addirittura intendere che qualunque elemento
dotato di un nome specifico possa essere considerato equivalente al corrispondente
elemento generico con un apposito valore per l'attributo 'nome'. Così,
ad esempio, le dizioni <leggeordinaria>
e <articolato nome='leggeordinaria'>
debbono essere considerate equivalenti. Analogamente <articolato>
è equivalente di <gerarchia nome='articolato'>
e <titolo> è equivalente di
<l3 nome='titolo'>, ecc.
L'uso di elementi generici è particolarmente utile nel caso si voglia
attribuire ad una parte del documento un attributo specifico anche se essa non
corrisponde a nessuna suddivisione ufficiale della gerarchia. Ad esempio, se
il legislatore ha posto in grassetto alcune parole all'interno del corpo di
un comma, sarà possibile circondare queste parole con l'elemento <inlinea
css:style='font-weight:bold;'> (o in modo equivalente con l'elemento
<span css:style='font-weight:bold;'>
o ancora più semplicemente con l'elemento <b>).
Nel caso di un testo consolidato, due parole abrogate a partire dal giorno 5/10/98
possono essere circondate da un elemento <inlinea
fine="5/10/98">.
Gli elementi generici sono allora: vuoto, inlinea, blocco, e contenitore.
Inoltre è definita una gerarchia aperta di elementi a nove livelli, che
permette di specificare strutture gerarchiche arbitrarie o appartenenti a normative
non standard o con eccezioni rispetto alla strutturazione della Circolare. Tutti
gli elementi della gerarchia hanno un numero ed un titolo facoltativo, e richiedono
un id obbligatorio. Similmente si può trattare degli elementi DocArticolato,
Semiarticolato e DocumentoNIR, elementi generici usati per descrivere interi
documenti dei rispettivi tipi.
5 Il file testo.dtd
Nel modulo testo.dtd trovano posto le definizioni degli elementi con semantica
non legata alla normazione, ma comunque utili nella strutturazione dei documenti
di NormeInRete.In esso si ridefiniscono, con opportune variazioni, elementi
tratti da HTML.
5.1 Elementi con content model EMPTY
- br : ritorno a capo obbligato, senza divisione in blocchi
- hr : linea orizzontale, separatore di sezioni
- input: elemento di inserimento dati all'interno di un form (vedi oltre)
5.2 Elementi di tipo inline
- b : elementi visualizzati in grassetto
- i : elementi visualizzati in corsivo
- u : elementi visualizzati sottolineati
- sub : elementi visualizzati come pedice
- sup : elementi visualizzati come apice
- span : elemento generico HTML di tipo inline
- a : link ipertestuale generico, senza connotazioni legate alle norme
5.3 Elementi di tipo blocco e form
- p : paragrafo standard
- div : elemento generico HTML di tipo blocco
- form : elemento che introduce un modulo completabile dall'utente
5.4 Specifica di tabelle
Per la specifica di tabelle con un linguaggio di markup esistono due modelli
di particolare diffusione, la cui conoscenza è sufficientemente diffusa
da garantire l'esistenza di appositi strumenti di creazione e visualizzazione
per le tabelle così descritte:
- Il modello di tabelle CALS (identificativo pubblico "-//USA-DOD//DTD Table
Model 951010//EN") usato all'interno dell'iniziativa CALS del Ministero della
Difesa USA,
- Il modello di tabelle HTML4, descritto in un'apposita sezione del DTD di
HTML versione 4.0 (identificativo pubblico "-//W3C//DTD HTML 4.0 Strict//EN"),
come proposto dal World Wide Web Comittee.
Entrambi sono modelli SGML di tabelle, di cui non esiste, al momento, una versione
XML ufficiale. Tuttavia di entrambi esistono versioni XML ufficiose sufficientemente
dettagliate e rispettose da poterne permettere un uso affidabile. Per ragioni
di semplicità, diffusione e facilità di uso, si è scelto
il modello HTML4. Il modulo qui fornito è una versione semplificata ma
fedele del modulo tabelle del DTD di HTML espresso in SGML.
6 Il file norme.dtd
Nel modulo norme.dtd vengono raccolti tutti gli elementi con semantica connessa agli atti normativi. Questo modulo, che è il cuore del DTD di NormeInRete, permette di descrivere testi di natura normativa identificandone appropriatamente gli elementi costituenti.
Due sono state le scelte programmatiche di fondo: l'adesione alla Circolare
"Regole e raccomandazioni per la formulazione tecnica dei testi legislativi"
e la sussidiarietà dei vincoli del DTD alle scelte del legislatore. Quest'ultimo
aspetto in particolare significa adeguare i permessi del DTD a ciò che
è stato effettivamente inserito nei documenti reali, senza imporre vincoli
- per quanto ragionevoli - su documenti che ormai non possono più essere
modificati. Ad esempio, ciò significa non imporre una numerazione automatica
delle parti gerarchiche, bensì accettare qualunque valore (anche eventualmente
sbagliato) sia stato ufficialmente pubblicato.
Ovviamente sarebbe stato possibile, nel DTD prescrittivo, fornire una regola di numerazione automatica, ma questo avrebbe reso i documenti scritti secondo questo DTD incoerenti con quelli scritti secondo il DTD descrittivo, più flessibile, e ciò avrebbe creato una distinzione inaccettabile ed ingiustificata tra i documenti marcati secondo i due DTD.
Il modulo norme.dtd introduce due categorie di elementi ben distinti ed analogamente importanti: gli elementi della struttura dell'atto normativo, e gli elementi inline con semantica rilevante ai fini della normazione.
La prima categoria comprende quegli elementi che costituiscono l'ossatura di un documento normativo, come l'intestazione, la conclusione, e tutti gli elementi dell'articolato. Nella seconda, invece, comprendiamo gli elementi volti ad identificare quelle parti del testo normativo che hanno un significato ritenuto semanticamente rilevante indipendentemente dalla loro posizione all'interno del documento normativo (ad esempio in rubriche, corpi dei commi, annessi, ecc.). Tra questi comprendiamo, ad esempio, i riferimenti, le specificazioni di atti, soggetti, enti, date e luoghi.
6.1 Entità: attributi comuni
Sono qui poste tre definizioni di attributi usati in vari elementi del modulo.
Essi sono 'norm', per esprimere un valore normalizzato di data e/o ora, 'luogo'
per fornire un eventuale identificativo a luoghi geografici di particolare
rilevanza, e 'codice' per fornire un codice identificativo ad organizzazioni
o ruoli citati nel testo. In tutti e tre i casi i valori (descritti dettagliatamente
nel seguito) servono per fornire un valore standardizzato utilizzabile in
maniera sicura in ricerche, collezioni e confronti.
6.2 Strutture fondamentali dei documenti normativi
In questa sezione vengono descritti i due tipi di documenti con struttura
di atto normativo previsti dal DTD di NormeInRete: l'articolato e il semi-articolato.
Il tipo articolato si applica a quei documenti che hanno la struttura di documento
normativo esatta, con intestazione, formula di approvazione, articolato, formula
finale, conclusione, eventuali annessi. Con il tipo semi-articolato si intendono
descrivere quei documenti che, come i precedenti, hanno una sovrastruttura di
documento normativo (con intestazione, forse una formula di approvazione, forse
un preambolo, ecc.), ma che o sono privi di una sezione di articolato propriamente
detta, oppure hanno una sezione di articolato sufficientemente diversa da quelle
descritte negli altri tipi, così da dover essere descritta in maniera
specifica e senza vincoli preimposti. In questo caso, tutti gli elementi di
tipo normativo sono possibili ma facoltativi, per comprendere il maggior numero
possibile di varietà.
6.3 Elementi dell'intestazione
Seguendo la Circolare, ogni documento normativo possiede un'intestazione
composta da un tipo di documento, una data, un numero d'ordine, ed un titolo.
6.4 Formula iniziale e finale
In conformità al principio di sussidiarietà espresso in precedenza,
le formule di rito iniziali e finali, sebbene obbligate e ripetute tra tutti
i documenti di uno stesso tipo, sono comunque previste ed appositamente marcate.
Esse sono divise in blocchi (ad esempio elementi "p" o "div").
6.5 Elementi dell'articolato
Come già descritto in precedenza, l'articolato si compone di libro,
parte, titolo, capo, sezione, paragrafo ed articolo secondo i content model
specificati dei DTD strict e loose. Ogni elemento della gerarchia ha o può
avere ulteriormente una rubrica testuale ed un numero d'ordine; inoltre esso
ha i soliti attributi ed in particolare un identificatore obbligato.
6.6 Elementi sotto l'articolo
Un articolo è composto di commi, che contengono o un corpo di testo
o un elenco di elementi lettera. Il DTD prevede due tipi di elenchi, quelli
composti di elementi lettera (el) e quelli composti di elementi numero (en).
Questi tipi sono annidabili, iniziando, dentro al comma, con elementi lettera,
e proseguendo con elementi numero. Ogni elenco è introdotto da un elemento
alinea obbligatorio e seguito da un elemento coda facoltativo. Gli elementi
di un elenco sono dotati degli attributi soliti, ma l'identificatore è
facoltativo.
6.7 Decorazioni
Articoli e commi presentano un'ulteriore caratteristica, chiamata genericamente
decorazione. E' noto infatti che, soprattutto nei testi unici, esiste l'abitudine
di specificare nei pressi della rubrica l'origine normativa dell'articolo stesso.
La recente disciplina dei tesi unici misti, poi, prevede la specificazione del
valore legislativo, regolamentativo, o misto, dell'articolo o del comma. All'interno
della decorazione (facoltativa) vanno poste informazioni aggiuntive rispetto
alla rubrica dell'articolo o al corpo del comma, ed il rango (legislativo o
regolamentativo) dell'articolo o del comma medesimo.
6.8 Elementi della conclusione
Una conclusione è composta da un elemento dataeluogo e dalle sottoscrizioni.
L'elemento dataeluogo comprende quella parte della conclusione in cui si specificano
la data e il luogo in cui viene firmato il documento. Gli attributi norm e
luogo permettono di fornire valori normalizzati di queste informazioni.
Il blocco di sottoscrizioni è composto da zero o più sottoscriventi e da un elemento visto. Per sottoscrizioni e visto, piuttosto che fornire la tipologia dei possibili sottoscriventi, inevitabilmente sterminata, si è preferito permettere blocchi di testo arbitrari, con il sottinteso che tutti i nomi e tutti i ruoli vengano adeguatamente inseriti all'interno di appositi elementi 'soggetto'.
6.9 Elementi degli annessi
Un documento normativo può contenere una tipologia molto ampia di
annessi, da semplici elementi testuali, a complesse tabelle, ad interi documenti
strutturati. Inoltre deve essere possibile decidere liberamente di porre il
corpo dell'annesso all'interno del documento ospite, oppure esternamente,
in un documento autonomo.
Dunque la parte degli annessi è divisa in un uno o più elementi annesso, eventualmente preceduti da un elenco di annessi, a sua volta composto di blocchi di testo. Ogni elemento annesso è o un riferimento esterno ad un documento autonomo, oppure un documento completo tra quelli precedentemente definiti.
L'annesso, in qualunque forma venga posto rispetto al documento ospite, può
comunque essere preceduto da una testata che fornisce gli elementi di giunzione
tra i due documenti. Questi sono la denominazione dell'annesso (il modo in
cui il documento ospite introduce l'annesso, ad esempio "Allegato A"), il
titolo proprio dell'annesso, ed il pre-annesso. Tutti questi elementi possono
contenere al loro interno blocchi di testo e sono facoltativi.
La scelta di usare un riferimento esterno o di includere l'annesso nel corpo
del documento principale deve restare assolutamente equivalente per i fini
della marcatura NIR, ed essere unicamente giustificate da ragioni di comodità.
Fanno eccezione a questa regola quegli annessi che per loro natura non possono
essere codificati in XML, come immagini, schemi tecnici, ecc., che debbono
necessariamente essere posti all'esterno del documento, e quegli annessi che,
avendo valore di documento autonomo, debbono possedere un proprio URN e ricevere
riferimenti espliciti in maniera autonoma dal documente annettente. Altrimenti,
la scelta deve essere guidata da criteri di comodità al redattore e
ragionevolezza. In linea generale, può essere suggerito di sicuramente
includere nel documento quegli annessi che per dimensioni o rilevanza non
meritano lo status di documento autonomo (brevi testi, semplici tabelle, ecc.),
e porre esternamente invece gli annessi più lunghi e strutturati.
6.9 Elementi inline e speciali
Il DTD di NormeInRete definisce alcuni elementi inline come dotati di un
preciso significato la cui marcatura è utile per applicazioni sofisticate
di ricerca o rielaborazione dei documenti stessi. Questi elementi possono
apparire ovunque nel testo di un documento normativo, e anche indipendentemente
dalla presenza di un articolato o di altre sovra-strutture imposte.
Gli elementi inline di questo tipo sono:
- rif: un riferimento esplicito ad un altro testo. L'attributo xlink:href
permette di fornire l'identificativo del documento riferito. Si usi a questo
proposito l'URN più specifico.
- mrif: un riferimento esplicito multiplo (ad esempio: "come
precisato dagli artt. 5, 7 e 26 della legge XY"). In questo caso gli
elementi rif precisati al suo interno sono da intendersi appartenenti al riferimento
multiplo. Nel caso in questione:
come precisato dagli <mrif>artt. <rif xlink:href="urn:XYZ#art5">5</rif>,
<rif xlink:href="urn:XYZ#art7">7</rif> e <rif xlink:href="urn:XYZ#art26">26</rif>
della legge XY</mrif>.
- mod, virgolette : un riferimento modificativo complesso. Esso conterrà
testo qualunque, uno o più riferimenti, zero o più riferimenti
a testo esistente o da sostituire (dette anche novelle). L'elemento "virgolette"
serve per identificare parti di testo, solitamente tra virgolette, che identificano
le parti di testo esistente o le novelle da sostituirvi. L'attributo "tipo"
permette di determinare se le virgolette contengono una struttura o alcune
parole. Ad esempio,
<mod id="m1">al <rif xlink:href="urn:">comma 4</rif>, le parole da
"<virgolette id="m1e1">entro 30 gg</virgolette>" fino a
"<virgolette id="m1e2">numero 419</virgolette>" sono sostituite dalle seguenti:
"<virgolette id="m1n1">blah blah blah</virgolette>".</mod>
<mod>
All'<rif href="URN:XYZ#art48com9">articolo 48 del decreto legislativo n.
22, il comma 9</rif> è sostituito dal seguente:
<virgolette tipo="struttura">
<comma id="???">
<num>9.</num>
<testo>A decorrere da...</testo>
</comma>
</virgolette>
</mod>
- def: la definizione di un termine usato frequentemente nel documento. Questo
permette la creazione di link automatici alla definizione di un termine particolarmente
rilevante all'interno di un documento normativo. Identificare queste parti
di documento è facoltativo.
- atto, soggetto, ente: elementi da usare per esplicitare atti, soggetti ed
enti citati nel documento. L'attributo codice permette di specificare in maniera
non ambigua l'atto, il soggetto o l'ente identificato facendo riferimento
ad una lista ufficiale di valori leciti. Identificare queste parti di documento
è facoltativo.
- data, luogo: elementi usati per esplicitare quelle parti del testo normativo
che fanno riferimento ad una data o ad un luogo preciso. L'attributo norm
serve per esprimere un valore normalizzato (e quindi utilizzabile in maniera
sicura per ricerche e confronti) della data o del luogo in questione. Inoltre
l'elemento data va usato per date presenti in senso proprio nel documento,
e non laddove la data sia elemento specificante un riferimento ad altro documento.
Identificare queste parti di documento è facoltativo.
7 Sintassi dei valori di alcuni attributi rilevanti
In questa sezione si forniscono le sintassi imposte ai valori di alcuni attributi rilevanti per il DTD di NormeInRete. Sebbene la specifica di queste sintassi non sia posta all'interno del DTD, essa ha comunque valore prescrittivo per queste classe di documenti. Tale DTD impone valori agli attributi xlink:href, id, norm e codice.
7.1 xlink:href
Con l'attributo xlink:href si specificano le destinazioni di riferimenti
ed altri elementi di natura ipertestuale. Il valore di un attributo xlink:href
deve essere necessariamente un URI. Se la destinazione è un documento
di natura normativa, si richiede l'uso di un URN, secondo la sintassi definita
dal gruppo di lavoro degli URN di NormeInRete.
La indicazione di locazioni interne ad un documento di natura normativa
passa attraverso l'uso della sintassi "hash" degli URI, aggiungendo all'URN
del documento il carattere "#" e una specificazione della locazione interna.
Questa specificazione può essere o un XPointer che individua la locazione
prescelta, oppure, preferibilmente, l'identificativo se esistente dell'elemento
desiderato. Questo identificativo è posto come valore dell'attributo
'id', specificato di seguito.
7.2 id
Nell'attributo id si fornisce un valore che identifica univocamente l'elemento
all'interno del documento normativo. Questo permette l'immediata identificazione
dell'elemento per link ipertestuali, riferimenti di meta-informazioni, ecc.
Un id è composto da uno o più blocchi di lunghezza variabile,
ciascuno ad individuare con dettaglio crescente il percorso identificativo dell'elemento,
separati dal carattere '-'. Ogni blocco è composto da una sigla di tre
lettere minuscole (il tipo di elemento), un numero (il numero d'ordine dell'elemento),
ed eventualmente la specificazione aggiuntiva (come bis, ter, ecc.).
La sigla è scelta ove possibile dal seguente elenco:
|
tipo di componente
|
nome elemento
|
sigla
|
|
libro
|
libro
|
lib
|
|
parte
|
parte
|
prt
|
|
titolo
|
titolo
|
tit
|
|
capo
|
capo
|
cap
|
|
sezione
|
sezione
|
sez
|
|
paragrafo
|
paragrafo
|
prg
|
|
articolo
|
articolo
|
art
|
|
comma
|
comma
|
com
|
|
lettera
|
el
|
let
|
|
numero
|
en
|
num
|
|
annesso
|
annesso
|
ann
|
|
preambolo
|
preambolo
|
pre
|
|
riferimenti
|
rif, mod, a
|
rif
|
|
elementi vuoti
|
br, hr, input
|
inl
|
|
elementi inline
|
b,i,u,sub,...
|
inl
|
|
elementi blocco
|
p, div, form, ...
|
blc
|
|
elementi generici
|
vuoto, inlinea, gerarchia, l1, ..., l9
|
le prime tre lettere dell'attributo 'nome' se non
uguali ad altra sigla.
|
Il numero è ove possibile il numero d'ordine esplicito dell'elemento,
e altrimenti il numero d'ordine assoluto dell'elemento all'interno degli elementi
con la stessa sigla (ad esempio, il terzo elemento inline del documento: "inl3").
Il numero va posto in cifre.
La specificazione aggiuntiva va posta solo quando il numero d'ordine dell'elemento
gerarchico presenta elementi aggiuntivi (bis, ter, ecc.).
Ad esempio:
|
elemento
|
valore dell'attributo 'id'
|
|
articolo 12
|
art12
|
|
terza sezione del capo IV del II libro
|
lib2-cap4-sez3
|
|
numero 5 della lettera c dell'articolo 142 ter
|
art142ter-let3-num5
|
|
terzo paragrafo del primo annesso
|
ann1-blc3
|
Nel caso in cui la numerazione aggiuntiva sia posta prima del numero 1, si
prevede una numerazione preceduta dallo zero: 01, 02, ecc. In questo caso la
parte numerica sarà analogamente composta da tanti zeri quantie sono
quelli posti nel documento.
Ad esempio: articolo 02 art02
Nel caso di situazioni non descritte dalla presente discussione, sarà
possibile creare un identificativo arbitrario, purché abbia le seguenti
caratteristiche: che sia unico all'interno del documento; che sia composto di
uno o più blocchi gerarchici separati da '-'; che segua ove possibile
lo schema lll9999agg: tre lettere, un numero in cifre, una stringa eventuale
aggiuntiva.
7.3 norm
L'attributo norm fornisce un valore normalizzato agli elementi di tipo
data (data, dataeluogo, dataDoc). Poiché vi può essere grande
variabilità nel modo di esprimere una data in un documento normativo,
il valore normalizzato fornisce una sintassi stabile e prevedibile utilizzabile
nelle ricerche ed in ogni applicazione in cui la conoscenza esatta della data
sia importante. Il valore normalizzato dovrà essere una stringa di
8 caratteri (AAAAMMGG), in cui, da sinistra a destra, 4 caratteri indicano
l'anno, 2 il mese e 2 il giorno. Se nel testo viene anche precisata un'ora
o un momento preciso, questi dovranno essere specificati con una stringa aggiuntiva
di lunghezza variabile (hHHMM[SS[FFF]] dove la parentesi quadra indica facoltatività),
in cui da sinistra a destra sono poste una lettera "h" minuscola, due cifre
per l'ora, due cifre per i minuti, due cifre facoltative per i secondi e tre
cifre ulteriormente facoltative per la eventuale frazione di secondo.
Ad esempio:
<data norm="19991012h0000">alla mezzanotte del 12 ottobre 1999</data>
7.4 codice
L'attributo codice fornisce un valore normalizzato ad atti, soggetti ed
enti citati nei documenti normativi. Poiché vi può essere grande
variabilità nel modo in cui essi sono chiamati, l'attributo codice
fornisce un meccanismo stabile e prevedibile da usare in ricerche ed altre
applicazioni. I valori assegnabili all'attributo codice vanno specificati
in apposite tabelle, che associno in maniera stabile e prevedibile un codice
arbitrario ad ogni atto, soggetto od ente ritenuto interessante. L'estensione
di queste tabelle, per quanto atto importante e ineluttabile, è ovviamente
al di fuori della competenza di questo gruppo di lavoro.
8 Il file meta.dtd
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, e si prevede di lasciare ampio spazio ad ulteriori approfondimenti.
Va notato 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 le posizioni standard
nel documento dove inserire tali meta-informazioni, nel caso si fosse deciso
di porle internamente.
Il DTD di NormeInRete individua due tipi di metainformazioni: le meta-informazioni
di documento (elemento 'meta') e le metainformazioni locali all'interno del
documento (elemento 'inlinemeta'). Nell'elemento 'meta' vanno poste le metainformazioni
di descrizione e quelle relative ai lavori preparatori, oltre alle meta-informazioni
redazionali, proprietarie e delle disposizioni.
Il DTD di NormeInRete permette di descrivere le seguenti 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.
9 Usare il DTD NormeInRete
9.1 Criteri di uso del DTD NormeInRete
Il DTD NormeInRete è organizzato affinché sia facile descrivere
ed organizzare in maniera completa alcuni tipi di testi normativi, elencati
all'inizio di questo documento. Si è inoltre cercato di rendere possibile
la formalizzazione di un numero molto più ampio di documenti, di struttura
simile ai testi normativi previsti, o che possano essere trovati come allegati
a testi normativi previsti.
Per questo motivo, il DTD prevede un numero molto ampio di strutture ed elementi,
molti dei quali non necessariamente comuni nei testi normativi. Scopo di questa
sezione è fornire una prima guida d'uso al DTD, descrivendo alcuni casi
comuni e la loro conversione in XML con questo DTD, e fornendo un elenco di
requisiti minimi di compatibilità per i documenti così convertiti.
Come per molti tipi di documenti XML, sono di particolare importanza due criteri
d'uso:
- Minimalità e specificità del markup: E' opportuno inserire
solo i tag strettamente necessari, ed in ogni caso è opportuno scegliere
sempre quelli più specifici al ruolo ed alla posizione del testo che
deve essere descritto. Il DTD offre in molti casi varie soluzioni diverse
per descrivere lo stesso tipo di testo. In generale, tuttavia, esiste una
soluzione più specifica delle altre, che per questo motivo è
più appropriata e preferibile.
- Indipendenza ed irrilevanza della presentazione. La trasformazione
in XML di testi a stampa comporta sempre la tentazione di trasferire sul documento
elettronico le scelte tipografiche fatte nel documento a stampa, come grassetti,
corsivi, capoversi, etc. In effetti il DTD NIR offre la possibilità
di descrivere in maniera abbastanza sofisticata le caratteristiche presentazionali
dei documenti. Tuttavia è opportuno ricordarsi che in generale le caratteristiche
presentazionali di un frammento di documento normativo dipendono direttamente
dalla sua caratterizzazione semantica, e che verranno specificate in fase
di presentazione attraverso fogli di stile. Per questo motivo, le caratteristiche
presentazionali delle parti di un documento NIR vanno precisate solo quando
sono eccezioni rispetto alla normalità, ovvero quando appaiono sui
documenti a stampa in maniera asistematica e non giustificata dalla caratterizzazione
semantica delle parti stesse.
Ad esempio, nella maggior parte dei testi normativi il corpo di un comma è
composto di un solo capoverso. In questi casi, dunque, la caratterizzazione
semantica (essere un comma) sussume e contiene la caratterizzazione tipografica
(essere un capoverso) rendendo inutile ed eccessivo l'uso di tag presentazionali
(ad esempio, il tag 'p' o il tag 'div') intorno al corpo di un comma. Analogamente,
le rubriche degli articoli sono tipicamente visualizzate in grassetto o in corsivo
in quanto rubriche di articoli. Anche quila caratterizzazione tipografica
è già contenuta nella caratterizzazione semantica, e non deve
essere riportata nel documento.
Sarà invece opportuno tag tipografici nelle (rare) situazioni in cui
la caratterizzazione tipografica eccede o è indipendente da quella semantica,
ad esempio quando il corpo di un comma è diviso in capoversi, oppure
quando, per specifica scelta del legislatore, appare all'interno di un testo
una parola evidenziata in grassetto o in corsivo.
Il DTD NIR introduce alcuni elementi cosiddetti "generici", come
"vuoto", "inlinea", "blocco", "gerarchia",
"contenitore", e "documentoNIR". Essi forniscono, nelle
intenzioni del working group, quelle caratteristiche di flessibilità
che permettono al DTD di poter essere usato anche per documenti normativi non
esplicitamente elencati e dalle caratteristiche strutturali più o meno
difformi da quelle previste esplicitamente. Gli elementi generici sono infatti
elementi destinati ad essere usati per situazioni la cui semantica è
ben precisa ma non esplicitamente prevista dal DTD. Un altro criterio d'uso
importante, allora, è il seguente:
- Differenza tra tag presentazionali e tag generici. I tag presentazionali
(come "div", "p", "b", "i", ecc.)
hanno lo scopo di fornire un'indicazione tipografica non giustificata strutturalmente
o semanticamente. Viceversa i tag generici hanno lo scopo di fornire un'indicazione
strutturale o semantica non altrimenti presente nel DTD.
Come già detto, sono candidati naturali per i tag presentazionali casi
come capoversi multipli all'interno del corpo di un comma, o parole evidenziate
(in grassetto o in corsivo) all'interno di un testo solitamente non evidenziato.
Viceversa, sono candidati naturali per i tag generici strutture gerarchiche
esplicitamente denominate e diverse da quelle previste (libro, parte, titolo,
capo, sezione, paragrafo, articolo, comma) oppure tipi di documenti non esplicitamente
previsti dal DTD (come Legge, Decreto Legge, Dpr, ecc.). In quest'ultimo caso,
l'attributo "nome" permette di specificare il nome caratterizzante
semanticamente la parte di documento.
9.2 Strutture fondamentali e opzionali dei documenti
Il DTD NormeInRete fornisce un elenco particolarmente ricco di caratteristiche
identificabili sul documento normativo: caratteristiche strutturali, caratteristiche
semantiche, caratteristiche tipografiche, metainformazioni, ecc.
La organizzazione di una norma secondo i dettami più specifici e dettagliati
del DTD, dunque, richiede molto tempo ed una notevole competenza tecnica non
solo informatica, ma anche e soprattutto giuridica. Per questo motivo si è
reputato opportuno indicare un livello minimale di conformità nei documenti
XML, ed un livello ottimale. Affinché un documento possa essere considerato
corretto secondo i criteri di Norme In Rete, dunque, esso deve quantomeno soddisfare
il livello minimale di conformità.
Sono dunque caratteristiche da identificare necessariamente per un documento
minimamente conforme le seguenti:
- L'intestazione in tutte le sue parti
- L'articolato nella sua specificità massima, inclusi i commi, gli
alinea, le lettere ed i numeri dove appropriato
- La distinzione quantomeno in paragrafi delle formule iniziali e finali
- La corretta elencazione e il giusto collegamento agli annessi
- le meta-informazioni della sezione "descrittori"
- l'identificazione di tutti i riferimenti ad altri documenti normativi
- la specifica degli ID per tutti gli elementi in cui esso è richiesto
e per tutti gli elementi generici aventi un ruolo strutturale.
Caratteristiche che costituiscono invece un livello di conformità ottimale
sono le seguenti:
- la specifica degli ID per tutti gli elementi in cui essi sono previsti,
anche se facoltativi
- l'identificazione di tutte le parti semanticamente rilevanti descritte dai
tag "def", "atto", "soggetto", "ente",
"data", "luogo", "mod"
- Le meta-informazioni della sezione "lavoripreparatori"
Le metainformazioni complicano ulteriormente il panorama della conformità:
in generale le metainformazioni, a parte quelle descrittive, rappresentano un
contributo redazionale o dunque non ufficiale di caratterizzazione e descrizione
del documento. Per questo motivo, esse non solo non sono obbligatorie, dipendoendo
dalla volontà e capacità della redazione, ma in linea di principio
non possono nemmeno essere considerate univoche, né ufficiali. Il DTD
di NormeInRete, dunque, suggerisce che le informazioni delle sezioni "redazionale",
"proproietario" e "disposizioni" vengano fornite indipendentemente,
e possibilmente in una risorsa esterna al documento stesso, con ciò permettendo
la coesistenza di blocchi di meta-informazioni siffatte di tipo e provenienza
diverse.
10 Sulle disposizioni nel DTD di NormeInRete
Nello studio di fattibilità del progetto "Accesso alle norme in rete" (pubblicato nel n. 1/2000 della rivista "Informatica e diritto") si pone in luce una distinzione fondamentale tra struttura formale (un articolato organizzato in libri, parti, titoli, capi, sezioni, articoli, commi, con precise regole di contenimento e forma) e struttura funzionale (una serie di "disposizioni", ovvero atti linguistici indipendenti che costituiscono il contenuto profondo e descrivono le funzioni regolative del testo).
Se è facile e per lo più non ambiguo identificare la struttura formale del documento normativo, più difficile è analizzare l'aspetto funzionale o semantico delle sue varie parti. Difatti, mentre per l'analisi formale del documento ricorriamo a pochi, semplici ed evidenti concetti come la gerarchia, la sequenza, la rubricazione ecc., per l'analisi del precetto normativo dobbiamo inevitabilmente affrontare un lungo ed incerto percorso sul significato normativo del documento.
L'esperienza dimostra che rari sono i dubbi nel marcare correttamente libri, parti, titoli, capi, sezioni, articoli e commi, o le loro rubriche. Non solo: queste parti possono essere identificate a prescindere dal contenuto del documento, il più delle volte attraverso una mera analisi tipografica, che non richiede una comprensione approfondita del significato normativo. Più incerto può essere invece stabilire se un comma prescriva, ad esempio, un obbligo, un diritto o un dovere. Per far ciò, è ovviamente sempre necessario leggere e analizzare il testo, formulando se del caso interpretazioni sofisticate del medesimo.
Inoltre, accade talvolta che si produca una sovrapponibilità dai confini imprecisi fra la struttura formale e quella funzionale del documento normativo. L'effetto più evidente di questa incompatibilità di fondo tra le due strutturazioni è che diventa rischioso e complesso farle coesistere sullo stesso testo.
E' inevitabile quindi che una delle due debba sovrastare l'altra, rimanendo
associata "stabilmente" al testo del documento. La non ambiguità della
struttura formale ci fa scegliere quest'ultima rispetto alla struttura funzionale,
portando al DTD già visto, che è impostato sull'articolato e le
partizioni gerarchiche esteriori.
Il problema di associare la struttura funzionale al testo va a questo punto affrontato con cautela. Vari sono i problemi, alcuni semplicemente sintattici, altri più sottilmente organizzativi ed interpretativi.
In primo luogo, è necessario trovare una soluzione che sia corretta secondo la sintassi XML. Come già detto, due gerarchie indipendenti e sovrapposte sullo stesso documento sono del tutto inaccettabili dalla sintassi di questo linguaggio, oltre a rendere il markup estremamente complesso da interpretare.
In secondo luogo la difficoltà e l'ambiguità intrinseche nella classificazione delle disposizioni di un testo normativo suggeriscono di scindere la realizzazione della strutturazione formale da quella della strutturazione funzionale: la prima è un'operazione meramente di compilazione, seppur accurata, realizzabile da addetti con un minimo di competenza tecnica, mentre la seconda richiede personale di formazione giuridica avanzata.
Una prima ipotesi di lavoro affrontata dal gruppo "Norme In Rete" è stata quella di creare un attributo 'disp' associabile ad ogni partizione elementare del documento, in modo da avere forme del tipo:
<comma id="a5c3" disp="obbligo">
<num>3</num>
<testo>E' fatto obbligo
</testo>
</comma>
Purtroppo, anche se la buona tecnica legislativa suggerisce di organizzare in maniera coerente le due strutture, funzionale e formale, in modo da avere un'equivalenza tra disposizioni normative e partizioni elementari del testo (si tratti di articoli, commi o lettere), le eccezioni sono frequenti, e spesso non dovute soltanto ad una tecnica legislativa imperfetta, bensì anche a non superabili ragioni di merito. Si aggiunga che molte disposizioni hanno una struttura complessa, difficilmente riducibile ad una mera etichetta. Ciò significa che il valore dell'attributo 'disp' potrebbe cogliere solo parzialmente tale complessità della disposizione, e molto rimarrebbe ancora da interpretare da parte del lettore.
Ancora: inserire un attributo specificante la disposizione impone che il testo venga analizzato funzionalmente nel medesimo momento in cui viene considerato formalmente, sebbene queste due operazioni richiedano, come si è visto, professionalità diverse. Infine, poiché difficilmente si potrà avere univocità di analisi, l'inserimento di queste informazioni direttamente nel testo comporterebbe l'esistenza di un'analisi funzionale "ufficiale".
Alla luce di tutti questi motivi, per descrivere le disposizioni di un testo normativo è stata preferita una soluzione diversa, basata sulle meta-informazioni. Invece di attributi approssimativamente associati alle partizioni formali del documento, si è deciso di inserire uno o più elenchi di elementi analitici in un elemento 'metainformazioni' apposito, facendoli riferire alle parti del testo che essi descrivono.
Questa soluzione permette di scindere completamente l'aspetto formale dall'aspetto
funzionale. Dato che ogni parte del testo è indirizzabile, le si possono
associare disposizioni senza nessun vincolo. A queste disposizioni è
possibile dare una struttura interna, il che permette di esprimere proprietà
ben più complesse di un'etichetta. Inoltre, possono esserci molteplici
voci per la stessa partizione di testo, permettendo la convivenza di interpretazioni
contrastanti dello stesso frammento. Ancora, è possibile inserire queste
interpretazioni in un secondo tempo rispetto all'analisi formale del testo,
poiché quest'ultimo non viene modificato dall'analisi funzionale. Da
ultimo, una disposizione particolarmente complessa che copra parti diverse e
non contigue del documento può essere descritta con tutta facilità.
E' opportuno aggiungere che, sotto il profilo dell'organizzazione del lavoro,
la suddivisione in due diverse fasi permette di soddisfare un'esigenza di tempestività,
in quanto rende possibile l'immissione immediata dei documenti nei loro profili
formali, in attesa di inserire quelli, più impegnativi, di tipo funzionale
Poiché a questo punto la disposizione è posta al di fuori del testo del documento, diventa importante individuare esattamente il o i capoversi a cui questo tipo di informazione fa riferimento. La identificabilità dei singoli elementi del testo, ed eventualmente un uso accorto di un XPointer, permettono di generare un'espressione che indichi inequivocabilmente le parti in questione. E' dunque necessario che all'interno dell'elemento analitico vengano specificate una o più locazioni nel testo. Ciò viene ottenuto attraverso l'uso dell'elemento 'loc', che conterrà come attributo l' id di un elemento del testo. Ad esempio, usando una sintassi semplice e intuitiva, esprimeremo come segue il fatto che nei capoversi 5 e 9 del preambolo sono riportati due richiami al parere dell'Autorità per le telecomunicazioni:
<parere>
<loc xlink:href="#pre0000a-blc0005a" />
<loc xlink:href="#pre0000a-blc0009a" />
<fonte nome="Autorità per le telecomunicazioni" />
</parere>
Questo semplice accorgimento ci permette di identificare anche locazioni multiple e non contigue nel testo, e di usarle per la medesima meta-informazione.
Si possono ipotizzare due categorie distinte e indipendenti di elementi funzionali
esprimibili in un documento normativo. Da una parte le disposizioni propriamente
dette, tipizzate nei lavori di Carlo Biagioli, che analizzano il contenuto normativo
di un documento. Dall'altra, elementi analitici per lo più appartenenti
al preambolo di quei tipi di documenti che lo contemplano, e che descrivono
formulaicamente una serie di informazioni di contesto del documento (chiamati
per il momento "elementi caratterizzanti").
Biagioli fornisce una nomenclatura delle disposizioni, dividendole in disposizioni della parte introduttiva (finalità del testo, ambito di applicazione, istituzione di enti, definizioni di termini), disposizioni direttive generiche (competenza, potere, diritto, dovere), disposizioni direttive specifiche (obbligo, divieto, permesso, procedura), disposizioni rimediali (sanzione, riparazione), disposizioni finali (finanziarie, transitorie) e disposizioni modificative (eccezione, abrogazione, sostituzione, integrazione, vigenza, proroga, reviviscenza, sospensione, retroattività, ultrattività, estensione, deroga).
Fra gli elementi caratterizzanti prescelti, che non esauriscono ovviamente
tutti quelli teoricamente possibili, troviamo invece i criteri di necessità
ed urgenza, la delega, i pareri, le proposte, i considerata, i visto, le norme
di attuazione di direttiva europea e le specificazioni di copertura finanziaria.
Ciascuno di questi elementi possiede una struttura interna che descrive nei
dettagli il tipo di elemento descritto.