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:
  1. Introduzione
  2. Definizione di namespace per NormeInRete
  3. I file nirloose.dtd e nirstrict.dtd
  4. Il file globali.dtd
  5. Il file testo.dtd
  6. Il file norme.dtd
  7. Sintassi dei valori di alcuni attributi rilevanti
  8. Il file meta.dtd
  9. Criteri d'uso del DTD
  10. 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:
  1. nirstrict.dtd: definizioni specifiche per documenti NIR con sintassi strict
  2. nirloose.dtd: definizioni specifiche per documenti NIR con sintassi loose
  3. globali.dtd: elementi ed attributi generici e condivisi da tutti i moduli
  4. norme.dtd: elementi specifici per parti normative strutturate
  5. testo.dtd: elementi specifici per parti testuali e non strutturate
  6. meta.dtd: elementi specifici per la descrizione di meta-informazioni
  7. proprietario.dtd: elementi specifici all'applicazione, esterni allo standard NIR
  1. ISOlat1.pen: "ISO 8879-1986//ENTITIES Added Latin 1//EN//XML"
  2. ISOlat2.pen: "ISO 8879:1986//ENTITIES Added Latin 2//EN//XML"
  3. ISOgrk3.pen: "ISO 8879:1986//ENTITIES Greek Symbols//EN//XML"
  4. ISOdia.pen: "ISO 8879:1986//ENTITIES Diacritical Marks//EN//XML"
  5. ISOnum.pen: "ISO 8879:1986//ENTITIES Numeric and Special Graphic//EN//XML"
  6. ISOpub.pen: "ISO 8879:1986//ENTITIES Publishing//EN//XML"
  7. 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:
  1. il documento articolato completo
  2. 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:

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

5.2 Elementi di tipo inline

5.3 Elementi di tipo blocco e form

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:
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:
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 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>

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:

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:
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:
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:
Caratteristiche che costituiscono invece un livello di conformità ottimale sono le seguenti:
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.