Lo schema di Norme In rete
- architettura dei documenti di definizione
- elementi di struttura
- elementi semanticamente significativi
- Metadati
- metadati generali “oggettivi”
- ciclo di vita
- metadati “autoriali”
- metadati delle disposizioni
Introduzione
I DTD di NormeInRete definiscono alcuni tipi di documento a carattere normativo. Per ogni tipo di documento (ad esempio legge ordinaria, legge costituzionale, decreto-legge,ecc.) viene specificato sia uno schema descrittivo, particolarmente flessibile, che si adegua alle strutture dei documenti normativi creati fino ad oggi, sia uno prescrittivo, più rigido, che verifica l'adesione dei vari documenti alle regole di "buona scrittura" dei documenti normativi come specificato nella circolare 20 aprile 2001, n. 1.1.26/10888/9.92 "Regole e raccomandazioni per la formulazione tecnica dei testi legislativi". Ad essi si aggiunge un terzo DTD, che descrive solo le strutture più semplici, uniformi e frequenti, pensato per permetterne un rapido apprendimento ed un facile utilizzo.
Le differenze tra i tre schemi (da qui in poi chiamati rispettivamente flessibile, completo e base) sono poche e parametrizzate: gli elementi sono gli stessi e hanno sostanzialmente le stesse regole di validità, ma lo schema completo impone la verifica di alcune regole supplementari che nello schema flessibile sono assenti, mentre nello schema base manca del tutto il supporto per casi particolari o rari. Per costruzione, dunque, tutti i documenti validi secondo lo schema base o lo schema completo sono anche validi secondo lo schema flessibile.
In pratica, si utilizzerà lo schema base a scopo divulgativo, nell'apprendimento, e ogni volta che la struttura del documento sia particolarmente semplice e priva di complessità; si userà invece lo schema completo in condizioni di normazione, o legal drafting, ossia per la creazione di nuove norme su cui si vuole che la succitata circolare abbia effetto; infine, si ricorrerà allo schema flessibile per la descrizione di documenti che presentino una qualunque complessità o difformità dalle regole della circolare del 2001, e quindi ovunque le regole esposte nello schema completo siano considerate troppo restrittive.
A parte poche differenze comunque, non esistono variazioni tra gli schemi completo e flessibile e la descrizione seguente ignorerà ove non necessario l'esistenza di due classi diverse di documenti.
Architettura degli schemi
Lo schema di NormeInRete si compone di otto moduli di schema. Questi sono disponibili sia in formato XML Schema sia DTD, e sono sostanzialmente equivalenti in termini di vocabolario e regole di validità. A ciascuno dei nomi di file seguenti va aggiunto il prefisso ".dtd" per indicare lo schema in formato DTD, o ".xsd" per indicarlo in formato XML Schema.
- nirlight: definizione completa del DTD base.
- nirstrict: definizioni specifiche per documenti NIR con sintassi completa
- nirloose.dtd: definizioni specifiche per documenti NIR con sintassi flessibile
- globali.dtd: elementi ed attributi generici e condivisi dai moduli completo e flessibile
- norme.dtd: elementi specifici per parti normative strutturate condivisi dai moduli completo e flessibile
- testo.dtd: elementi specifici per parti testuali e non strutturate condivisi dai moduli completo e flessibile
- meta.dtd: elementi specifici per la descrizione di meta-informazioni condivisi dai moduli completo e flessibile
- proprietario.dtd: elementi specifici all'applicazione, esterni allo standard NIR condivisi dai moduli completo e flessibile
Sebbene l'uso di UTF-8 come codifica caratteri renda l'uso di entità carattere un'abitudine obsoleta e ingiustificata, Norme In Rete fornisce comunque sette file di entità per la gestione di caratteri speciali per ISO Latin 1:
- 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"
Gli schemi descrivono tipi di documento come 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 o nirstrict, 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 xmlns="http://www.normeinrete.it/nir/2.2">
<leggeordinaria>
...
</leggeordinaria>
</NIR>
mentre un dpr non numerato si preparerà come segue:
<?xml version='1.0' ?>
<!DOCTYPE NIR SYSTEM "nirstrict.dtd">
<NIR xmlns="http://www.normeinrete.it/nir/2.2">
<dprNN>
...
</dprNN>
</NIR>
Norme In Rete richieda una corretta qualificazione degli elementi XML dei documenti. A tal fine definisce due
NameSpace? riservati agli elementi dei documenti di Norme In Rete. L'uso della corretta dichiarazione di namespace XML permette ai software di comprendere la versione del linguaggio utilizzata e dunque di attivare le opportune procedure di utilizzo, visualizzazione, ecc.
Il namespace definito è, nel caso dei documenti normativi,
http://www.normeinrete.it/nir/2.2, mentre nel caso di meta-informazioni di tipo dispositivo, corrisponde a
http://www.normeinrete.it/nir/disposizioni/2.2.
Il file nirlight.dtd
Il modulo nirlight.dtd costituisce un'unità a se stante, che descrive nella sua interezza il modello semplificato di documenti NIR. Questo significa che, a parte i documenti delle entità carattere, non sono necessari documenti accessori per la marcatura dei documenti normativi con questo DTD.
Il DTD base rappresenta una radicale semplificazione del DTD flessibile, pensata soprattutto per agevolare e velocizzare le attività di marcatura nei casi privi di particolarità. La semplificazione avviene escludendo la maggior parte delle eccezioni e degli elementi facoltativi presenti nel DTD flessibile. Ovviamente questo ha un prezzo in generalità: infatti, mentre il DTD flessibile ha ambizioni di completezza (tutti i documenti normativi debbono essere marcabili correttamente con il DTD flessibile), esistono sicuramente documenti normativi che non sono descrivibili con il DTD base.
Tra le scelte che caratterizzano il DTD base, sicuramente vanno ricordate:
• la semplificazione degli elementi testuali: i cosiddetti content model misti (ovvero quelli in cui è possibile inserire sia testo che elementi inline) sono qui limitatissimi: oltre al testo, è possibile specificare soltanto l'esistenza di riferimenti e modifiche.
• la rigidità degli elementi strutturati: la gerarchia dell'articolato è rigida e priva di eccezioni. Rubriche e numeri possono solo contenere testo.
• L'eliminazione della maggior parte degli elementi facoltativi, soprattutto nelle metainformazioni.
• L'obbligo di specificare come risorse esterne tutti gli annessi.
Maggiori informazioni possono essere riscontrate nei commenti interni al DTD stesso.
Va notato che a partire dalla versione del 1 novembre 2003 il DTD base allenta alcune (poche) regole la cui violazione impediva l'uso del DTD base in un grande numero di situazioni. L'effetto pratico, tuttavia, è che a partire da questa versione il DTD base non è più un sottoinsieme delle regole del DTD completo, ma del DTD flessibile.
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 flessibile e quello completo, 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.
Entità specifiche
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.
Rigore nella gerarchia
Nel DTD completo 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 completo 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 flessibile 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 flessibile permette inoltre l'inserimento di elementi di partizione non previsti usando l'elemento generico "partizione", e di elementi contenitore (al cui interno possono stare paragrafi ed altri elementi inconsueti), utilizzando l'elemento generico "contenitore".
Elemento paragrafo
Nel DTD completo, 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 flessibile, dunque, prevede anche questo elemento e lo inserisce nella posizione corretta della gerarchia.
Facoltatività di numero e rubrica
Nel DTD flessibile sia il numero che la rubrica di ogni elemento sono facoltativi, mentre nel DTD completo il numero diventa obbligatorio, anche se la rubrica resta facoltativa. Va inoltre specificato che l'elemento num può essere inserito in documenti che seguano il DTD base o flessibile anche se vuoto. Diventa dunque arbitrario, per questi tipi di documento, la soppressione dell'elemento num o il suo inserimento anche vuoto.
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 completo e flessibile, questa osservazione è stata inserita qui per ovvie ragioni di opportunità.
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.
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). Attraverso l'attributo 'tipo' si specifica 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 di modifica sul documento. In nessun caso si potrà usare il valore 'originale' per documenti che sono stati rimaneggiati nel contenuto durante la fase di redazione del documento stesso.
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.
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.
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 sopra), 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).
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 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 senza necessariamente indicare nel documento quali cambiamenti siano stati effettuati a partire dal testo originale. Il documento permette dunque di stabilire il contenuto per un'unico periodo di vigenza, che viene indicata nelle meta-informazioni del documento stesso.
Un documento 'multi-vigente', invece, presenta contenuti attribuibili a più periodi di vigenza successivi, ed in particolare può presentare versioni multiple dello stesso frammento (ad esempio, più versioni di un articolo o di un comma), ciascuna attribuibile ad un periodo di vigenza diverso. La specifica del contenuto multi-vigente avviene in due fasi: nella prima fase, all'interno del blocco delle meta-informazioni, si indicano nell'elemento 'vigenza' le date rilevanti per ogni cambiamento di contenuto del documento; ad ogni vigenza è associato un identificativo univoco, la data di inizio rilevanza e l'indicazione del riferimento passivo al provvedimento che impone la modifica del contenuto. 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, indicando sempre l'identificativo dell'elemento vigenza appropriato. 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 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.
Entità: content model comuni ai vari tipi di elementi
Gli elementi dei DTD completo e flessibile 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, '
'
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 '
' per il corsivo oppure '' 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 ''
ELEMENTI CONTENITORE. Sono elementi che definiscono al loro interno elementi speciali, o che modificano il senso ed il comportamento di elementi definiti anche altrove. Questi sono cioè elementi privi di una particolare visualizzazione predefinita, ma che definiscono un contesto all'interno dei quali sono possibili elementi che al di fuori non sono definiti. Ad esempio '