Sei sulla pagina 1di 147

Indice del corso

Il linguaggio XML
Corso introduttivo
Progettato e realizzato dall'Istituto per la documentazione giuridica del CNR di Firenze
per conto del Ministero della Giustizia
(contratto pos. SIA08.11.SAC29.S.5/2000-A)

0. Avvertenze
1. Fondamenti di XML
1. Che cos'è XML
2. XML vs HTML
3. Benefici
4. Sommario
5. Esercizi

2. Sintassi di XML
1. Elemento
2. Attributo
3. Albero XML
4. Documento XML
5. Documento "ben formato"
6. Sommario
7. Esercizi

3. DTD
1. Definizione
2. Dichiarazione
3. Elemento
4. Attributo
5. Elemento vs Attributo
6. Entità
7. Esempio di struttura
8. Esempio di documento
9. Sommario
10. Esercizi

4. Fogli di stile
1. Introduzione
2. Fogli di stile CSS
3. Fogli di stile XSL
4. Sommario
5. Esercizi

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLTocStampa.html (1 di 2) [12/10/2001 10.20.27]


Indice del corso

5. XLL: i collegamenti in XML


1. Fondamenti
2. Collegamenti semplici
3. Collegamenti estesi
4. XPointer
5. Sommario
6. Esercizi

6. DOM
1. Fondamenti
2. Parser XML
3. Errori del parser
4. Attraversamento dell'albero XML
5. L'oggetto node
6. L'oggetto document
7. L'oggetto element
8. Altri oggetti
9. Sommario
10. 10. Esercizi

7. Il DTD "normativo" di NIR


1. Fondamenti
2. I documenti normativi
3. Panoramica sul DTD
4. 4. Sommario

8. Analisi del DTD di NIR


1. Fondamenti
2. I namespace
3. I file nirloose.dtd e strict.dtd
4. Il file globali.dtd
5. Il file testo.dtd
6. Il file norme.dtd
7. Sintassi rilevanti
8. Il file meta.dtd
9. Le disposizioni nel DTD di NIR
10. Sommario

9. Altri argomenti
1. Query language

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLTocStampa.html (2 di 2) [12/10/2001 10.20.27]


Avvertenze

Avvertenze 3

In questo corso si potranno apprendere le nozioni fondamentali sul linguaggio


XML, una nuova tecnologia per le applicazioni Web sviluppata dal Web
Consortium, che assicura che i dati strutturati siano uniformi e le specifiche
indipendenti da applicazioni o da interessi di industrie private.
Fondamentalmente XML è stato pensato per la distribuzione di documenti sulla
rete Internet, anche se l'uso può essere esteso ad altri ambienti.

Per entrare nel corso cliccare sull'icona del titolo .


Il corso è stato organizzato in nove lezioni, le prime tre introduttive le altre di
approfondimento, presentate in una struttura composta da tre finestre
(frame) secondo il seguente diagramma:

Home page corso XML

Per consultare le lezioni del corso si possono utilizzare le voci visibili nella
finestra indice oppure attivare i pulsanti

presenti nella finestra barra di navigazione; in entrambi i casi nella finestra


contenuto apparirà il testo corrispondente alla voce selezionata. Tuttavia ad
una voce dell'indice può, in alcuni casi, corrispondere più di una pagina e in
questo caso solo con i pulsanti di navigazione è possibile visualizzarle tutte.

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLintroduzione.html (1 di 2) [12/10/2001 10.20.38]


Avvertenze

All'inizio di ogni lezione vengono indicati i concetti che verranno esposti e alla
fine viene presentato un sommario delle nozioni illustrate e si potrà verificare
l'apprendimento dei concetti esposti attraverso dei test di autoverifica. La
parte sui test di ogni lezione è completata da un report in cui sono riassunti i
risultati ottenuti, compresi del punteggio e del tempo impiegato per fornire le
risposte.
In ogni pagina di test è possibile verificare immediatamente la correttezza
delle risposte e visualizzare le informazioni di ritorno (feedback) cliccando
sull'immagine Verifica e Feedback posta a fine pagina.
In alcune pagine è stata prevista un'animazione, segnalata attraverso

l'immagine di una cinepresa .


In altre è stato previsto un audio segnalato tramite l'immagine di un

altoparlante .

In altre ancora, la presenza dell'icona segnala la presenza di un'ulteriore


spiegazione della parola che precede l'icona.
In entrambi i casi è sufficiente un semplice click del mouse per attivare il
supporto multimediale associato.
Questo corso presuppone una conoscenza di base dei seguenti argomenti:

caratteristiche principali del Web


linguaggio HTML

Inizia il corso introduttivo sul linguaggio XML

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLintroduzione.html (2 di 2) [12/10/2001 10.20.38]


1. Introduzione

1. Fondamenti di XML

In questa lezione apprenderai:


● cos'è il linguaggio XML
● quali sono le differenze tra XML e HTML

● quali sono i vantaggi derivanti dall'uso di XML

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso01Introduzione.html [12/10/2001 10.20.38]


1. Introduzione - Che cos'è XML

1. Fondamenti di XML - Che cos'è XML (1 di 4)

XML è l'acronimo di eXtensible Markup Language e significa linguaggio di marcatura estensibile. Iniziamo quindi a
spiegare il significato di linguaggio di marcatura e subito dopo descriveremo il concetto di estensibile.
● XML è un linguaggio di marcatura
XML è un linguaggio di marcatura che deriva dal linguaggio SGML (Standard Generalized Markup Language).
Entrambi sono linguaggi di marcatura testuale, ossia inseriscono all'interno del documento delle etichette o marcature
(tag), che permettono di descrivere il contenuto del documento stesso. In questo modo un'applicazione, ad esempio
un motore di ricerca , è in grado di leggere le informazioni contenute nel documento e di elaborarle in maniera
efficiente e corretta. Ecco l'esempio di un documento, che descrive gli estremi di una legge, in formato XML:

<?xml version="1.0"?>
<Legge>
<Intestazione>
<DataLegge>7 dicembre 2000</DataLegge>
<NumeroLegge>383</NumeroLegge>
<TitoloLegge>Disciplina delle associazioni di promozione
sociale</TitoloLegge>
</Intestazione>
</Legge>

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0101A.html [12/10/2001 10.20.38]


1. Introduzione - Che cos'è XML

1. Fondamenti di XML- Che cos'è XML (2 di 4)

● XML è un linguaggio di marcatura estensibile


L'insieme delle marcature utilizzabili per creare un documento XML non è predefinito come succede
per il linguaggio HTML per il quale un organismo unico internazionale, il Web Consortium, ha definito
l'insieme dei tag utilizzabili e il loro significato.
L'autore del documento XML definisce i propri tag in base alla tipologia dei dati da descrivere. Per
autore s'intende l'insieme dei soggetti interessati alla distribuzione di documenti XML che descrivono
una certa tipologia semantica e che concordano insieme una struttura comune da adottare (vedi
lezione 3: DTD).
Ad esempio, se un ente pubblico o privato intende rendere accessibile su Internet le schede
bibliografiche del catalogo della propria biblioteca, utilizzando il linguaggio XML, dovrà contattare
gran parte degli enti pubblici e/o privati che hanno la stessa esigenza e concordare con essi una
struttura da utilizzare, ossia definire il numero e il tipo di tag.

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0101B.html [12/10/2001 10.20.39]


1. Introduzione - Che cos'è XML

1. Fondamenti di XML- Che cos'è XML (3 di 4)

● XML è un linguaggio per la descrizione semantica dei dati


XML è stato progettato per trattare la descrizione delle informazioni, ossia concentra l'attenzione sul significato dei
dati.
Ad esempio, in questo documento XML, che descrive gli estremi di una legge,

<?xml version="1.0"?>
<Legge>
<Intestazione>
<DataLegge>7 dicembre 2000</DataLegge>
<NumeroLegge>383</NumeroLegge>
<TitoloLegge>Disciplina delle associazioni di promozione
sociale</TitoloLegge>
</Intestazione>
</Legge>
le marcature indicano in maniera non ambigua il significato di ciascun dato, per cui un'applicazione è in grado di
estrarre correttamente tutte le informazioni contenute nel documento senza incorrere in errori interpretativi.

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0101C.html [12/10/2001 10.20.39]


1. Introduzione - Che cos'è XML

1. Fondamenti di XML - Che cos'è XML (4 di 4)

● XML non è orientato ad uno specifico tipo di elaborazione


XML è stato creato esclusivamente come uno strumento per strutturare, memorizzare e scambiare informazioni.
Ad esempio, in questo documento XML che descrive un articolo di una legge,

<?xml version="1.0"?>
<Articolo Num="1">
<Rubrica>Finalità e oggetto della legge</Rubrica>
<Comma Num="1" >La Repubblica riconosce il valore...</Comma>
</Articolo>
non è contenuta alcuna istruzione finalizzata all'elaborazione dei dati; si tratta di pura informazione confezionata nelle
marcature XML. Occorre utilizzare un'applicazione specifica per inviare, ricevere o visualizzare il documento XML. Le
marcature, evidenziando la semantica delle informazioni contenute in un documento, rendono semplice la
progettazione e la realizzazione di applicazioni in grado di elaborare i dati.

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0101D.html [12/10/2001 10.20.39]


1. Introduzione - XML versus HTML

1. Fondamenti di XML - XML vs HTML (1 di 2)

● XML non è stato progettato per sostituire HTML


I linguaggi XML e HTML sono stati progettati per svolgere compiti diversi:
● XML è stato pensato per descrivere i dati ed è incentrato sul loro valore semantico; XML
riguarda la descrizione delle informazioni
● HTML è stato pensato per visualizzare i dati ed è incentrato sull'aspetto con il quale il dato è
presentato; HTML tratta la visualizzazione delle informazioni

● XML è estensibile, è un metalinguaggio nel senso che permette di definire altri linguaggi di
marcatura (si veda, ad esempio, il linguaggio Wireless Markup Language usato per le
connessioni senza cavo)
● HTML non è estensibile

● XML mantiene separate la struttura del documento dalle regole per la sua visualizzazione
● HTML usa elementi per la struttura insieme ad elementi per la visualizzazione

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0102A.html [12/10/2001 10.20.40]


1. Introduzione - XML versus HTML

1. Fondamenti di XML - XML vs HTML (2 di 2)

Esaminiamo le versioni brevi, nei formati HTML e XML, di un documento estratto da una legge, per
evidenziare, con maggior enfasi, le differenze fra i due linguaggi di marcatura.
Aprendo con un browser il documento in formato HTML chiunque è in grado di capire che si tratta di
un articolo di una legge; ma se osserviamo il documento come appare nel suo formato HTML
originale ci rendiamo subito conto del fatto che, se volessimo progettare, ad esempio, un algoritmo
generale per l'estrazione automatica del primo comma di un articolo, questo non sarebbe possibile o
almeno potremmo sempre trovare un documento in grado di far fallire l'algoritmo . Invece sullo
stesso documento in formato XML sarebbe facile progettare un algoritmo per l'estrazione del primo
comma in quanto grazie alle marcature un computer sarebbe in grado di riconoscere tutte le parti del
documento e le relazioni di ognuna di queste con le altre.

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0102B.html [12/10/2001 10.20.40]


1. Introduzione - Benefici

1. Fondamenti di XML - Benefici (1 di 2)

● Con XML è possibile condividere e scambiare dati in modo indipendente dall'hardware e dal
software
Poiché i dati XML sono memorizzati in formato testuale piatto, ossia senza caratteri speciali
aggiuntivi, XML fornisce un modo di condividere e scambiare i dati indipendente dal sistema
operativo (Mac, Windows, UNIX) e dal software.

Attualmente, i sistemi di database contengono dati in formati incompatibili fra di loro. Fino ad
oggi, le società di software hanno investito molte risorse nello studio e nella realizzazione di
programmi per lo scambio di dati su Internet fra i diversi sistemi. La conversione in XML riduce
fortemente la complessità dei programmi e crea documenti che possono essere letti da molte
applicazioni di tipo diverso.

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0103A.html [12/10/2001 10.20.40]


1. Introduzione - Benefici

1. Fondamenti di XML - Benefici (2 di 2)

● Applicazioni Web più potenti


Dal momento che il linguaggio XML consente di evidenziare, attraverso i propri tag, la semantica di
un testo, è possibile semplificare la creazione di applicazioni che elaborano documenti elettronici in
modo intelligente. Ad esempio, un motore di ricerca sarà in grado di reperire tutti gli articoli di
una legge che contengono riferimenti normativi esterni, oppure di trovare gli articoli che contengono
nella rubrica una certa parola. In questo modo è possibile superare uno dei limiti dell'HTML in cui i
dati sono formattati per la presentazione a video e risultano difficili da trattare per una elaborazione
di altro tipo.
● Applicazioni Web più flessibili

I documenti basati sull'XML possono essere utilizzati dal Web client elaborando i dati che vi sono
contenuti in differenti processi software non predeterminati. Quindi è possibile, per esempio,
sviluppare applicazioni che richiedono al Web client di presentare viste diverse degli stessi dati.

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0103B.html [12/10/2001 10.20.41]


1. Introduzione - Sommario

1. Fondamenti di XML - Sommario

In questa lezione abbiamo appreso:


● XML è un acronimo di eXtensible Markup Language

● XML è un linguaggio di marcatura come HTML, ma con diverse finalità

● XML è un linguaggio di marcatura estensibile

● XML non è stato progettato per sostituire HTML

● XML è stato progettato per descrivere dati

... passi successivi:


la prossima lezione sarà dedicata alla sintassi del linguaggio XML e ci permetterà di comprendere
esempi reali di documenti XML

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso01Sommario.html [12/10/2001 10.20.41]


Introduzione - Esercizi Gruppo I

1. Fondamenti di XML - Esercizi gruppo I

1. XML è un linguaggio di marcatura progettato per la descrizione delle informazioni

Vero
Falso
2. XML è stato progettato in modo da
rendere più semplice la realizzazione di motori di ricerca su Internet

rendere più semplice la visualizzazione delle informazioni

non essere orientato ad una specifica elaborazione

rendere più semplice la stampa delle informazioni

3. Nel linguaggio HTML si possono usare solo elementi appartenenti ad un determinato insieme, in
XML invece l'autore inventa gli elementi più opportuni per descrivere i propri documenti. Per questa
caratteristica si dice che il linguaggio XML è

4. Un documento XML è un documento elettronico

complesso, leggibile solo da programmi speciali

semplice, è puro testo leggibile da un qualsiasi editore di testi

codificato, ossia criptato e leggibile solo da programmi di decifratura

simile a quelli utilizzati per la memorizzazione di immagini

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLquiz0101.html [12/10/2001 10.20.42]


Introduzione - Esercizi Gruppo II

1. Fondamenti XML - Esercizi gruppo II

5. XML è un linguaggio di marcatura progettato per

evidenziare la semantica delle informazioni contenute nei documenti

trasmettere documenti dotati di firma elettronica

rendere semplice ed efficace l'elaborazione automatica delle informazioni

migliorare la visualizzazione delle informazioni

6. Il linguaggio XML deriva da , un linguaggio di marcatura più generale e


potente

7. Quali sono le caratteristiche più rilevanti del linguaggio XML?

8. XML è una estensione del linguaggio HTML

Vero
Falso

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLquiz0102.html [12/10/2001 10.20.42]


2. Sintassi XML

2. Sintassi di XML

In questa lezione apprenderai:


● la sintassi XML di elementi ed attributi

● cos'è l'albero di un documento XML


● la definizione di documento XML ben formato (well formed)

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso02Sintassi.html [12/10/2001 10.20.45]


2. Sintassi - Elementi (definizione)

2. Sintassi di XML - Elemento (1 di 5)

Un elemento XML è l'insieme di un tag di apertura, un tag di chiusura e dei dati compresi fra i due tag.
I tag sono sempre delimitati da parentesi angolate; i dati all'interno dei tag costituiscono il valore dell'elemento.

Esempio:

<TitoloLegge>Disciplina delle associazioni di promozione sociale</TitoloLegge>

Alcuni elementi XML possono essere vuoti, cioè privi di valore; in questo caso si possono usare le seguenti due
codifiche alternative ed equivalenti:

a: <DataFineVigenza></DataFineVigenza>
b: <DataFineVigenza/>
Gli elementi vuoti hanno caratteristiche peculiari, che verranno evidenziate più avanti nel corso.

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0201A.html [12/10/2001 10.20.45]


2. Sintassi - Elementi (caratteristiche)

2. Sintassi di XML - Elemento (2 di 5)

● Tag di chiusura sempre presente


In XML tutti gli elementi devono avere un tag di chiusura.

<Comma>1. ......... </Comma>

<Comma>2. ......... </Comma>


Ciò non è richiesto in HTML, dove alcuni elementi possono non avere il tag di chiusura, dato che la sintassi del
linguaggio non lo richiede obbligatoriamente.

<p>Questo è un paragrafo.
<b>Questo è un testo in grassetto.

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0201B.html [12/10/2001 10.20.46]


2. Sintassi - Elementi (caratteristiche)

2. Sintassi di XML - Elemento (3 di 5)

● Differenze tra caratteri maiuscoli e caratteri minuscoli (case sensitive)


I caratteri maiuscoli e minuscoli sono rilevanti per la definizione di un tag XML.
I seguenti elementi:

<TitoloLegge>Disciplina delle associazioni di promozione sociale</TitoloLegge>

<titololegge>Disciplina delle associazioni di promozione sociale</titololegge>


sono diversi fra loro, quindi i tag di apertura e di chiusura devono essere scritti con lo stesso uso dei caratteri
maiuscoli e minuscoli; non è corretto scrivere:

<TitoloLegge>Disciplina delle associazioni di promozione sociale</titololegge>

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0201C.html [12/10/2001 10.20.46]


2. Sintassi - Elementi (caratteristiche)

2. Sintassi di XML - Elemento (4 di 5)

● Elementi correttamente nidificati


In XML un elemento può essere contenuto (nidificato) in un altro; nell'esempio che segue, l'elemento Comma è
nidificato all'interno dell'elemento Articolo.

<Articolo>
<Comma>1. ......... </Comma>
</Articolo>
In XML l'ordine di chiusura dei tag deve essere inverso rispetto all'ordine di apertura; il successivo è un esempio
errato di uso della sintassi degli elementi:

<Articolo><Comma>1. ......... </Articolo></Comma>


Ciò non è richiesto in HTML, dove alcuni tag possono non rispettare l'ordine di apertura e chiusura, come nell'esempio
che segue:

<b><i>Questo testo è in grassetto e in corsivo</b></i>

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0201D.html [12/10/2001 10.20.46]


2. Sintassi - Elementi (caratteristiche)

2. Sintassi di XML - Elemento (5 di 5)

● Caratteri riservati
Molti caratteri fanno parte della struttura sintattica di XML e non vengono interpretati correttamente nel caso in cui
siano direttamente inseriti all'interno di un documento. Se sorge la necessità di utilizzare uno di questi caratteri
riservati, occorre utilizzare una speciale sequenza di caratteri, detta entità nella terminologia di XML.

carattere riservato entità


< &lt;
& &amp;
> &gt;
" &quot;
' &apos;

Per esempio, dovendo trascrivere il 1° comma dell'articolo 11 della legge scelta:


... l'Osservatorio nazionale dell'associazionismo, di seguito denominato "Osservatorio", ...

dobbiamo codificarlo nel seguente modo:

... l&apos;Osservatorio nazionale dell'associazionismo, di seguito denominato &quot;Osservatorio&quot;, ...

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0201E.html [12/10/2001 10.20.46]


2. Sintassi - Attributi

2. Sintassi di XML - Attributo

● Definizione
Viene utilizzato un attributo per aggiungere una caratteristica o una proprietà ad un elemento.
Un attributo è una coppia nome-valore, separata da un segno di uguale (=), che può essere presente
all'interno del tag di apertura di un elemento, dopo il nome dell'elemento stesso. Un elemento può
contenere uno o più attributi.
● Sintassi dell'attributo

In XML, il valore di un attributo deve essere sempre racchiuso fra le doppie virgolette (").

<Articolo Num="2">
<Comma TipoDisposizione="Definizione" Num="1">
Sono considerate associazioni di promozione sociale le associazioni riconosciute ...
</Comma>
</Articolo>

Ogni attributo è sempre associato ad un elemento, non ha vita autonoma. Inoltre, lo stesso attributo
può ricorrere anche in più elementi.

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0202.html [12/10/2001 10.20.47]


2. Sintassi - Albero XML

2. Sintassi di XML - Albero XML

Ogni documento XML deve contenere un solo elemento radice, cioè un elemento che racchiude tutti
gli altri elementi secondo una struttura di relazione padre-figlio, cioé strettamente gerarchica.
L'elemento radice è il primo elemento di un documento XML.

Le relazioni gerarchiche esistenti fra i vari elementi danno vita al cosiddetto albero XML,
rappresentato nella colonna destra (versione grafica) della tabella sottostante.
versione testuale versione grafica
<Legge>
...
<TitoloLegge>...</TitoloLegge>
<Articolato>
<Capo Num="I">
<Articolo Num="1">
<Rubrica></Rubrica>
<Comma Num="1"
>...</Comma>
<Comma Num="2"
>...</Comma>
...
</Articolo>
</Capo>
...
</Articolato>
...
</Legge>

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0203.html [12/10/2001 10.20.47]


2. Sintassi - Documento XML

2. Sintassi di XML - Documento XML

La prima riga di un documento XML è una dichiarazione che definisce la versione XML del documento e deve essere
sempre presente.

<?xml version="1.0"?>
<Legge>
...
<TitoloLegge>Disciplina delle associazioni di promozione sociale</TitoloLegge>
<Articolato>
<Capo Num="I">
<Rubrica>DISPOSIZIONI GENERALI</Rubrica>
<Articolo Num="1">
<Rubrica>Finalità e oggetto della legge</Rubrica>
<Comma Num="1" >La Repubblica riconosce il valore sociale...</Comma>
...
</Legge>
Sempre nella stessa dichiarazione può essere specificato l'insieme (set) di caratteri che si desidera includere
all'interno dei propri documenti. Il set di caratteri usato, nel caso in cui non venga specificato diversamente, è
UNICODE (UTF-8), una sorta di ASCII esteso.
Un altro set di caratteri utilizzato è il LATIN (ISO-8859-1). In questo caso la prima linea di un documento diventa:

<?xml version="1.0" encoding="ISO-8859-1"?>

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0204.html [12/10/2001 10.20.48]


2. Sintassi - Documento well-formed

2. Sintassi di XML - Documento ben formato

Un documento XML ben formato (well formed) è un documento conforme alle regole di sintassi descritte alle pagine

precedenti.
● Tag di apertura e di chiusura sempre presenti e uguali, nei caratteri maiuscoli e minuscoli

<TitoloLegge>Disciplina delle associazioni di promozione sociale</TitoloLegge>

● Tag correttamente nidificati

<Articolo Num="1">
<Rubrica>Finalità e oggetto della legge</Rubrica>
<Comma Num="1" >La Repubblica riconosce il valore sociale...</Comma>
</Articolo>
● Elemento radice sempre presente

<Legge>
...
</Legge>

● Valori degli attributi racchiusi fra virgolette

<Articolo Num="1">

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0205.html [12/10/2001 10.20.48]


2. Sintassi XML - Sommario

2. Sintassi di XML - Sommario

In questa lezione abbiamo appreso:


● cos'è un elemento XML
● cos'è un attributo XML
● cos'è l'albero XML
● la definizione di documento XML ben formato
... passi successivi:

la prossima lezione sarà dedicata al Document Type Definition (DTD).

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso02Sommario.html [12/10/2001 10.20.49]


Sintassi XML - Esericizi Gruppo I

2. Sintassi di XML - Esercizi gruppo I

1. Il seguente elemento XML:

<Articolo><Comma>La Repubblica riconosce ...</Articolo></Comma>

rispetta la sintassi degli elementi XML


Vero
Falso

2. Le affermazioni seguenti descrivono alcune caratteristiche della sintassi degli elementi XML

l'elemento <ROOT> è obbligatoriamente sempre presente

i tag degli elementi XML devono essere sempre minuscoli

la nidificazione degli elementi deve essere sempre rispettata

sono significativi i caratteri minuscoli e maiuscoli

3. I valori degli attributi degli elementi XML devono sempre

iniziare con un carattere alfabetico

essere racchiusi tra doppie virgolette

essere racchiusi tra doppie virgolette solo se contengono caratteri speciali, come gli spazi bianchi

essere racchiusi fra apici

4. La prima riga di un documento XML

è sempre vuota

contiene sempre il contenuto dell'elemento radice

specifica la dichiarazione <?xml version="1.0"?>

è sempre un commento

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLquiz0201.html [12/10/2001 10.20.49]


Sintassi XML - Esericizi Gruppo II

2. Sintassi di XML - Esercizi gruppo II

5. La seguente dichiarazione

<?xml version="1.0" encoding="ISO-8859-1"?>

significa che il documento XML è conforme allo standard internazionale ISO-8859

Vero
Falso

6. Nel seguente estratto di documento XML:


<?xml version="1.0"?>
<Legge>
...
<TitoloLegge>Disciplina delle associazioni di promozione sociale</TitoloLegge>
<Articolato>
<Capo Num="I">
<Rubrica>DISPOSIZIONI GENERALI</Rubrica>
<Articolo Num="1">
<Rubrica>Finalità e oggetto della legge</Rubrica>
<Comma Num="1" >La Repubblica riconosce il valore sociale...</Comma> ...
</Legge>
l'elemento radice è

7. Un documento XML ben formato (well formed) è un documento che

contiene solo elementi e nessun attributo

non contiene righe vuote inutili

contiene un solo elemento radice e i tag sono correttamente chiusi

rispetta tutte le regole della sintassi del linguaggio XML

8. I browser web quando aprono un documento XML segnalano un errore se il documento non è ben
formato

Vero
Falso

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLquiz0202.html [12/10/2001 10.20.50]


3. DTD

3. DTD - Document Type Definition

In questa lezione apprenderai:


● cos'è il Document Type Definition (DTD)

● la sintassi del DTD

● gli elementi, gli attributi e le entità di un DTD

● la definizione di documento XML valido

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso03Dtd.html [12/10/2001 10.20.51]


3. DTD - Definizione

3. DTD - Definizione

Una caratteristica fondamentale dell'XML è l'estensibilità. L'autore - nell'accezione estesa specificata


nella prima lezione - di un documento XML può creare nuovi tag per descrivere i contenuti semantici
dei propri dati, semplificando il loro scambio fra i gruppi di persone interessate allo stesso settore.

Ciò ha portato alla necessità di definire delle regole grammaticali, o vincoli, alle quali gli elementi
devono attenersi.
Queste regole grammaticali sono definite nelle specifiche XML e sono codificate nel Document Type
Definition (DTD).
Le regole grammaticali o vincoli specificano:
● qual'è l'insieme degli elementi e degli attributi che si possono usare nel documento XML

● quali sono le relazioni gerarchiche fra gli elementi

● qual'è l'ordine in cui gli elementi appariranno nel documento XML

● quali elementi ed attributi sono opzionali

Quando un documento XML è ben formato e rispetta le regole del DTD a cui si riferisce si dice che è
un documento XML valido.

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0301.html [12/10/2001 10.20.52]


3. DTD - Dichiarazione

3. DTD - Dichiarazione (1 di 2)

In un documento XML si può specificare il DTD in modo esplicito (DTD interno) o con un riferimento ad un documento
distinto (DTD esterno).

Se il DTD è interno, deve essere dichiarato con la seguente sintassi:

<!DOCTYPE elemento-radice [dichiarazione-elementi]>


Esempio semplificato per una legge:
<?xml version="1.0"?>
<!DOCTYPE Legge [
<!ELEMENT Legge (TitoloLegge,Articolato) >
<!ELEMENT TitoloLegge (#PCDATA)>
<!ELEMENT Articolato (Capo+)>
<!ELEMENT Capo (Rubrica?,Articolo+)>
<!ELEMENT Rubrica (#PCDATA)>
<!ELEMENT Articolo (Rubrica?,Comma+)>
<!ELEMENT Comma (#PCDATA)>
<!ATTLIST Capo Num CDATA #REQUIRED>
<!ATTLIST Articolo Num CDATA #REQUIRED>
<!ATTLIST Comma Num CDATA #REQUIRED>
]>
<Legge>
<TitoloLegge>Disciplina delle associazioni di promozione sociale</TitoloLegge>
<Articolato>
<Capo Num="I">
<Rubrica>DISPOSIZIONI GENERALI</Rubrica>
<Articolo Num="1">
<Rubrica>Finalità e oggetto della legge</Rubrica>
<Comma Num="1" >La Repubblica riconosce il valore sociale...</Comma>
...
</Legge>

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0302A.html [12/10/2001 10.20.52]


3. DTD - Dichiarazione

3. DTD - Dichiarazione (2 di 2)

Se il DTD è esterno, deve essere dichiarato con la seguente sintassi:

<!DOCTYPE elemento-radice SYSTEM "nome-file">


Vediamo lo stesso esempio semplificato con la dichiarazione esterna:
<?xml version="1.0"?>
<!DOCTYPE Legge SYSTEM "legge.dtd">
<Legge>
<TitoloLegge>Disciplina delle associazioni di promozione sociale</TitoloLegge>
<Articolato>
<Capo Num="I">
<Rubrica>DISPOSIZIONI GENERALI</Rubrica>
<Articolo Num="1">
<Rubrica>Finalità e oggetto della legge</Rubrica>
<Comma Num="1" >La Repubblica riconosce il valore sociale...</Comma>
...
</Legge>
dove legge.dtd è un file esterno che contiene il DTD per il documento XML, e cioé le righe:

<!ELEMENT Legge (TitoloLegge,Articolato) >


<!ELEMENT TitoloLegge (#PCDATA)>
<!ELEMENT Articolato (Capo+)>
<!ELEMENT Capo (Rubrica?,Articolo+)>
<!ELEMENT Articolo (Rubrica?,Comma+)>
<!ELEMENT Rubrica (#PCDATA)>
<!ELEMENT Comma (#PCDATA)>
<!ATTLIST Capo Num CDATA #REQUIRED>
<!ATTLIST Articolo Num CDATA #REQUIRED>
<!ATTLIST Comma Num CDATA #REQUIRED>

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0302B.html [12/10/2001 10.20.52]


3. DTD - Elemento

3. DTD - Elemento (1 di 4)

In un DTD gli elementi del documento XML sono definiti tramite una dichiarazione di elemento che può assumere tre
forme.
● Prima forma
<!ELEMENT NomeElemento (#PCDATA)>
Questa è la forma più semplice in cui si dichiara che un elemento può contenere come valore una qualsiasi stringa di
testo; ad esempio:

<!ELEMENT Rubrica (#PCDATA)>


In questo caso il documento XML che fa riferimento al DTD contenente tale dichiarazione potrà contenere un elemento
del tipo:

...
<Rubrica>DISPOSIZIONI GENERALI</Rubrica>
...

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0303A.html [12/10/2001 10.20.53]


3. DTD - Elemento

3. DTD - Elemento (2 di 4)

● Seconda forma
<!ELEMENT NomeElemento EMPTY>
Questa è la forma con la quale si dichiara che un elemento è privo di valore. In questo caso all'elemento sono sempre
associati uno o più attributi:

<!ELEMENT Numero EMPTY>


<!ATTLIST Numero
Valore CDATA #REQUIRED>
e quindi il documento XML che fa riferimento al DTD contenente tale dichiarazione potrà contenere un elemento del
tipo:

...
<Numero Valore="1"/ >
...

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0303B.html [12/10/2001 10.20.53]


3. DTD - Elemento

3. DTD - Elemento (3 di 4)

● Terza forma
<!ELEMENT NomeElemento (ElementoFiglio1, ElementoFiglio2, ...)>
Questa è la forma a contenitore in cui si dichiara che un elemento è composto da sottoelementi (figli) con i quali
s'instaura una stretta gerarchia del tipo padre-figlio.

<!ELEMENT Legge (TitoloLegge, Articolato)>


<!ELEMENT TitoloLegge (#PCDATA)>
<!ELEMENT Articolato (...)>
In questo caso il documento XML che fa riferimento al DTD contenente tale dichiarazione potrà contenere un elemento
del tipo:

<Legge>
<TitoloLegge>Disciplina delle associazioni di promozione sociale</TitoloLegge>
<Articolato>
...
</Articolato>
</Legge>

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0303C.html [12/10/2001 10.20.54]


3. DTD - Elemento

3. DTD - Elemento (4 di 4)

● Terza forma - specifica degli elementi


Quando si usa la terza forma per dichiarare gli elementi, i sottoelementi possono essere specificati in maniera più
articolata utilizzando una delle seguenti espressioni:
espressione significato
Figlio? Figlio è un elemento opzionale, che può comparire al più una volta
Figlio+ Figlio è un elemento che deve comparire una o più volte
Figlio* Figlio è un elemento opzionale, che può comparire zero o più volte
Figlio1|Figlio2 Comparirà Figlio1 oppure Figlio2 ma non entrambi
Deve comparire Figlio1 seguito da Figlio2 in ordine stretto ed una
Figlio1,Figlio2
sola volta entrambi
Deve comparire Figlio1 seguito da Figlio2 in ordine stretto una o
(Figlio1,Figlio2)+
più volte
Può comparire Figlio1 seguito da Figlio2 in ordine stretto una o più
(Figlio1,Figlio2)*
volte
(Figlio1|Figlio2|...|FiglioN)* Contenuto misto - vedi esempi successivi

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0303D.html [12/10/2001 10.20.54]


3. DTD - Attributo

3. DTD - Attributo (1 di 2)

La dichiarazione di attributi all'interno di un DTD identifica:


● quali elementi hanno attributi

● il tipo di attributi

● l'eventuale valore assunto nel caso in cui non venga esplicitamente assegnato un valore (valore
di default)
Una dichiarazione di attributo viene espressa secondo la seguente sintassi:
<!ATTLIST NomeElemento
NomeAttributo1 TipoAttributo1 ValoreAttributo1
NomeAttributo2 TipoAttributo2 ValoreAttributo2
...
NomeAttributoN TipoAttributoN ValoreAttributoN >

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0304A.html [12/10/2001 10.20.54]


3. DTD - Attributi

3. DTD - Attributo (2 di 2)

Sono quattro le specifiche più importanti per il tipo di attributo:


Tipo attributo Significato
CDATA qualsiasi stringa di caratteri è ammessa come valore
il valore dell'attributo deve essere univoco all'interno del
ID
documento XML
il valore dell'attributo deve fare riferimento ad un valore ID
IDREF
presente nel documento XML
lista di nomi (tipo il valore dell'attributo deve corrispondere ad uno dei valori indicati.
enumerato) I valori devono comparire fra parentesi e separati dal simbolo "|"

Sono invece quattro le possibili specifiche per il valore di un attributo:


Valore attributo Significato
#REQUIRED l'attributo è obbligatorio
#IMPLIED l'attributo è opzionale
l'attributo è presente ed ha sempre il valore indicato nella
#FIXED valore
dichiarazione
l'attributo assume come valore di default quello indicato nella
valoreDefault
dichiarazione

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0304B.html [12/10/2001 10.20.55]


3. DTD - Elementi vs Attributi

3. DTD - Elemento vs Attributo

Un DTD può essere costruito utilizzando soltanto gli elementi oppure anche gli attributi. Non esiste
una regola generale per scegliere l'una o l'altra soluzione: la scelta dipende dal contesto che si sta
formalizzando.
L'uso degli attributi può comportare alcuni problemi:
● gli attributi non possono contenere valori multipli

● gli attributi non possono descrivere le strutture

● gli attributi sono più difficili da manipolare dagli applicativi

● gli attributi non possono essere vincolati da legami gerarchici fra di loro

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0305.html [12/10/2001 10.20.55]


3. DTD - Entità

3. DTD - Entità (1 di 2)

Le entità sono utilizzate per definire una sola volta parti del documento XML che si ripetono più volte, oppure per
rendere più leggibile un DTD.

Prima di utilizzare un'entità, questa deve essere dichiarata con la seguente sintassi:

<!ENTITY NomeEntità "ValoreEntità">


Successivamente la si può utilizzare nel documento XML con la seguente sintassi:
&NomeEntità;

L'effetto che si otterrà è quello d'inserire il valore dell'entità là dove l'entità stessa è stata usata.

Esempio di utilizzo dell'entita all'interno di un DTD:

<!ENTITY Tipologia "(Legge|DecretoLegge|DecretoLegislativo)">


<!ATTLIST Legge TipoAtto &Tipologia; #REQUIRED>
Questo verrà interpretato come segue:

<!ATTLIST Legge TipoAtto (Legge|DecretoLegge|DecretoLegislativo) #REQUIRED>

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0306A.html [12/10/2001 10.20.55]


3. DTD - Entità

3. DTD - Entità (2 di 2)

Le entità possono anche essere dichiarate in un documento separato al quale si fa riferimento nel documento
originale, in tal caso si parla di entità esterne.

Per utilizzare un'entità esterna si utilizza la seguente sintassi dichiarativa:

<!ENTITY % NomeEntitaEsterna SYSTEM "NomeFileEntita" >


Successivamente, come nel caso di un'entità interna, la si può utilizzare nel documento XML con la seguente sintassi:
&NomeEntitaEsterna;

L'effetto che si otterrà è quello di inserire il contenuto del documento "NomeFileEntità" là dove l'entità esterna è stata
richiamata.

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0306B.html [12/10/2001 10.20.56]


3. DTD - Elementi

3. DTD - Esempio di struttura

<!-- Elementi della struttura -- >


<!ELEMENT Articolato (Parte | Titolo | Capo | Sezione | Articolo)+ >
<!ELEMENT Parte (Rubrica? , (Titolo | Capo | Sezione | Articolo)+) >
<!ELEMENT Titolo (Rubrica? , (Capo | Sezione | Articolo)+) >
<!ELEMENT Capo (Rubrica? , (Sezione | Articolo)+) >
<!ELEMENT Sezione (Rubrica? , Articolo+) >
<!ELEMENT Articolo (Rubrica? , Comma+) >
<!ELEMENT Comma (Paragrafo+) >
<!ELEMENT Paragrafo (Testo | Lista | Tabella | Immagine)* >
<!ELEMENT Testo (#PCDATA | Riferimento)* >
<!ELEMENT Riferimento (RiferimentoInterno|RiferimentoEsterno) >
<!ELEMENT RiferimentoInterno (#PCDATA) >
<!ELEMENT RiferimentoEsterno (#PCDATA) >
<!ELEMENT Lista (Elemento+) >
<!ELEMENT Elemento (#PCDATA | Lista | Riferimento | Tabella)* >
<!ELEMENT Immagine EMPTY >

<!-- Attributi degli elementi della struttura -- >


<!ATTLIST Articolo IdNumero CDATA #REQUIRED>
<!ATTLIST Capo IdNumero CDATA #REQUIRED>
<!ATTLIST Comma IdNumero CDATA #REQUIRED>
<!ATTLIST Elemento IdElemento CDATA #IMPLIED>
<!ATTLIST Immagine Src CDATA #REQUIRED
Alt CDATA #IMPLIED
Width CDATA #IMPLIED
Height CDATA #IMPLIED
Border CDATA "0"
Align (Left | Center | Right) "Left"
Hspace CDATA "3"
Vspace CDATA "3"
Etichetta CDATA #IMPLIED >
<!ATTLIST Lista TipoLista (NumeroArabo | NumeroRomano | Puntata |
LetteraMinuscola | LetteraMaiuscola) #REQUIRED
Etichetta CDATA #IMPLIED >
<!ATTLIST Parte IdNumero CDATA #REQUIRED>
<!ATTLIST RiferimentoInterno IdRef CDATA #REQUIRED >
<!ATTLIST RiferimentoEsterno Href CDATA #REQUIRED>
<!ATTLIST Sezione IdNumero CDATA #REQUIRED>
<!ATTLIST Tabella Etichetta CDATA #IMPLIED >
<!ATTLIST Testo
Allineamento (Sinistro | Centrato | Destro) "Sinistro"
Carattere (Normale | Grassetto | Corsivo| Sottolineato| GrassettoCorsivo | GrassettoSottolineato |
CorsivoSottolineato) "Normale"
Interlinea (Singola | Doppia) "Singola"
Etichetta CDATA #IMPLIED >
<!ATTLIST Titolo IdNumero CDATA #REQUIRED>

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0307.html [12/10/2001 10.20.56]


3. DTD - Elementi vs Attributi

3. DTD - Esempio di documento

Come esempio di documento si può visualizzare un estratto di documento normativo riguardante due
commi di un articolo della legge 7 dicembre 2000, n. 383 sulla "Disciplina delle associazioni di
promozione sociale".

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0308.html [12/10/2001 10.20.56]


3. DTD - Sommario

3. DTD - Sommario

In questa lezione abbiamo appreso:


● cos'è un DTD

● la definizione di elementi, attributi ed entità di un DTD

● la definizione di documento XML valido

... passi successivi:


la prossima lezione sarà dedicata ai fogli di stile.

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso03Sommario.html [12/10/2001 10.20.57]


DTD - Esericizi Gruppo I

3. DTD - Esercizi gruppo I

1. Cos'è un Document Type Definition (DTD)?

2. Il DTD di un documento XML viene specificato utilizzando la sintassi del linguaggio XML

Vero
Falso

3. La sintassi per la specifica di un elemento all'interno di un DTD può assumere una delle seguenti
forme

<!ELEMENT NomeElemento (#PCDATA)>

<!ELEMENT NomeElemento (#NUMERIC)>

<!ELEMENT NomeElemento (SubElemento1, SubElemento2)>

<!ELEMENT NomeElemento (#EMPTY)>

4. La specifica <!ELEMENT Articolo(Rubrica?, ...)> significa che il sottoelemento Rubrica


dell'elemento Articolo è opzionale

Vero
Falso

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLquiz0301.html [12/10/2001 10.20.57]


DTD - Esericizi Gruppo II

3. DTD - Esercizi gruppo II

5. Per specificare in un DTD di documenti normativi che un articolo è costituito da uno o più commi si
usa la seguente sintassi
<!ELEMENT Articolo(Comma*)>

<!ELEMENT Articolo(Comma?)>

<!ELEMENT Articolo(Comma+)>

<!ELEMENT Articolo(Comma|Rubrica)*>

6. La seguente espressione contenuta in un DTD di documenti normativi:

<!ATTLIST Articolo Numero CDATA #REQUIRED> implica che Numero è un attributo dell'elemento
Articolo ed è obbligatorio

Vero
Falso

7. Le entità sono l'equivalente delle nei linguaggi di programmazione

8. Un documento XML che è conforme alle regole del proprio DTD è detto valido. Sul controllo di
validità per i documenti XML si può affermare che:

Se un documento è ben formato è anche un documento valido

I web browser controllano la condizione di well formed ma non quella di validità

I programmi per la creazione di documenti XML, ossia gli editori XML, controllano la validità del
documento che si sta componendo

Se un documento è valido allora è facile trasformarlo in un documento HTML

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLquiz0302.html [12/10/2001 10.20.58]


4. Fogli di stile

4. Fogli di stile

In questa lezione apprenderai:


● cos'è un foglio di stile

● cos'è un foglio di stile CSS

● cos'è un foglio di stile XSL

● le principali differenze tra i fogli CSS e XSL

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso04Fogli.html [12/10/2001 10.20.58]


4. Fogli di stile - Introduzione

4. Fogli di stile - Introduzione (1 di 2)

Un foglio di stile è un documento separato che contiene regole di formattazione e visualizzazione per un documento
XML o HTML.
● Quale è il vantaggio di separare lo stile dai contenuti?
Un foglio di stile può essere utilizzato per controllare molti documenti contemporaneamente e quindi permette di
applicare modifiche di formattazione in modo veloce ed accurato intervenendo soltanto nel documento che contiene le
regole di visualizzazione.

In un foglio di stile sono specificate tutte le regole di formattazione che verranno applicate ai documenti di un intero
sito Web.

Nella gestione di un sito Web complesso, ad esempio, è possibile personalizzare i punti degli elenchi, o impostare
diverse dimensioni di carattere semplicemente modificando il foglio di stile invece che tutte le pagine del sito.

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0401A.html [12/10/2001 10.20.59]


4. Fogli di stile - Fondamenti

4. Fogli di stile - Introduzione (2 di 2)

Esistono due tipi di fogli di stile:


● i fogli di stile CSS (Cascading Style Sheets);
● i fogli di stile XSL (eXtensible Stylesheet Language)
I fogli di stile CSS applicano le regole di formattazione direttamente al contenuto del documento per
creare i risultati desiderati e possono essere utilizzati sia con i documenti HTML sia con i documenti
XML.
I fogli di stile XSL eseguono invece una trasformazione del contenuto del documento e possono
essere usati solo con documenti XML.
Un'altra differenza significativa consiste nel fatto che i CSS contengono solo regole di formattazione,
mentre i fogli XSL contengono anche regole di trasformazione.
Nelle pagine successive vedremo, attraverso alcuni esempi, le differenze tra le due tecnologie.

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0401B.html [12/10/2001 10.20.59]


4. Fogli di stile - CSS

4. Fogli di stile - Cascading Style Sheet (1 di 4)

● Sintassi CSS
La sintassi dei fogli di stile CSS è costituita da tre parti: un selettore (tag), una proprietà e un valore:

selettore {proprietà: valore}


Il selettore è generalmente il tag su cui si vuole intervenire, la proprietà è l'attributo da cambiare, e ciascuna proprietà
può assumere un determinato valore. Ciascuna coppia "proprietà : valore" è separata dalla successiva dal carattere
punto e virgola (;) ed il tutto è racchiuso fra due parentesi graffe ({}).

Ad esempio, per un documento HTML possiamo scrivere:


p {text-align: center; color: black; font-family: arial}

Se un valore è costituito da più di una parola, deve essere racchiuso fra doppi apici:

p {font-family: "sans serif"}

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0402A.html [12/10/2001 10.21.00]


4. Fogli di stile - CSS

4. Fogli di stile - Cascading Style Sheet (2 di 4)

● Raggruppamento
I selettori possono essere raggruppati fra di loro, separandoli con una virgola. Ad esempio, sempre per un documento
HTML, possiamo scrivere:

h1, h2, h3, h4, h5, h6 {color: green}

per avere dello stesso colore i tag di struttura da h1 a h6.


● L'attributo classe (class)
Per mezzo dell'attributo class si possono definire diversi stili per lo stesso elemento.
Supponiamo di volere, per un documento HTML, due tipi diversi di paragrafo: uno con allineamento a destra e l'altro
con allineamento centrato. Qui di seguito sono indicate le linee per la definizione del foglio di stile:

p.right {text-align: right}


p.center {text-align: center}

mentre qui sotto viene ilustrato come usare l'attributo class nel documento:
<p class="right">Questo è un paragrafo. Il testo in questo paragrafo sarà allineato a destra.</p>
<p class="center">Questo è un paragrafo. Il testo in questo paragrafo sarà centrato.</p>

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0402B.html [12/10/2001 10.21.00]


4. Fogli di stile - CSS

4. Fogli di stile - Cascading Style Sheet (3 di 4)

● L'attributo id
Con l'attributo id si può definire uno stile unico da usare con più elementi.
Di seguito viene indicata la riga per la definizione del foglio di stile:

#right {text-align: right}

Qui sotto si mostra come si deve usare l'attributo id nel documento:

<p id="right">Questo è un paragrafo. Il testo in questo paragrafo sarà allineato a destra.</p>


<h3 id="right">Questo è un titolo; anche questo titolo sarà allineato a destra.</h3>

L'attributo id deve avere un unico valore nel documento.

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0402C.html [12/10/2001 10.21.01]


4. Fogli di stile - CSS

4. Fogli di stile - Cascading Style Sheet (4 di 4)

Ecco un esempio di estratto di documento XML, con la relativa resa a video tramite l'ausilio di un foglio di stile

CSS.
<?xml version="1.0" encoding="iso-8859-1" ?>
<?xml-stylesheet href="esempio0402.css" type="text/css" ?>
<Legge>
<Intestazione>
<TipoLegge>Legge</TipoLegge>
<DataLegge>7 dicembre 2000</DataLegge>
<NumLegge>383</NumLegge>
<TitoloLegge>Disciplina delle associazioni di promozione sociale</TitoloLegge>
</Intestazione>
<Articolato>
<Capo>
<Num>Capo I<Num>
<Rubrica>DISPOSIZIONI GENERALI</Rubrica>
<Articolo>
<Num>Art. 1</Num>
<Rubrica>Finalità e oggetto della legge</Rubrica>
<Comma>
<Num>1</Num>
<Paragrafo><Testo>La Repubblica riconosce il valore sociale dell'associazionismo liberamente
costituito e delle sue molteplici attività come espressione di partecipazione, solidarietà e pluralismo;
ne promuove lo sviluppo in tutte le sue articolazioni territoriali, nella salvaguardia della sua
autonomia; favorisce il suo apporto originale al conseguimento di finalità di carattere sociale, civile,
culturale e di ricerca etica e spirituale.</Testo></Paragrafo>
</Comma>
</Articolo>
</Capo>
</Legge>

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0402D.html [12/10/2001 10.21.01]


4. Fogli di stile - XSL

4. Fogli di stile - eXtensible Stylesheet Language (1


di 9)

● Fondamenti
I fogli di stile XSL offrono lo stesso livello di formattazione e di flessibilità dei fogli di stile CSS, ma utilizzano metodi
diversi. XSL consiste di due parti:
● XSLT un linguaggio per la trasformazione di documenti XML
● XSL FO (Formatting Object) un linguaggio per la formattazione di documenti XML
Poiché un foglio di stile XSL è a sua volta un documento XML, deve iniziare con la dichiarazione <?xml
version="1.0"?>. Inoltre conterrà in sequenza le seguenti due righe:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">

La prima definisce l'inizio del foglio di stile, mentre la seconda definisce l'inizio di un modello (template), che individua
la parte di documento XML a cui applicare le regole di trasformazione. Tutti i tag che fanno parte di un documento XSL
iniziano con il suffisso "xsl:" e sono detti direttive.

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0403A.html [12/10/2001 10.21.01]


4. Fogli di stile - XSL

4. Fogli di stile - eXtensible Stylesheet Language (2


di 9)

● XSL è un linguaggio dichiarativo


XSL permette di elaborare i dati contenuti nel documento XML a cui è applicato ed ha, come caratteristica principale,
quella di poter programmare in modo dichiarativo e non procedurale. Questo significa che non è necessario elaborare
algoritmi per poter navigare tra i dati, trovare quelli desiderati e generare un documento opportuno in uscita. Si
procede invece i modo dichiarativo, ovvero decidendo quali elementi si vuole estrarre, specificando per ognuno di essi
un modo di visualizzazione, senza preoccuparsi di come estrarre i dati.
Sarà il parser , un programma incluso nei web browser, in grado di leggere un documento XML e navigare
attraverso il suo albero , ad occuparsi di estrarre i dati specificati e applicare gli stili indicati nel foglio XSL.
Quindi in XSL occorre specificare gli elementi a cui applicare un determinato stile di visualizzazione, e questa
operazione avviene attraverso la specifica di un modello (template) che permette al parser d'individuare gli elementi

richiesti e di applicarvi le trasformazioni corrispondenti.

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0403B.html [12/10/2001 10.21.02]


4. Fogli di stile - XSL

4. Fogli di stile - eXtensible Stylesheet Language (3


di 9)

● Modello (template)
XSL usa uno o più template per individuare un elemento o un gruppo di elementi del documento XML, per definire il
documento di uscita, attraverso la seguente sintassi

<xsl:template match="valore">

che permette di associare il template specificato con un elemento XML (specificando il valore "/" si associa il template
all'intero documento XML).

Nell'esempio seguente il template trasforma dinamicamente il documento XML in un documento HTML.

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<HTML>
<HEAD>
<TITLE> ... </TITLE>
</HEAD>
<BODY>
...
</xsl:template>
</xsl:stylesheet>

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0403C.html [12/10/2001 10.21.02]


4. Fogli di stile - XSL

4. Fogli di stile - eXtensible Stylesheet Language (4


di 9)

● <xsl:apply-templates>
Un tag molto usato è <xsl:apply-templates />; ad esempio, con il modello abbinato alla radice si può scrivere:

<xsl:template match="/">
<xsl:apply-templates />
</xsl:template>

Il tag <xsl:apply-templates/> indica al parser di continuare a scandire il documento XSL alla ricerca di altri modelli
da applicare ai nodi sottostanti, ovvero i nodi figli.

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0403D.html [12/10/2001 10.21.02]


4. Fogli di stile - XSL

4. Fogli di stile - eXtensible Stylesheet Language (5


di 9)

● <xsl:value-of>
La direttiva XSL più importante per l'estrazione dei dati da un file XML è la direttiva xsl:value-of. Una volta che tale
direttiva è applicata ad un certo nodo, se questo contiene altri nodi, il parser li esplicita comunque restituendone il
contenuto, separandolo con spazi. Anche la direttiva xsl:value-of è in grado di utilizzare i template per permetterci di
specificare, in modo più preciso, quali dati vogliamo estrarre attraverso l'attributo non obbligatorio select.

Questa sintassi viene usata per selezionare gli elementi del documento XML da sottoporre alla trasformazione XSL. Ad
esempio:

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<HTML>
<HEAD>
<TITLE><xsl:value-of select="Legge/TitoloLegge"/></TITLE>
</HEAD>
<BODY>
...
</xsl:template>
</xsl:stylesheet>

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0403E.html [12/10/2001 10.21.03]


4. Fogli di stile - XSL

4. Fogli di stile - eXtensible Stylesheet Language (6


di 9)

● <xsl:for-each select="condizione">
Questa direttiva viene usata per selezionare ogni elemento del documento XML che verifica la condizione specificata
dalla select.

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<HTML>
<HEAD>
<TITLE><xsl:value-of select="Legge/TitoloLegge"/></TITLE>
</HEAD>
<BODY>
...
<xsl:for-each select="Legge/Articolato/Articolo">
<p align="center"><B><font color="#008080">Art. <xsl:value-of select="Num"/><BR/>
<xsl:value-of select="Rubrica"/></font></B></p>
...
</xsl:for-each>
...
</xsl:template>
</xsl:stylesheet>

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0403F.html [12/10/2001 10.21.03]


4. Fogli di stile - XSL

4. Fogli di stile - eXtensible Stylesheet Language (7


di 9)

● Elaborazione degli attributi


I fogli di stile XSL permettono anche di gestire, in maniera potente e flessibile, gli attributi degli elementi XML,
facendo precedere il nome dell'attributo dal simbolo "@".

Esempio di foglio di stile XSL con elaborazione di attributi:

<xsl:template match="/">
<!--Apply template to everything starting from the root node-->
<HTML>
<HEAD>
<TITLE>Legge n. <xsl:value-of select="Legge/Intestazione/@NumeroLegge"/> del <xsl:value-of
select="Legge/Intestazione/Data"/></TITLE>
</HEAD>
<BODY>

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0403G.html [12/10/2001 10.21.03]


4. Fogli di stile - XSL

4. Fogli di stile - eXtensible Stylesheet Language (8


di 9)

Nella tabella seguente vengono indicati i principali elementi XSL che possono essere specificati:
Elemento XSL Descrizione
xsl:apply-templates Indica all’elaboratore XSL di cercare il modello corretto da
applicare, in base al template specificato.
xsl:choose Consente di eseguire test condizionali. Questo elemento viene
utilizzato in combinazione con gli elementi xsl:otherwise e
xsl:when.
xsl:element Genera un elemento nel documento di uscita con il nome
specificato.
xsl:for-each Applica lo stesso modello a più nodi del documento.
xsl:if Consente test condizionali in un modello.
xsl:node-name Inserisce il nome del nodo corrente nel documento di uscita,
come stringa di testo.
xsl:otherwise Consente di eseguire test condizionali. Questo elemento viene
utilizzato in combinazione con gli elementi xsl:choose e
xsl:when.
xsl:stylesheet Definisce l’insieme di modelli che vengono applicati alla
struttura del documento di origine per generare il documento di
output.
xsl:template Definisce un modello per l’output basato su un template
specifico.
xsl:value-of Valuta un template XSL specificato nell’attributo select e
restituisce il valore del nodo identificato come testo, che verrà
poi inserito nel modello.
xsl:when Consente di eseguire test condizionali. Questo elemento viene
utilizzato in combinazione con gli elementi xsl:choose e
xsl:otherwise.

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0403H.html [12/10/2001 10.21.04]


4. Fogli di stile - XSL

4. Fogli di stile - eXtensible Stylesheet Language (9


di 9)

Ecco un esempio di estratto di documento XML, con la relativa resa a video tramite l'ausilio di un foglio di stile XSL.

<?xml version="1.0" encoding="iso-8859-1" ?>


<?xml-stylesheet href="esempio0403.xsl" type="text/css" ?>
<Legge>
<Intestazione NumLegge="383">
<TipoLegge>Legge</TipoLegge>
<DataLegge>7 dicembre 2000</DataLegge>
<TitoloLegge>Disciplina delle associazioni di promozione sociale</TitoloLegge>
</Intestazione>
<Articolato>
<Capo Num="I">
<Rubrica>DISPOSIZIONI GENERALI</Rubrica>
<Articolo Num="1">
<Rubrica>Finalità e oggetto della legge</Rubrica>
<Comma Num="1">
<Paragrafo><Testo>La Repubblica riconosce il valore sociale dell'associazionismo liberamente
costituito e delle sue molteplici attività come espressione di partecipazione, solidarietà e pluralismo;
ne promuove lo sviluppo in tutte le sue articolazioni territoriali, nella salvaguardia della sua
autonomia; favorisce il suo apporto originale al conseguimento di finalità di carattere sociale, civile,
culturale e di ricerca etica e spirituale.</Testo></Paragrafo>
</Comma>
...
</Articolo>
</Capo>
</Legge>

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0403I.html [12/10/2001 10.21.04]


4. Fogli di stile - Sommario

4. Fogli di stile - Sommario

In questa lezione abbiamo appreso:


● cos'è un foglio di stile
● cos'è un foglio di stile CSS
● cos'è un foglio di stile XSL
● le principali differenze tra i fogli di stile CSS e XSL
... passi successivi:

la prossima lezione sarà dedicata ai collegamenti nei documenti XML.

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso04Sommario.html [12/10/2001 10.21.04]


Fogli di stile - Esericizi Gruppo I

4. Fogli di stile - Esercizi gruppo I

1. XML mantiene separate la struttura del documento dalle regole per la sua visualizzazione, quindi si
può affermare che:

questa caratteristica rappresenta un vantaggio perché lo stesso documento può essere


visualizzato in maniere diverse

questo crea confusione perché non si sa come visualizzare i dati

questa non è una caratteristica importante

questo è un punto di forza perché si possono filtrare i dati di un documento XML e inviare
all'applicazione che lo richiede solo i dati necessari e non tutti

2. I fogli di stile CSS e XSL sono equivalenti come flessibilità e potenza nel trattamento dei
documenti XML

Vero
Falso

3. La principale differenza tra i fogli di stile CSS e i fogli di stile XSL è:


i fogli di stile CSS si applicano solo ai documenti HTML, mentre i fogli di stile XSL solo ai
documenti XML
i fogli di stile CSS applicano delle formattazioni al documento XML, mentre i fogli XSL sono in
grado anche di imporre regole di trasformazione del documento originale
i fogli di stile CSS sono un linguaggio procedurale, mentre i fogli di stile XSL sono un linguaggio
dichiarativo
non c'è una sostanziale differenza: l'uso di uno dei due è solo una questione di gusto

4. I fogli di stile XSL permettono di trasformare un documento XML in un documento HTML oppure in
un altro documento XML

Vero
Falso

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLquiz0401.html [12/10/2001 10.21.05]


Fogli di stile - Esericizi Gruppo II

4. Fogli di stile - Esercizi gruppo II

5. XSL usa uno o più per individuare un elemento o un gruppo di elementi del
documento XML di origine e per definire il documento XML di uscita

6. Con un foglio di stile XSL è possibile creare, a partire da un documento XML, un altro documento
XML ordinato secondo un certo elemento del documento originale

Vero
Falso

7. Nei fogli di stile XSL tramite il carattere si fa riferimento agli attributi di un


elemento XML

8. Attraverso un foglio di stile CSS che contenga la seguente sintassi delle classi

.bodyRed { background-color: red}

per ottenere il colore rosso come sfondo ad una pagina si deve scrivere:

<BODY BGCOLOR=body.red>

<BODY red>

<BODY class=bodyRed>

<BODY background=red>

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLquiz0402.html [12/10/2001 10.21.05]


5. XLL: i collegamenti in XML

5. XLL: i collegamenti in XML

In questa lezione apprenderai:


● come si gestiscono i collegamenti in XML
● i principi del linguaggio XML Linking Language (XLink)
● i principi del linguaggio XPointer

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso05Link.html [12/10/2001 10.21.06]


5. XLL - Introduzione

5. XLL: Fondamenti

XML è in grado di elaborare in maniera più efficace i collegamenti (link) tra i documenti sul Web, tramite
un'applicazione denominata XLink (XML Linking Language o XLL) e tramite un meccanismo che consente
collegamenti a strutture interne di un documento XML, denominato XPointer.

XLL permette di definire:


● link multidirezionali: si può, ad esempio, usare un link per andare da un documento sorgente ad
un documento di destinazione e usare lo stesso link per il percorso opposto (destinazione -
sorgente);
● link a destinazione multipla: un link può attivare il collegamento a più documenti di
destinazione;
● link ad effetto multiplo: la risorsa collegata può sostituire il documento attivo, oppure può
essere visualizzata in una nuova finestra, oppure inserita direttamente nel documento attivo;
● link ad attivazione multipla: il collegamento può essere attivato in seguito all'azione dell'utente,
oppure in maniera automatica quando viene intercettato dall'applicazione.

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0501.html [12/10/2001 10.21.06]


5. XLL: Collegamenti semplici

5. XLL: Collegamenti semplici (1 di 3)

I collegamenti XML dovrebbero essere più opportunamente considerati delle risorse di connessione. Ciò significa che
l'XLink è in grado di fornire il collegamento a qualunque risorsa raggiungibile tramite un localizzatore nell’elemento di
collegamento. XLink fornisce una sintassi sofisticata per la definizione degli elementi e del comportamento dei
collegamenti, come, ad esempio, la capacità per un collegamento di funzionare in più direzioni.

Come nell’HTML, un collegamento XML semplice ha un solo identificatore di risorsa, o localizzatore. Il localizzatore, ad
esempio l’attributo HREF nell’elemento Anchor (<A...>), contiene i dati relativi al collegamento. Nell’XLink, tutte le
informazioni sul localizzatore sono contenute all’interno dell’elemento di collegamento. Pertanto, l’applicazione di
elaborazione non avrà bisogno di recuperare altre informazioni sul localizzatore.

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0502A.html [12/10/2001 10.21.06]


5. XLL: Collegamenti semplici

5. XLL: Collegamenti semplici (2 di 3)

La creazione di un elemento di collegamento semplice nell’XML comporta maggiori difficoltà rispetto alla creazione di
un elemento Anchor e all’assegnazione di un valore HREF. XML è un metalinguaggio, pertanto la creazione di un
nuovo elemento che possa essere utilizzato in un documento richiede la dichiarazione dell’elemento stesso e di tutti i
relativi attributi. Gli sviluppatori di XLink hanno riservato un nome di attributo per riconoscere un elemento
contenente quell'attributo come elemento di collegamento. Il nome dell'attributo è xlink:type. In un documento XML è
possibile definire un elemento <Riferimento> che conterrà una risorsa di collegamento semplice:

<!ELEMENT Riferimento (#PCDATA)>


<!ATTLIST Riferimento
xlink:type CDATA #FIXED "simple"
xlink:href CDATA #REQUIRED
xlink:inline (true|false) "true"
xlink:role CDATA #IMPLIED
xlink:title CDATA #IMPLIED
xlink:show (replace|new|embed) #IMPLIED
xlink:actuate (onLoad|onRequest) #IMPLIED
xlink:behavior CDATA #IMPLIED
xlink:content-role CDATA#IMPLIED
xlink:content-title CDATA #IMPLIED>

Ecco un esempio di estratto di documento XML, con la presenza di link semplici.

<?xml version="1.0" encoding="iso-8859-1" ?>


<?xml-stylesheet href="esempio0403.xsl" type="text/css" ?>
<Legge xmlns:xlink="http://www.w3.org/1999/xlink">
<Intestazione NumLegge="383">
<TipoLegge>Legge</TipoLegge>
<DataLegge>7 dicembre 2000</DataLegge>
<TitoloLegge>Disciplina delle associazioni di promozione sociale</TitoloLegge>
</Intestazione>
<Articolato>
<Capo Num="I">
<Rubrica>DISPOSIZIONI GENERALI</Rubrica>
<Articolo Num="1">
<Rubrica>Finalità e oggetto della legge</Rubrica>
...
<Comma Num="2">
<Paragrafo><Testo>La presente legge, in attuazione degli <Riferimento Tipo="Esterno" xlink:href=
(*) xlink:show="new" xlink:actuate="onRequest">articoli 2</Riferimento> ... della Costituzione, ...
</Testo></Paragrafo>
</Comma>

</Articolo>
</Capo>
</Legge>
dove (*) è il collegamento alla risorsa articolo 2 della Costituzione.

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0502B.html [12/10/2001 10.21.07]


5. XLL: Collegamenti semplici

5. XLL: Collegamenti semplici (3 di 3)

Vediamo il significato dei principali attributi che caratterizzano un collegamento:


href
Questo attributo conterrà il valore univoco della risorsa di collegamento, analogo al valore specificato in HTML
show
Questo attributo accetta come valori replace, new ed embed che descrivono il modo in cui il collegamento dovrà
funzionare. Il valore replace indica che la risorsa locale verrà sostituita dalla risorsa di collegamento (questa è la
tecnica di solito usata nei collegamento HTML). Il valore new specifica che la risorsa di destinazione deve essere
aperta in un nuovo contesto ed equivale all'uso dell'attributo target= in HTML. Il valore embed indica che il contenuto
della risorsa di destinazone viene incorporato nel contenuto della risorsa di origine
actuate
Questo attributo può accettare il valore onLoad o onRequest. Il valore onLoad indica che il collegamento deve essere
attivato automaticamente quando il collegamento viene elaborato dall’applicazione. Il valore onRequest specifica che il
collegamento stesso deve essere attivato da un meccanismo esterno, ad esempio un click del mouse.
Combinando l’attributo show=embed con l’attributo actuate=auto è possibile creare un documento contenente molti
collegamenti incorporati. Quando un utente apre il documento, tutti i collegamenti vengono automaticamente attivati
e incorporati direttamente nel documento. Il documento composto che ne deriva contiene informazioni raccolte da
varie origini invisibili all’utente

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0502C.html [12/10/2001 10.21.07]


5. XLL - Collegamenti estesi

5. XLL: Collegamenti estesi (1 di 2)

L’utilizzo di collegamenti estesi consente di definire gruppi di possibili destinazioni da un’unica


origine. I collegamenti estesi forniscono tutte le informazioni necessarie per consentire i collegamenti
multipli.
Vediamo un esempio di collegamento esteso:
<!ELEMENT Riferimento (ELocator+)>
<!ATTLIST Riferimento
xlink:type CDATA #FIXED "extended"
xlink:inline (true|false) "true"
xlink:role CDATA #IMPLIED
xlink:title CDATA #IMPLIED
xlink:show (replace|new|embed) #IMPLIED
xlink:actuate (onLoad|onRequest) #IMPLIED
xlink:behavior CDATA #IMPLIED
xlink:content-role CDATA#IMPLIED
xlink:content-title CDATA #IMPLIED>

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0503A.html [12/10/2001 10.21.07]


5. XLL - Collegamenti estesi

5. XLL: Collegamenti estesi (2 di 2)

Il codice è simile alla dichiarazione del collegamento semplice, ma in questo caso l’attributo xlink:type contiene il
valore extended anziché simple, poiché si tratta di un collegamento esteso, e non vi sono attributi xlink:href dichiarati,
in quanto con i collegamenti estesi i localizzatori devono essere contenuti in un insieme separato di elementi. Questi
elementi vengono identificati come localizzatori. L’utilizzo di questo metodo per la definizione dei localizzatori consente
di specificare più localizzatori per un solo elemento di collegamento. Non diversamente da altri elementi, anche il
localizzatore deve essere dichiarato.
L’attributo xlink:type deve avere valore locator per identificare questo elemento come localizzatore XLink; inoltre deve
essere specificato l’attributo xlink:href.

Ecco un esempio di dichiarazione di localizzatore:


<!ELEMENT ELocator ANY>
<!ATTLIST ELocator
xlink:type CDATA #FIXED "locator"
xlink:href CDATA #REQUIRED
xlink:inline (true|false) "true"
xlink:role CDATA #IMPLIED
xlink:title CDATA #IMPLIED
xlink:show (replace|new|embed) #IMPLIED
xlink:actuate (onLoad|onRequest) #IMPLIED
xlink:behavior CDATA #IMPLIED>

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0503B.html [12/10/2001 10.21.07]


5. XLL - Xpointer

5. XLL: XPointer (1 di 2)

Un altro linguaggio basato sull’XML è l’XPointer che consente di ottenere collegamenti ancora più precisi all’interno di
documenti XML.

L’obiettivo principale di XPointer è quello di fornire un metodo d'indirizzamento alla struttura interna di un documento
XML. Nelle lezioni precedenti, abbiamo visto che l'unico modo per poter referenziare un elemento specifico di un
documento è quello di associare un attributo di tipo ID all'elemento stesso. Il linguaggio XPointer è stato sviluppato in
modo da fare riferimento alle strutture interne di un documento, sia che includano sia che non includano attributi ID.

L'azione di XPointer opera sugli elementi e sulle strutture che costituiscono il documento XML. Un elemento XPointer
contiene una serie di termini di localizzazione che specifica una posizione nella struttura ad albero del documento.
I termini di localizzazione utilizzano la seguente sintassi:

HREF="uri#Xpointer"
HREF="uri|Xpointer"

Utilizzando il simbolo # si indica che la parte client deve elaborare la connessione; mentre utilizzando il | il
meccanismo della connessione rimane aperto e quindi il collegamento può essere gestito dal server .

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0504A.html [12/10/2001 10.21.08]


5. XLL - Xpointer

5. XLL: XPointer (2 di 2)

Ogni termine di localizzazione utilizza una parola chiave e può contenere degli argomenti. La parola chiave specifica
l’origine di localizzazione, ad esempio Root o Id, che indica a XPointer dove iniziare. Gli argomenti forniscono ulteriori
informazioni sul percorso che XPointer dovrà compiere all’interno dell’origine.

Un esempio di termine di localizzazione è il seguente:

Child(2,Comma)

in cui viene indicato il secondo elemento Comma tra gli elementi secondari correnti.
I termini di localizzazione possono essere associati a posizioni assolute, posizioni relative, posizioni di attributi o
posizioni di stringhe.

Per approfondimenti sull'argomento, che esulano dagli scopi di questo corso, si può consultare la sezione del sito del
Consorzio W3C relativa a XPointer.

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0504B.html [12/10/2001 10.21.08]


5. XLL - Sommario

5. XLL: Sommario

In questa lezione abbiamo appreso:


● il linguaggio Xlink
● i collegamenti semplici ed estesi
● il linguaggio XPointer
... passi successivi:

la prossima lezione sarà dedicata all'interfaccia DOM per l'elaborazione dei documenti XML.

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso05Sommario.html [12/10/2001 10.21.08]


XLL- Esericizi Gruppo I

5. XLL - Esercizi gruppo I

1. XML è in grado, attraverso altre tecnologie associate, di elaborare collegamenti (link)


multidirezionali tra i documenti sul Web

Vero
Falso
2. XML gestisce i collegamenti fra i documenti sul Web attraverso i linguaggi Xlink e

3. Per la creazione di un elemento di collegamento semplice in XML, gli sviluppatori dell’XLink hanno
riservato
un nome di elemento in modo da riconoscerlo come elemento di collegamento ad un'altra risorsa

un valore di attributo per riconoscere un elemento, contenente quell'attributo, come elemento di


collegamento
un nome di attributo per riconoscere un elemento, contenente quell'attributo, come elemento di
collegamento
hanno lasciato libero ogni autore di scegliere il nome dell'elemento e il nome dell'attributo

4. Combinando l’attributo SHOW=embed con l’attributo ACTUATE=auto di un elemento di


collegamento è possibile creare un documento contenente molti collegamenti incorporati.

Vero
Falso

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLquiz0501.html [12/10/2001 10.21.09]


6. DOM

6. DOM - Document Object Model

In questa lezione apprenderai:


● cos'è il Document Object Model (DOM)
● come si usa l'interfaccia DOM per accedere e manipolare documenti XML
● i principali oggetti, proprietà e metodi specificati dal DOM

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso06DOM.html [12/10/2001 10.21.09]


6. DOM - Introduzione

6. DOM - Fondamenti

Il Document Object Model (DOM) è una raccomandazione del W3C che definisce le interfacce, le proprietà e i metodi
per manipolare documenti XML; con XML DOM un programmatore può creare un documento XML, navigare all'interno
della sua struttura, aggiungere, modificare o eliminare i suoi elementi. Il DOM rappresenta una vista dell'albero del
documento XML, in cui ogni elemento dell'albero è considerato un nodo (oggetto) e ad ogni nodo sono associate
proprietà e metodi (funzioni). Ogni nodo contiene l'informazione attualmente contenuta nel documento. Tra i principali
oggetti definiti in DOM possiamo elencare i seguenti:

documentElement rappresenta il livello più alto dell'albero, ossia la radice


childNodes rappresenta, quando ci sono, gi altri nodi dell'albero
nodo individuale accessibile attraverso un indice della lista
item
childNodes
text testo contenuto nel nodo

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0601.html [12/10/2001 10.21.09]


6. DOM - Parser XML

6. DOM - Parser XML

Un programma detto parser XML, incluso nei web browser, viene utilizzato per caricare in memoria un
documento XML e, una volta caricato in memoria, permette di manipolarlo ed estrarre le informazioni in esso
contenute accedendo ad esso tramite l'interfaccia DOM.

Il parser XML di Microsoft©, incluso nel browser Internet Explorer, supporta tutte le funzioni necessarie per
attraversare i nodi dell'albero , accedere ai valori dei nodi, agli attributi, inserire e cancellare i nodi.

Utilizzando il linguaggio JavaScript si può caricare un documento XML tramite il seguente codice:
<script language="JavaScript">
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async = false
xmlDoc.load("Esempio.xml")
// ... elaborazione documento XML caricato in memoria
</script>

La prima linea di codice crea un'istanza del parser XML, la seconda linea assicura che il parser interrompa l'esecuzione
fino a quando il documento non sarà completamente caricato in memoria, con la terza linea il parser apre il
documento Esempio.xml.

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0602.html [12/10/2001 10.21.10]


6. DOM - Parser XML

6. DOM - Errori del parser

Si usa l'oggetto parseError (che non fa parte delle specifiche DOM) per estrarre informazioni sull'eventuale errore
rilevato dal parser XML di Internet Explorer.
Con il codice a sinistra possiamo controllare se il documento Esempio.xml è ben formato:
esempio di codice esempio interattivo
var xmlDoc = new
ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async = false <?xml version="1.0" ?>
xmlDoc.load("Esempio.xml") <Legge>
if (xmlDoc.parseError.errorCode != 0) { <DataLegge>7 dicembre
document.write("<br>Error code: ") 2000</Datalegge>
document.write(xmlDoc.parseError.errorCode) <TitoloLegge>Disciplina delle
document.write("<br>Error reason: ") associazioni di promozione
document.write(xmlDoc.parseError.reason) sociale</TitoloLegge>
document.write("<br>Error line: ") <NumeroLegge>383</NumeroLegge
document.write(xmlDoc.parseError.line) >
}

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0603.html [12/10/2001 10.21.10]


6. DOM - Attraversamento dell'albero XML

6. DOM - Attraversamento dell'albero XML

Un modo comune di estrarre gli elementi da un documento XML è quello di attraversare i nodi dell'albero e di
estrarre il valore di ogni elemento.
Con il codice a sinistra possiamo attraversare l'albero di un documento XML; a destra, tramite la finestra di testo e il
bottone "VediAlbero", possiamo verificarne il risultato interattivamente:
esempio di codice esempio interattivo
var xmlDoc = new
ActiveXObject("Microsoft.XMLDOM")

var txt="" <?xml version="1.0" ?>


xmlDoc.async = false <Legge>
xmlDoc.load("Esempio.xml") <DataLegge>7 dicembre
for each x in xmlDoc.documentElement.childNodes 2000</DataLegge>
txt = x.nodename + ": " + x.text <TitoloLegge>Disciplina delle
document.write(txt) associazioni di promozione
next sociale</TitoloLegge>
<NumeroLegge>383</NumeroLegge
>

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0604.html [12/10/2001 10.21.10]


6. DOM - Oggetto Node

6. DOM - Oggetto node (1 di 3)

L'oggetto node rappresenta un qualsiasi nodo nell'albero del documento XML, ed è caratterizzato da quattro
proprietà principali :
nodeType: contiene il tipo di nodo
nodeTypeString : contiene la descrizione esplicita del tipo di nodo
nodeName: contiene il nome del nodo
nodeValue: contiene il valore associato al nodo

Nella tabella successiva sono rappresentati i valori delle principali proprietà in base ad alcuni valori della proprietà
nodeType:
nodeType nodeTypeString nodeName nodeValue
1 element tagName null
2 attribute name value
3 text #text contenuto del nodo
4 cdatasection #cdatasection contenuto del nodo

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0605A.html [12/10/2001 10.21.11]


6. DOM - Oggetto Node

6. DOM - Oggetto node (2 di 3)

Tutti i nodi sono caratterizzati da proprietà e metodi; nelle tabelle successive sono indicate le principali proprietà e i
principali metodi:
proprietà descrizione
childNodes rappresenta la lista di tutti i nodi figli
firstChild rappresenta il primo figlio
lastChild rappresenta l'ultimo figlio
rappresenta il nome, secondo la tipologia del
nodeName
nodo stesso
rappresenta il valore, secondo la tipologia del
nodeValue
nodo stesso
parentNode rappresenta il nodo genitore
metodo descrizione
aggiunge
newChild
appendChild(newChild)
come un
nodo figlio
restituisce
il valore
booleano
hasChildNodes()
Vero se il
nodo ha
figli
inserisce
un nuovo
nodo,
insertBefore(newNode,
newNode,
refNode)
prima del
nodo
refNode
elimina il
removeChild(nodeName) nodo
specificato
sostituisce
replaceChild(newNode, oldNode
oldNode) con
newNode

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0605B.html [12/10/2001 10.21.11]


6. DOM - Oggetto Node

6. DOM - Oggetto node (3 di 3)

Quando si usa la proprietà childNodes dell'oggetto node, si ottiene l'oggetto NodeList che rappresenta la lista dei nodi
figli. Questo oggetto è caratterizzato da:

length proprietà che contiene il numero di nodi della lista


item metodo che restituisce come risultato uno specifico nodo della lista

Ad esempio, con il seguente codice JavaScript si possono ottenere i nomi degli elementi e dei relativi valori di un
documento XML:

var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")


xmlDoc.async = "false"
xmlDoc.load("Legge.xml")

for (var i=0; i < xmlDoc.documentElement.childNodes.length; i++) {


x = xmlDoc.documentElement.childNodes[i];
document.write (x.nodeName)
document.write(":")
document.write(x.text)
}

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0605C.html [12/10/2001 10.21.11]


6. DOM - Oggetto Document

6. DOM - Oggetto document

L'oggetto document rappresenta l'elemento radice dell'albero dei nodi. Le proprietà e i metodi principali sono
proprietà descrizione
documentElement contiene l'elemento radice del documento
docType contiene il DTD o lo Schema del documento

metodo descrizione
createElement(tagName) crea un elemento con il tagName specificato
crea un nodo attributo con il nome attributo
createAttribute(attributeName)
specificato
Ad esempio, con il
seguente codice JavaScript si può estrarre il nome del tag radice di un documento XML:
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async = "false"
xmlDoc.load("Legge.xml")

alert (xmlDoc.documentElement.nodeName)

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0606.html [12/10/2001 10.21.12]


6. DOM - Oggetto Element

6. DOM - Oggetto element

L'oggetto element rappresenta gli elementi del documento. Le proprietà e i metodi principali sono
proprietà descrizione
contiene il nome del nodo e può essere usata
tagName
anche per impostarne un nuovo valore

metodo descrizione
restituisce come risultato il valore
getAttribute(attributeName)
dell'attributo specificato
restituisce come risultato il nodo
getElementsByTagName(tagName) specificato e tutti i nodi figli come un
oggetto nodeList
setAttribute(attributeName, inserisce un nuovo attributo con il valore
attributeValue) specificato

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0607.html [12/10/2001 10.21.12]


6. DOM - Altri oggetti

6. DOM - Altri oggetti

L'albero di un documento XML può essere letto e manipolato anche attraverso altri oggetti definiti nel DOM:
● oggetto Attr
● oggetto Text
Ognuno di questi oggetti è dotato di molte proprietà e metodi che permettono di ottenere un sistema potente e
flessibile per l'accesso e l'elaborazione dei nodi che compongono l'albero di un documento XML.

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0608.html [12/10/2001 10.21.12]


6. DOM- Sommario

6. DOM - Sommario

In questa lezione abbiamo appreso:


● l'interfaccia DOM
● come avviene l'accesso e la manipolazione dei nodi dell'albero XML tramite il DOM
● le principali proprietà e principali metodi degli oggetti DOM
... passi successivi:

la prossima lezione sarà dedicata all'analisi del DTD per i documenti normativi elaborato nell'ambito del progetto
Norme In Rete.

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso06Sommario.html [12/10/2001 10.21.12]


XLL- Esericizi Gruppo I

6. DOM - Esercizi gruppo I

1. Il Document Object Model (DOM) è una raccomandazione del W3C che:

prevede l'uso di un particolare linguaggio di programmazione per l'accesso a documenti XML

definisce le interfacce, le proprietà e i metodi per manipolare documenti XML

permette di gestire documenti XML con fogli di stile XSL

definisce l'algoritmo per manipolare documenti XML

2. La proprietà documentElement dell'oggetto Document rappresenta la radice del documento XML

Vero
Falso

3. Un programma detto incluso nei web browser , viene utilizzato per caricare
in memoria un documento XML e, una volta caricato in memoria, permette di manipolarlo ed estrarre
le informazioni in esso contenute accedendo ad esso tramite l'interfaccia DOM.

4. Il seguente codice JavaScript:

for (var i=0; i < xmlDoc.documentElement.childNodes.length; i++) {

x = xmlDoc.documentElement.childNodes[i];

document.write (x.nodeName)

document.write(":")

document.write(x.text)

}
permette di visualizzare il valore di ogni elemento attraversando l'albero XML dalla radice

permette solo di elencare i nodi figli della radice

permette di visualizzare i tipi di nodo dell'albero XML

permette solo di visualizzare i nomi degli elementi XML contenuti nel documento

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLquiz0601.html [12/10/2001 10.21.13]


DOM - Esericizi Gruppo II

6. DOM - Esercizi gruppo II

5. Document, Element e Node, sono oggetti previsti dall'interfaccia DOM

Vero
Falso

6. Per scrivere un'applicazione che sia conforme alle specifiche del DOM è necessario che

il programma permetta di accedere all'albero XML di ogni documento

il programma fornisca l'accesso e la manipolazione di documenti XML mettendo a disposizione


tutti gli oggetti con relative proprietà e metodi, previsti dal DOM
il programma permetta la lettura e la scrittura di documenti XML

il programma fornisca l'accesso e la manipolazione di documenti XML mettendo a disposizione


tutti gli oggetti con relative proprietà e metodi, previsti dal DOM, anche utilizzando nomi diversi per
oggetti, proprietà e metodi

7. Se si utilizza un programma coerente con le specifiche DOM si hanno i seguenti vantaggi:

non si deve conoscere la codifica interna dei programmi realizzati, ma semplicemente si


conoscono in anticipo quali metodi chiamare e quali proprietà usare per accedere e manipolare
documenti XML

si semplifica lo scambio di documenti XML

si può essere certi di creare documenti XML validi

indipendentemente dal linguaggio utilizzato si possono usare gli oggetti, i metodi e le proprietà
specificate nel DOM per gestire i documenti XML

8. L'interfaccia DOM prevede lo specifico oggetto parseError per la gestione degli errori di lettura di
documenti XML

Vero
Falso

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLquiz0602.html [12/10/2001 10.21.16]


7. Il DTD "normativo" di NIR

7. Il DTD "normativo" di NIR

In questa lezione potrai conoscere:


● le caratteristiche salienti della struttura formale dei documenti normativi
● il contenuto del DTD per i documenti normativi sviluppato nell'ambito del progetto Norme In
Rete

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso07NIR.html [12/10/2001 10.21.17]


7. Il DTD "normativo" di NIR - Introduzione

7. Il DTD "normativo" di NIR - Fondamenti

Nelle lezioni precedenti abbiamo visto quali sono le caratteristiche e le grandi potenzialità di XML e le tecnologie che
ruotano intorno a questo nuovo linguaggio di marcatura.

XML è stato scelto dal progetto Norme In Rete (NIR) come linguaggio per descrivere i documenti rilevanti per il
progetto stesso - documenti normativi, dottrinali e giurisprudenziali.
Lo studio di fattibilità - presentato nel gennaio del 2000 e condotto dall'Istituto per la Documentazione Giuridica del
CNR (IDG) - ha prodotto prototipi di DTD per tutte e tre le categorie di documenti. Nella seconda fase del progetto,
denominata NIR2, sono stati approfonditi gli studi sul DTD per i documenti normativi, che hanno portato - nell'ottobre
del 2000 - al rilascio di un nuovo e più completo DTD, che è a tutt'oggi in corso di sperimentazione.

Questa lezione tratta l'argomento in maniera generale, mentre nella lezione successiva lo stesso argomento sarà
trattato in modo più approfondito e dettagliato.

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0701A.html [12/10/2001 10.21.17]


7. Il DTD "normativo" di NIR - I documenti normativi

7. Il DTD "normativo" di NIR - I documenti normativi


(1 di 2)

La tecnica di redazione legislativa ha introdotto specifiche norme di ortografia, lessico, sintassi, stile e struttura per la
stesura di testi normativi. In Italia la raccolta più completa e più recente di tali norme è contenuta in "Regole e
suggerimenti per la redazione dei testi normativi" (conosciute come Manuale Rescigno), un documento redatto nel
1991. Il Parlamento e il Governo centrale seguono una circolare congiunta dei Presidenti del Consiglio, Camera e
Senato del 1986 che contiene regole e suggerimenti che coincidono con quelle del Manuale, anche se quest'ultimo ne
ha aggiunte di nuove.
Tali regole tendono a garantire certezza e uniformità, almeno formali, a tutte le norme. Per questo molti drafter e
anche alcuni legislatori si stanno adoperando perché esse siano adottate ufficialmente da tutti i produttori di norme.
Si può dire che, a partire dal 1986, i provvedimenti legislativi statali, sono sostanzialmente conformi alle regole di
redazione dettate dalla Circolare congiunta e che quelli regionali, a partire dal 1992/93, lo sono alle regole del
Manuale. Attualmente il Manuale è adottato ufficialmente da circa due terzi delle regioni italiane e seguito di fatto
dalle altre. Camera e Senato dispongono di uffici e servizi che verificano la conformità dei testi di disegni e proposte di
legge alla Circolare congiunta; altrettanto dovrebbero fare gli uffici legislativi (e anche gli altri uffici) dei ministeri per i
provvedimenti normativi dell'Esecutivo.
In generale, non si può avere una completa uniformità nella struttura di tutti gli atti normativi, e quindi gli sforzi sono
rivolti alla parte che riguarda l'articolato. Questo perché le parti al di fuori dell'articolato, nelle varie tipologie di
documenti normativi differiscono molto fra di loro a causa dell'autorità emittente. Citiamo, ad esempio, la presenza di
verbali fra le parti nei contratti collettivi, le varie formule di emanazione degli atti ufficiali, e ancora le formule finali.

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0702A.html [12/10/2001 10.21.18]


7. Il DTD "normativo" di NIR - I documenti normativi

7. Il DTD "normativo" di NIR - I documenti normativi


(2 di 2)

E' semplice capire perché è stato scelto il linguaggio XML per descrivere i documenti normativi.
I documenti normativi hanno:
● una struttura formale evidente e sistematica: le varie ripartizioni dell'articolato - libri, parti,
titoli, sezioni, articoli e commi - ne sono la prova;
● parti obbligatorie e facoltative: si pensi che, per esempio, la numerazione dei commi è diventata
"obbligatoria" solo dal 1986 e quindi nei documenti precedenti esistono commi non numerati;
● almeno nella parte dell'articolato, una struttura gerarchica, in quanto, per esempio, un comma
si trova all'interno di un articolo e non viceversa.
Nell'ambito del progetto NIR è stato costituito un gruppo di lavoro finalizzato alla realizzazione di un DTD per i
documenti normativi.

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0702B.html [12/10/2001 10.21.18]


7. Il DTD "normativo" di NIR - Panoramica sul DTD

7. Il DTD "normativo" di NIR - Panoramica sul DTD


(1 di 8)

Il gruppo di lavoro ha realizzato una serie di DTD per descrivere sia gli atti normativi che seguono le regole del
Manuale Rescigno, sia quelli redatti prima dell'adozione del Manuale e/o con struttura meno precisa e formalizzata.
● DTD strict e DTD loose
Poiché il Manuale Rescigno prevede vincoli stretti sulla struttura dell'articolato, è sorta la necessità di realizzare due
DTD, uno rigido, denominato strict, e l'altro flessibile, denominato loose, per poter descrivere le due categorie di
documenti.

DTD strict e DTD loose sono compatibili fra di loro: il DTD strict impone vincoli più rigidi alla struttura.

La compatibilità si esplicita nel fatto che un documento valido per il DTD strict è valido anche per il DTD loose.

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0703A.html [12/10/2001 10.21.18]


7. Il DTD "normativo" di NIR - Panoramica sul DTD

7. Il DTD "normativo" di NIR - Panoramica sul DTD


(2 di 8)

● Tre categorie di documenti


Entrambi i DTD, strict e loose, descrivono - con vincoli diversi - tre categorie di documenti per un totale di dodici tipi
di atti normativi.
Categoria articolati senza preambolo
- ne fanno parte: le leggi ordinarie, le leggi costituzionali e le leggi regionali
Categoria articolati con preambolo
- ne fanno parte: i decreti legge, i decreti legislativi, i decreti ministeriali, i decreti del Presidente della Repubblica e i
decreti del Presidente del Consiglio dei Ministri

Categoria semi-articolati (per tutti quei documenti non riconducibili ad articolati tradizionali, oppure con strutture
assimilabili all'articolato ma con differenze troppo nette)
- ne fanno parte: gli atti di Authority, i decreti ministeriali non numerati, i decreti del Presidente della Repubblica non
numerati e i decreti del Presidente del Consiglio dei Ministri non numerati

A parte, esistono quattro altri tipi "generici" di documenti che non rientrano in quelli sopra elencati.

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0703B.html [12/10/2001 10.21.18]


7. Il DTD "normativo" di NIR - Panoramica sul DTD

7. Il DTD "normativo" di NIR - Panoramica sul DTD


(3 di 8)

● Organizzazione del DTD


Come è stato già detto, si tratta di un gruppo di DTD e cioè il DTD è organizzato in sei documenti principali e in sette
accessori.

Le informazioni del DTD sono così ripartite nei sei documenti principali:
1. definizioni specifiche del DTD strict (strict.dtd);
2. definizioni specifiche del DTD loose (loose.dtd);
3. definizioni generiche comuni a tutti i DTD (globali.dtd);
4. definizioni di strutture normative (norme.dtd);
5. definizioni di strutture testuali, tabellari o modulari (testo.dtd);
6. definizioni di strutture per la gestione delle meta-informazioni (meta.dtd).

Le differenze si concentrano nei soli documenti strict.dtd e loose.dtd, mentre le definizioni contenute negli altri
documenti, e nei sette documenti accessori, sono utilizzate sia nel DTD strict sia nel DTD loose.

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0703C.html [12/10/2001 10.21.19]


7. Il DTD "normativo" di NIR - Panoramica sul DTD

7. Il DTD "normativo" di NIR - Panoramica sul DTD


(4 di 8)

● Elementi normativi
Il file norme.dtd contiene gli elementi della struttura formale di un atto normativo:
● intestazione
● formula iniziale (eventuale)
● preambolo (eventuale)
● articolato
● formula finale (eventuale)
● conclusione
● parte annesso (zero o più annessi)
L'aggettivo eventuale sta a significare la non obbligatorietà del relativo elemento.
Ciascuno degli elementi sopra citati ha sottoelementi appropriati (vedere Analisi del DTD di NIR). Per esempio,
l'elemento Comma, che si trova all'interno dell'elemento Articolato, può contenere un corpo di testo oppure un elenco
di elementi. Gli annessi possono essere blocchi di testo, tabelle, oppure interi documenti.

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0703D.html [12/10/2001 10.21.19]


7. Il DTD "normativo" di NIR - Panoramica sul DTD

7. Il DTD "normativo" di NIR - Panoramica sul DTD


(5 di 8)

● Elementi normativi (continua)


Sempre nello stesso documento, vengono definiti alcuni elementi speciali. Si tratta di elementi che
possono presentarsi ovunque sia presente del testo; permettono di specificare parti di un documento
normativo aventi un significato ben preciso.
Essi sono:
● riferimenti

● date

● luoghi

● atti

● enti

● soggetti

L'esigenza di avere questi elementi evidenziati all'interno delle parti testuali nasce per normalizzare
informazioni che il legislatore può scrivere in completa libertà. In questo modo si può pensare alla
realizzazione di applicazioni sofisticate di ricerca per rintracciare simili informazioni, altrimenti non
facilmente individuabili.

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0703E.html [12/10/2001 10.21.19]


7. Il DTD "normativo" di NIR - Panoramica sul DTD

7. Il DTD "normativo" di NIR - Panoramica sul DTD


(6 di 8)

● Elementi testuali, tabellari e modulari


Il documento testo.dtd contiene gli elementi testuali, tabellari e modulari.

Con gli elementi definiti in questo documento si possono descrivere tabelle e moduli - siano essi parte degli annessi o
del documento normativo vero e proprio; si può inoltre rimanere "fedeli" all'aspetto tipografico di un documento
normativo. Per esempio, si possono evidenziare le parole a cui il legislatore ha dato enfasi con un corsivo o un
grassetto riproducendo gli stessi effetti tipografici, oppure si può riprodurre la struttura di un preambolo con tutti gli a
capo necessari.

Per questi elementi - e per i loro attributi - sono stati usati nomi tratti dall'HTML: l'insieme è comunque più ridotto di
quello dell'HTML e soprattutto non si tratta di "veri" elementi HTML. Infatti sarà il foglio di stile, sia esso un foglio di
stile CSS sia esso un foglio di stile XSL, a rendere il contenuto dell'elemento "<h:b>" in grassetto.

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0703F.html [12/10/2001 10.21.20]


7. Il DTD "normativo" di NIR - Panoramica sul DTD

7. Il DTD "normativo" di NIR - Panoramica sul DTD


(7 di 8)

● Meta-informazioni
Il documento meta.dtd contiene le varie tipologie di meta-informazione associabili ad un documento normativo o a
una qualsiasi sua parte.

Nel documento vengono fornite la sintassi e l'organizzazione della meta-informazione, e vengono indicate alcune parti
standard all'interno del documento dove inserirla, nel caso si decida di inserirla non solo in testa al documento.

Qui di seguito diamo l'elenco, con breve descrizione, delle cinque tipologie di meta-informazioni previste.

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0703G.html [12/10/2001 10.21.20]


7. Il DTD "normativo" di NIR - Panoramica sul DTD

7. Il DTD "normativo" di NIR - Panoramica sul DTD


(8 di 8)

● Meta-informazioni (continua)
1. Dublin Core: si tratta di 15 elementi per la descrizione delle risorse di rete, presi direttamente dalle specifiche
del Dublin Core 1.1.;
2. lavori preparatori: si tratta di testo libero - in questa sezione possono essere incluse tutte le informazionni
relative alla fase preparatoria del testo;
3. commenti: sezione riservata a informazioni di natura libera sul testo, dai commenti degli studiosi ai riferimenti
di dottrina e di giurisprudenza di tipo redazionale, ecc.;
4. redazionale: spazio riservato alla redazione che pubblica il documento;
5. disposizioni: sezione per l'inserimento degli elementi della struttura funzionale del testo normativo.

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0703H.html [12/10/2001 10.21.20]


7. Il DTD "normativo" di NIR - Sommario

7. Il DTD "normativo" di NIR - Sommario

In questa lezione abbiamo appreso, in maniera generale:


● il DTD per i documenti normativi del progetto NIR
... passi successivi:
la prossima lezione è un'approfondimento di questa lezione: analizzeremo nei dettagli il DTD di NIR.

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso07Sommario.html [12/10/2001 10.21.20]


8. Analisi del DTD di NIR

8. Analisi del DTD di NIR

In questa lezione potrai approfondire:


● il contenuto del DTD per i documenti normativi sviluppata nell'ambito del progetto Norme In
Rete

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso08ApprofondimentoDTD.html [12/10/2001 10.21.21]


8. Analisi del DTD di NIR - Introduzione

8. Analisi del DTD di NIR - Fondamenti (1 di 2)

Come già detto nella lezione precedente, i DTD di NIR descrivono alcuni tipi di documento normativo.

Per ciascuno tipo di documento, sono dati un DTD descrittivo (loose), flessibile, ed uno prescrittivo (strict), più rigido.
In questo modo ogni documento, fra le tipologie previste, potrà essere strutturato sia che esso aderisca o no alle
regole di "buona scrittura" introdotte dal cosidetto Manuale Rescigno.

Le differenze fra i due DTD sono poche e specificate in maniera da essere facilmente modificabili (parametrizzate): le
regole di validità sono più o meno le stesse, cambiano alcuni vincoli.
Ricordiamo, ancora una volta, che ogni documento valido secondo il DTD prescrittivo è valido anche per il DTD
descrittivo.

Il DTD strict verrà usato in occasione della creazione di nuove norme, e per tutti quei documenti che rispettano le
indicazioni del Manuale; il DTD loose in ogni altra situazione.

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0801A.html [12/10/2001 10.21.21]


8. Analisi dell DTD di NIR - Introduzione

8. Analisi del DTD di NIR - Fondamenti (2 di 2)

Abbiamo già visto l'elenco dei dodici tipi di documenti normativi strutturabili con i DTD di NIR nel paragrafo
"Panoramica sul DTD" della lezione precedente, e come questi siano in realtà raggruppabili in tre classi: documento
articolato completo, documento articolato ridotto, documento semi-articolato.
Per marcare un documento normativo, occorre individuare quale dei due DTD - loose o strict - richiamare: la scelta
viene fatta in base al tipo di verifiche che si vogliono effettuare.

Se dobbiamo marcare una legge ordinaria - secondo le specifiche del DTD strict - il relativo documento XML dovrà
contenere le seguenti righe iniziali.

<?xml version="1.0" ?>


<!DOCTYPE leggeordinaria SYSTEM "nirstrict.dtd">
<leggeordinaria> ... </leggeordinaria>

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0801B.html [12/10/2001 10.21.21]


8. Approfondimento sul DTD di NIR - NameSpace

8. Analisi del DTD di NIR - NameSpace

Nel DTD si suppone l'esistenza di due namespace XML riservati agli elementi dei documenti di Norme in Rete:
● http://www.normeinrete.it/nir/1.0, pertinente alla struttura formale dei documenti normativi
● http://www.normeinrete.it/nir/disposizioni/1.0, pertinente alle meta-informazioni.

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0802A.html [12/10/2001 10.21.21]


8. Approfondimento sul DTD di NIR - I file nirloose.dtd e nirstrict.dtd

8. Analisi del DTD di NIR - nirloose.dtd e nirstrict.dtd


(1 di 3)

I due documenti sono molto simili: vi si trovano definite - dapprima - le entità che li differenziano, quindi vengono le
righe in cui si effettua l'inclusione di altri documenti (DTD ed entità carattere), infine vengono elencate le classi di
documenti definibili.

● Entità specifiche del documento normativo

Ciò che distingue i due documenti è la diversa definizione degli elementi di struttura formale dell'articolato.
nirloose.dtd
<!ENTITY % CMcompleto
"(libro|parte|titolo|capo|sezione|paragrafo|articolo)*">
<!ENTITY % CMlibro "(meta?, num?,
rubrica?,(parte|titolo|capo|sezione|paragrafo|articolo)*)">
<!ENTITY % CMparte "(meta?, num?, rubrica?,(libro|
titolo|capo|sezione|paragrafo|articolo)*)">
<!ENTITY % CMtitolo "(meta?, num?, rubrica?,(libro|parte|
capo|sezione|paragrafo|articolo)*)">
<!ENTITY % CMcapo "(meta?, num?, rubrica?,(libro|parte|titolo|
sezione|paragrafo|articolo)*)">
<!ENTITY % CMsezione "(meta?, num?, rubrica?,(libro|parte|titolo|capo|
paragrafo|articolo)*)">
<!ENTITY % CMparagrafo "(meta?, num?,
rubrica?,(libro|parte|titolo|capo|sezione| articolo)*)">
<!ENTITY % CMarticolo "(meta?, num?, rubrica?,(comma)*)">
<!ENTITY % CMcomma "(meta?, num?, (corpo | (alinea?, el*, coda?)))">

nirstrict.dtd
<!ENTITY % CMcompleto "(libro+|parte+|titolo+|capo+|articolo+) ">
<!ENTITY % CMlibro "(meta?, num, rubrica?,
(parte+|titolo+|capo+|articolo+))">
<!ENTITY % CMparte "(meta?, num, rubrica?, (titolo+|capo+|articolo+))">
<!ENTITY % CMtitolo "(meta?, num, rubrica?, (capo+|articolo+))">
<!ENTITY % CMcapo "(meta?, num, rubrica?, (sezione+|articolo+))">
<!ENTITY % CMsezione "(meta?, num, rubrica?, (articolo+))">
<!ENTITY % CMparagrafo "EMPTY">
<!ENTITY % CMarticolo "(meta?, num, rubrica?, (comma+))">
<!ENTITY % CMcomma "(meta?, num, (corpo | (alinea, el+, coda?)))">

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0803A.html [12/10/2001 10.21.22]


8. Approfondimento sul DTD di NIR - I file nirloose.dtd e nirstrict.dtd

8. Analisi del DTD di NIR - nirloose.dtd e nirstrict.dtd


(2 di 3)

● Elemento "meta"
In entrambi i documenti, ogni elemento della struttura formale contiene il sottoelemento "meta" - facoltativo.
In questo elemento è possibile registrare la meta-informazione relativa alla parte che si descrive con
l'elemento stesso (i vari tipi di meta-informazioni sono richiamati nel paragrafo Panoramica sul DTD).
● Entità esterne : caratteri e DTD accessori
In entrambi i documenti vengono definiti ed inclusi gli insiemi di caratteri e i DTD accessori.
E' stato usato il metodo delle entità esterne: prima si indica la definizione come entità esterna, quindi l'inclusione della
stessa
caratteri DTD accessori
<!ENTITY % ISOlat1 SYSTEM "ISOlat1.pen"> %ISOlat1; <!ENTITY % glb_DTD SYSTEM "globali.dtd">
<!ENTITY % ISOlat2 SYSTEM "ISOlat2.pen"> %ISOlat2; %glb_DTD;
<!ENTITY % ISOgrk3 SYSTEM "ISOgrk3.pen"> %ISOgrk3; <!ENTITY % txt_DTD SYSTEM "testo.dtd" >
<!ENTITY % ISOdia SYSTEM "ISOdia.pen"> %ISOdia; %txt_DTD;
<!ENTITY % ISOnum SYSTEM "ISOnum.pen"> %ISOnum; <!ENTITY % nrm_DTD SYSTEM "norme.dtd" >
%nrm_DTD;
<!ENTITY % ISOpub SYSTEM "ISOpub.pen"> %ISOpub;
<!ENTITY % metaDTD SYSTEM "meta.dtd">
<!ENTITY % ISOtech SYSTEM "ISOtech.pen"> %ISOtech;
%metaDTD;

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0803B.html [12/10/2001 10.21.22]


8. Analisi del DTD di NIR - I file nirloose.dtd e nirstrict.dtd

8. Analisi del DTD di NIR - nirloose.dtd e nirstrict.dtd


(3 di 3)

● Definizioni degli elementi radice possibili


Anche in questo caso, la sezione in oggetto è identica in entrambi i moduli. Vengono definite tutte le classi di elementi
radice possibili con i relativi attributi. La descrizione vera e propria di ciascun modello e degli attributi viene fatta
(mediante il meccanismo delle entità) nei file norme.dtd e globali.dtd.
elementi radice e loro attributi
<!ELEMENT leggeordinaria (meta?, %articolato_ridotto;) >
<!ATTLIST leggeordinaria %globalireq; %namespace; >
<!ELEMENT leggecostituzionale (meta?, %articolato_ridotto;) >
<!ATTLIST leggecostituzionale %globalireq; %namespace; >
<!ELEMENT leggeregionale (meta?, %articolato_ridotto;) >
<!ATTLIST leggeregionale %globalireq; %namespace; >
<!ELEMENT docarticolato (meta?, %articolato_ridotto;) > ***
<!ATTLIST docarticolato %globalireq; %namespace; %nome; >

<!ELEMENT decretolegge (meta?, %articolato_completo;)>


<!ATTLIST decretolegge %globalireq; %namespace; >
<!ELEMENT decretolegislativo (meta?, %articolato_completo;)>
<!ATTLIST decretolegislativo %globalireq; %namespace; >
<!ELEMENT decretoministeriale (meta?, %articolato_completo;)>
<!ATTLIST decretoministeriale %globalireq; %namespace; >
<!ELEMENT dpr (meta?, %articolato_completo;)>
<!ATTLIST dpr %globalireq; %namespace; >
<!ELEMENT dpcm (meta?, %articolato_completo;)>
<!ATTLIST dpcm %globalireq; %namespace; >
<!ELEMENT docarticolatoconpreambolo (meta?, %articolato_completo;) > ***
<!ATTLIST docarticolatoconpreambolo %globalireq; %namespace; %nome; >

<!ELEMENT attodiauthority (meta?, %strutture;) >


<!ATTLIST attodiauthority %globalireq; %namespace; >
<!ELEMENT decretoministerialeNN (meta?, %strutture;) >
<!ATTLIST decretoministerialeNN %globalireq; %namespace; >
<!ELEMENT dprNN (meta?, %strutture;) >
<!ATTLIST dprNN %globalireq; %namespace; >
<!ELEMENT dpcmNN (meta?, %strutture;) >
<!ATTLIST dpcmNN %globalireq; %namespace; >

<!ELEMENT semi_articolato (meta?, %semi_articolato;) > ***


<!ATTLIST semi_articolato %globalireq; %namespace; %nome; >
<!ELEMENT documentoNIR (meta?, %strutture;) > ***
<!ATTLIST documentoNIR %globalireq; %namespace; %nome; >

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0803C.html [12/10/2001 10.21.23]


8. Analisi sul DTD di NIR - Il file globali.dtd

8. Analisi del DTD di NIR - Il file globali.dtd (1 di 5)

Nel documento globali.dtd sono contenute le definizioni di entità usate in tutti i documenti.
Qui si trovano attributi e blocchi di attributi comuni a molti elementi, modelli di contenuti condivisi da diversi elementi,
ed infine la definizione di elementi generici che potranno essere usati, con opportuna denominazione, per scopi non
prevedibili al momento attuale.

● Entità: attributi comuni agli elementi del DTD


NAMESPACE - I namespace sono assegnati come attributi di ciascun elemento radice (si veda la definizione degli
elementi radice e loro attributi).
definizione dei namespace
<!ENTITY % namespace "
xmlns:xlink CDATA #FIXED 'http://www.w3.org/1999/xlink'
xmlns:h CDATA #FIXED 'http://www.w3.org/HTML/1998/html4'
xmlns:dc CDATA #FIXED 'http://purl.org/dc/elements/1.1/'
xmlns CDATA #FIXED 'http://www.normeinrete.it/nir/1.0' ">

In questo modo - cioè mettendo i namespace come attributi - il documento normativo risulta più ordinato e facile da
leggere.
versione con attributi fissi versione con attributi esplicitati
<?xml version='1.0' ?>
<!DOCTYPE leggeordinaria SYSTEM "nirloose.dtd">
<?xml version='1.0' ?>
<leggeordinaria
<!DOCTYPE leggeordinaria SYSTEM
xmlns:xlink='http://www.w3.org/1999/xlink'
"nirloose.dtd">
xmlns:css='http://www.w3.org./HTML/1998/html4'
<leggeordinaria>
xmlns:dc='http://purl.org/dc/elements/1.1/'
...
xmlns='http://www.normeinrete.it/nir/1.0' >
</leggeordinaria>
...
</leggeordinaria>

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0804A.html [12/10/2001 10.21.23]


8. Analisi del DTD di NIR - Il file globali.dtd

8. Analisi del DTD di NIR - Il file globali.dtd (2 di 5)

● LINK
Sebbene ancora XLink non sia una specifica definitiva del Web Consortium, nel documento globali.dtd viene fatta la
definizione degli attributi con caratteristiche ipertestuali secondo la forma più semplice dei link definibili con XLink.
attributi per i link
<!ENTITY % link "xlink:type CDATA #FIXED 'simple'
xlink:href CDATA #REQUIRED">

Si noti l'utilizzo del namespace apposito: vengono quindi usati l'attributo type con valore fisso 'simple' e l'attributo
HREF il cui valore sarà la destinazione del link.
● NOME
attributo nome
<!ENTITY % nome "nome CDATA #IMPLIED ">

Questo attributo - non obbligatorio - viene utilizzato per dare un nome significativo a parti di un documento non
descrivibili con elementi specifici.

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0804B.html [12/10/2001 10.21.23]


8. Analisi sul DTD di NIR - Il file globali.dtd

8. Analisi del DTD di NIR - Il file globali.dtd (3 di 5)

● VIGENZA
Le informazioni sugli intervalli di vigenza di un documento normativo (ufficiale) sono registrate fra le
meta-informazioni.
blocco attributi per la vigenza
<!ENTITY % vigenza "inizio CDATA #IMPLIED
inizio_sospensione CDATA #IMPLIED
fine_sospensione CDATA #IMPLIED
fine CDATA #IMPLIED">

Invece il blocco di attributi serve a caratterizzare le parti modificate nei testi coordinati.
Questi attributi rendono conto dell'evoluzione storica di un testo a seguito delle sue varie modifiche. Si trovano negli
elementi della struttura formale che descrivono le parti di un documento normativo che hanno subito modifiche,
abrogazioni.
● CSS
Questo blocco contiene due attributi ereditati direttamente da HTML, mentre il terzo - con valore predefinito -
permette di specificare la lingua in cui viene espresso un elemento del documento.
blocco attributi CSS
<!ENTITY % css "h:style CDATA #IMPLIED
h:class CDATA #IMPLIED
xml:lang CDATA 'it'">

I primi due attributi dovranno essere utilizzati tutte le volte che per una parte di un documento ci sia la necessità di
una rappresentazione che si differenzia da quella normalmente usata.

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0804C.html [12/10/2001 10.21.24]


8. Analisi sul DTD di NIR - Il file globali.dtd

8. Analisi del DTD di NIR - Il file globali.dtd (4 di 5)

● IDREQ e IDFAC
Ogni elemento della struttura formale deve avere un identificatore univoco, che permetterà di "rintracciare" l'elemento
all'interno del documento: per questo si userà l'attributo idreq.
IDREQ e IDFAC
<!ENTITY % idreq "id ID #REQUIRED">

<!ENTITY % idfac "id ID #IMPLIED">

In tutti gli altri casi in cui il redattore ritiene utile identificare un elemento che non appartiene alla struttura formale, si
userà l'attributo idfac.
● GLOBALIREQ e GLOBALIFAC
Queste sono le entità che rappresentano gli attributi che si trovano effettivamente negli elementi del DTD.
GLOBALIREQ e GLOBALIFAC
<!ENTITY % globalireq "%css;%idreq;%vigenza;">

<!ENTITY % globalifac "%css;%idfac;%vigenza;">

Come si può notare la differenza consiste nella presenza dell'attributo idreq da una parte e dell'attributo idfac
dall'altra.

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0804D.html [12/10/2001 10.21.24]


8. Approfondimento sul DTD di NIR - Il file globali.dtd

8. Analisi del DTD di NIR - Il file globali.dtd (5 di 5)

● Entità: modelli a contenitore 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 modelli a contenitore:
1. ELEMENTI VUOTI - elementi privi di contenuto testuale (ad esempio '</br>');
2. ELEMENTI INLINE - i cosiddetti PhraseLevel in HTML - sono gli elementi che stanno dentro agli
elementi blocco ed identificano parti del testo aventi una giustificazione semantica, strutturale o
tipografica del testo (ad esempio '<i>' per il corsivo, '<rif>' per un riferimento);
3. ELEMENTI DI BLOCCO - i cosiddetti ParaLevel in HTML - sono gli elementi che suddividono il
testo in senso verticale (p.e. '<p>', per i paragrafi)
4. ELEMENTI CONTENITORI - sono elementi che definiscono al loro interno elementi speciali, o che
modificano il comportamento di elementi definiti anche altrove (ad esempio '<table>' e
'<articolato>')
5. ELEMENTI SPECIALI - sono elementi utilizzabili solo all'interno di alcuni altri elementi
(contenitori) che li giustificano e li permettono (ad esemipio '<input>' può stare soltanto dentro
'<form>', '<corpo>' soltanto dentro '<comma>')
In questa parte del file globali.dtd sono definite le entità che si ritroveranno nelle definizioni di elementi sia del file
testo.dtd sia del file norme.dtd.

L'uso così "intensivo" di entità rende pulita ed ordinata la definizione dei modelli degli elementi del DTD.
Per semplicità, non riportiamo qui la definizione di queste entità: per visualizzarle clicca qui.

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0804E.html [12/10/2001 10.21.24]


8. Approfondimento sul DTD di NIR - Il file globali.dtd

Entita': content model comuni ai vari tipi di elementi


< !ENTITY % liste "h:ul | h:ol | h:dl">
< !ENTITY % gen_vuoti " vuoto " >
< !ENTITY % gen_inline " inlinea " >
< !ENTITY % gen_blocchi " blocco " >
< !ENTITY % gen_struct " contenitore | gerarchia " >

< !ENTITY % txt_vuoti " h:br | h:hr | h:img" >


< !ENTITY % txt_inline " h:span | h:i | h:u | h:b | h:sup | h:sub | h:a ">
< !ENTITY % txt_blocchi " h:div | h:p | h:form | h:table | %liste;" >

< !ENTITY % nrm_inline "rif | mrif | mod | def | atto | soggetto | luogo | ente | data" >
< !ENTITY % nrm_struct "identificazione | formulainiziale | preambolo | articolato |
formulafinale | conclusione | annessi ">

< !ENTITY % all_vuoti "%gen_vuoti; | %txt_vuoti; ">


< !ENTITY % all_inline "%gen_inline; | %txt_inline; | %nrm_inline; ">
< !ENTITY % all_blocchi "%gen_blocchi; | %txt_blocchi; ">
< !ENTITY % all_struct "%gen_struct; | %nrm_struct; ">

< !ENTITY % el_inline "#PCDATA | %all_inline; | %all_vuoti; ">

< !ENTITY % inline "(%el_inline; )*" >


< !ENTITY % blocchi "(%all_blocchi;)+" >
< !ENTITY % strutture "(%all_struct; )+" >
< !ENTITY % PhraseLevel "%inline;">
< !ENTITY % ParaLevel "(%el_inline; | %all_blocchi;)*" >

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorsoAppoggio0804E1.html [12/10/2001 10.21.25]


8. Approfondimento sul DTD di NIR - Il file testo.dtd

8. Analisi del DTD di NIR - Il file testo.dtd (1 di 5)

In questo documento si trovano le definizione degli elementi con semantica non legata alla normazione. In esso si
ridefiniscono elementi tratti dal linguaggio HTML.
● Elementi di tipo EMPTY con i relativi attributi
Definizioni

<!ELEMENT h:br EMPTY > h:br = ritorno a capo obbligato, senza divisione in
<!ATTLIST h:br %globalifac; > blocchi

<!ELEMENT h:hr EMPTY > h:hr = linea orizzontale, separatore di sezioni


<!ATTLIST h:hr %globalifac; >

<!ELEMENT h:img EMPTY >


<!ATTLIST h:img %globalifac; h:img = immagine
src CDATA #REQUIRED
alt CDATA #IMPLIED
width CDATA #IMPLIED h:input = elemento di inserimento dati all'interno di
height CDATA #IMPLIED > un scheda (form)
<!ELEMENT h:input EMPTY >
<!ATTLIST h:input %globalifac;
type CDATA #REQUIRED
size CDATA #IMPLIED>

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0805A.html [12/10/2001 10.21.25]


8. Approfondimento sul DTD di NIR - Il file testo.dtd

8. Analisi del DTD di NIR - Il file testo.dtd (2 di 5)

● Elementi di tipo inline con i relativi attributi


Definizioni
<!ELEMENT h:b %inline; > h:b = elementi visualizzati in grassetto
<!ATTLIST h:b %globalifac; >
h:i = elementi visualizzati in corsivo
<!ELEMENT h:i %inline; >
<!ATTLIST h:i %globalifac; > h:u = elementi visualizzati sottolineati

<!ELEMENT h:u %inline; > h:sub = elementi visualizzati come pedice


<!ATTLIST h:u %globalifac; >
h:sup = elementi visualizzati come apice
<!ELEMENT h:sub %inline; >
<!ATTLIST h:sub %globalifac; > h:span = elemento generico HTML di tipo inline

<!ELEMENT h:sup %inline; > h:a = link ipertestuale generico, senza connotazioni
<!ATTLIST h:sup %globalifac; > legate alle norme

<!ELEMENT h:span %inline; >


<!ATTLIST h:span %globalifac; >

<!ELEMENT h:a %inline; >


<!ATTLIST h:a %globalifac; %link; >

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0805B.html [12/10/2001 10.21.25]


8. Approfondimento sul DTD di NIR - Il file testo.dtd

8. Analisi del DTD di NIR - Il file testo.dtd (3 di 5)

● Elementi di tipo blocco e form


Definizioni
<!ELEMENT h:p %inline; >
<!ATTLIST h:p %globalifac; > h:p = paragrafo normale
<!ELEMENT h:div %inline; >
<!ATTLIST h:div %globalifac; > h:div = elemento generico HTML di tipo blocco
<!ELEMENT h:form
( %el_inline; | %all_blocchi; | h:input )* > h:form = elemento che introduce un modulo
<!ATTLIST h:form %globalifac; completabile dall'utente
method (post|get|put) 'post'
action CDATA #IMPLIED
enctype CDATA 'x-url-encoded' >

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0805C.html [12/10/2001 10.21.26]


8. Approfondimento sul DTD di NIR - Il file testo.dtd

8. Analisi del DTD di NIR - Il file testo.dtd (4 di 5)

● Elementi di tipo lista


Definizioni
<!ELEMENT h:ul (h:li)+ >
<!ATTLIST h:ul %globalifac; > h:ul = lista non ordinata

<!ELEMENT h:ol (h:li)+ >


<!ATTLIST h:ol %globalifac; > h:ol = lista ordinata (numerata)

<!ELEMENT h:li %ParaLevel; > h:li = elemento della lista


<!ATTLIST h:li %globalifac; >

<!ELEMENT h:dl (h:dt|h:dd)+ >


<!ATTLIST h:dl %globalifac; >
<!ELEMENT h:dt %inline; >
<!ATTLIST h:dt %globalifac; > h:dl = definizione di liste
<!ELEMENT h:dd %ParaLevel; >
<!ATTLIST h:dd %globalifac; >

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0805D.html [12/10/2001 10.21.26]


8. Approfondimento sul DTD di NIR - Il file testo.dtd

8. Analisi del DTD di NIR - Il file testo.dtd (5 di 5)

● Specifica di tabelle
Non esiste una versione XML ufficiale per il modello tabella. Ne esistono, invece, diverse ufficiose: fra queste è stata
scelta quella relativa alle specifiche di HTML versione 4. Nel DTD di NIR è fornita una versione semplificata ma fedele
del modulo tabelle del DTD di HTML espresso in SGML.

Per semplicità, non riportiamo qui la definizione di questi elementi e dei loro attributi: per visualizzarli clicca qui.

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0805E.html [12/10/2001 10.21.27]


8. Approfondimento sul DTD di NIR - Il file testo.dtd

Tabelle : attributi
<!ENTITY % coreattrs "id ID #IMPLIED
class CDATA #IMPLIED
style CDATA #IMPLIED
title CDATA #IMPLIED" >
<!ENTITY % i18n "lang CDATA #IMPLIED
dir (ltr|rtl) #IMPLIED" >
<!ENTITY % attrs "%coreattrs; %i18n;" >
<!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">
<!ENTITY % TRules "(none | groups | rows | cols | all)">
<!ENTITY % TAlign "(left|center|right)">
<!ENTITY % Scope "(row|col|rowgroup|colgroup)">
<!ENTITY % cellhalign "align (left|center|right|justify|char) #IMPLIED
char CDATA #IMPLIED
charoff CDATA #IMPLIED " >
<!ENTITY % cellvalign "valign (top|middle|bottom|baseline) #IMPLIED" >
<!ENTITY % CAlign "(top|bottom|left|right)">
Tabelle : elementi
<!ELEMENT h:table (
h:caption?,
(h:col*|h:colgroup*),
h:thead?, h:tfoot?,
h:tbody+|h:tr+)
)>
<!ATTLIST h:table
%attrs;
summary CDATA
#IMPLIED
width CDATA
#IMPLIED
border CDATA
#IMPLIED
frame %TFrame;
#IMPLIED
rules %TRules;
#IMPLIED
cellspacing CDATA
#IMPLIED
cellpadding CDATA
#IMPLIED
datapagesize
CDATA #IMPLIED>

<!ELEMENT
h:caption
%PhraseLevel; >
<!ATTLIST h:caption
%attrs; >

<!ELEMENT h:thead
(h:tr)+ >
<!ATTLIST h:thead
%attrs; %cellhalign;
%cellvalign; >

<!ELEMENT h:tfoot
(h:tr)+ >
<!ATTLIST h:tfoot
%attrs; %cellhalign;

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorsoAppoggio0805E1.html (1 di 3) [12/10/2001 10.21.27]


8. Approfondimento sul DTD di NIR - Il file testo.dtd

%cellvalign; >

<!ELEMENT h:tbody
(h:tr)+ >
<!ATTLIST h:tbody
%attrs; %cellhalign;
%cellvalign; >

<!ELEMENT
h:colgroup (h:col)*
>
<!ATTLIST
h:colgroup %attrs;
span CDATA "1"
width CDATA
#IMPLIED
%cellhalign;
%cellvalign;>

<!ELEMENT h:col
EMPTY >
<!ATTLIST h:col
%attrs;
span CDATA "1"
width CDATA
#IMPLIED
%cellhalign;
%cellvalign;>

<!ELEMENT h:tr
(h:th|h:td)+ >
<!ATTLIST h:tr
%attrs; %cellhalign;
%cellvalign; >

<!ELEMENT h:th
%ParaLevel; >
<!ATTLIST h:th
%attrs;
abbr CDATA
#IMPLIED
axis CDATA
#IMPLIED
headers IDREFS
#IMPLIED
scope %Scope;
#IMPLIED
rowspan CDATA
"1"
colspan CDATA "1"
%cellhalign;
%cellvalign;>

<!ELEMENT h:td
%ParaLevel; >
<!ATTLIST h:td
%attrs;
abbr CDATA
#IMPLIED
axis CDATA

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorsoAppoggio0805E1.html (2 di 3) [12/10/2001 10.21.27]


8. Approfondimento sul DTD di NIR - Il file testo.dtd

#IMPLIED
headers IDREFS
#IMPLIED
scope %Scope;
#IMPLIED
rowspan CDATA
"1"
colspan CDATA "1"
%cellhalign;
%cellvalign;>

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorsoAppoggio0805E1.html (3 di 3) [12/10/2001 10.21.27]


8. Approfondimento sul DTD di NIR - Il file norme.dtd

8. Analisi del DTD di NIR - Il file norme.dtd (1 di 8)

Il documento norme.dtd raccoglie tutti gli elementi con semantica connessa agli atti normativi.

La creazione del DTD riflette due scelte di fondo: l'adesione al Manuale, da una parte, e, dall'altra, l'adeguamento del
DTD alle scelte del legislatore. Questo significa la possibilità di descrivere effettivamente documenti "reali",
ufficialmente pubblicati.

Il modulo introduce due categorie di elementi: gli elementi della struttura formale dell'atto normativo e gli elementi
inline con semantica rilevante ai fini della normazione, come per esempio, i riferimenti, le date, i luoghi, ecc..
● Entità: attributi comuni
All'apertura del documento c'è la definizione di tre entità per descrivere tre attributi: sono attributi il cui valore è la
normalizzazione di certi tipi di informazioni che si trovano nel testo.
Entità: attributi comuni
<!ENTITY % data "norm CDATA #REQUIRED" >
<!ENTITY % dove "codice CDATA #REQUIRED" >
<!ENTITY % codice "codice CDATA #REQUIRED" >

La sintassi dei valori di questi attributi ha valore prescrittivo anche se non è posta all'interno del DTD (vedi attributi
norm e codice).

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0806A.html [12/10/2001 10.21.27]


8. Approfondimento sul DTD di NIR - Il file norme.dtd

8. Analisi del DTD di NIR - Il file norme.dtd (2 di 8)

● Strutture fondamentali dei documenti normativi


Strutture fondamentali
<!ENTITY % articolato_ridotto "intestazione, formulainiziale,
articolato, formulafinale, conclusione, annessi? ">

<!ENTITY % articolato_completo "intestazione, formulainiziale,


preambolo, articolato, formulafinale, conclusione, annessi? ">

<!ENTITY % semi_articolato "intestazione, formulainiziale?, preambolo?,


(%gen_struct; | articolato), formulafinale?, conclusione?, annessi? ">
La differenza tra il tipo dell'articolato completo e quello dell'articolato ridotto consiste nella presenza
dell'elemento preambolo.
Il tipo semi-articolato è, invece, più generico: con questo tipo si intendono descrivere quei documenti
che hanno una sovrastruttura di documento normativo, ma che possono avere una sezione articolato
propriamente detta, oppure hanno una sezione articolato sufficientemente diversa da quella utilizzata
negli altri tipi. Anche per la parte finale sono previsti gli altri elementi di tipo normativo, ma sono
tutti facoltativi.

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0806B.html [12/10/2001 10.21.28]


8. Approfondimento sul DTD di NIR - Il file norme.dtd

8. Analisi del DTD di NIR - Il file norme.dtd (3 di 8)

● Elementi dell'intestazione (secondo il Manuale Rescigno)


Elementi intestazione
<!ELEMENT intestazione (tipoDoc | dataDoc | numDoc | titoloDoc | emanatore?)+ >
<!ELEMENT tipoDoc %inline; >
<!ELEMENT numDoc %inline; >
<!ELEMENT titoloDoc %inline; >
<!ELEMENT emanatore %inline; >
<!ELEMENT dataDoc %inline; >
<!ATTLIST dataDoc %data; >

● Formula iniziale, formula finale e preambolo


Elementi intestazione
<!ELEMENT formulainiziale %blocchi;>
<!ELEMENT formulafinale %blocchi;>
<!ELEMENT preambolo %blocchi;>

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0806C.html [12/10/2001 10.21.28]


8. Approfondimento sul DTD di NIR - Il file norme.dtd

8. Analisi del DTD di NIR - Il file norme.dtd (4 di 8)

● Elementi dell'articolato
I modelli degli elementi della gerarchia dell'articolato sono specificati nei documenti nirloose.dtd e nirstrict.dtd.
Ciascun elemento della gerarchia ha o può avere ulteriormente una rubrica testuale ed un numero d'ordine. Per
quanto riguarda gli attributi, questi comprendono anche l'attributo identificativo ID obbligatorio.
Elementi articolato e attributi relativi
<!ELEMENT articolato %CMcompleto; >

<!ELEMENT libro %CMlibro; >


<!ELEMENT parte %CMparte; >
<!ELEMENT titolo %CMtitolo; >
<!ELEMENT capo %CMcapo; >
<!ELEMENT sezione %CMsezione; >
<!ELEMENT paragrafo %CMparagrafo; >
<!ELEMENT articolo %CMarticolo; >

<!ATTLIST libro %globalireq; >


<!ATTLIST parte %globalireq; >
<!ATTLIST titolo %globalireq; >
<!ATTLIST capo %globalireq; >
<!ATTLIST sezione %globalireq; >
<!ATTLIST paragrafo %globalireq; >
<!ATTLIST articolo %globalireq; >

<!ELEMENT rubrica %inline; >


<!ELEMENT num %inline; >

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0806D.html [12/10/2001 10.21.28]


8. Approfondimento sul DTD di NIR - Il file norme.dtd

8. Analisi del DTD di NIR - Il file norme.dtd (5 di 8)

● Elementi sotto l'articolo


Un articolo è composto da commi, i quali, a loro volta, contengono un corpo di testo o un elenco di elementi lettera
(vedi i documenti nirloose.dtd e nirstrict.dtd). Il blocco degli attributi dell'elemento comma è del tipo con
l'identificativo obbligatorio.

Sono previsti due tipi di elenchi, quelli con elementi lettera (el) e quelli con elementi numero (en): essi si annidano
l'uno dentro l'altro, iniziando, dentro l'elemento comma, dall'elenco di elementi lettera. Entrambi gli elenchi iniziano
con l'elemento alinea e sono seguiti, eventualmente, dall'elemento coda. Per quanto riguarda gli attributi, questi sono
del tipo con l'identificativo facoltativo.
Elementi sotto articolo e attributi relativi
<!ELEMENT comma %CMcomma; >
<!ATTLIST comma %globalireq; >

<!ELEMENT el (num, (corpo | (alinea, en+, coda?))) >


<!ATTLIST el %globalifac;>

<!ELEMENT en (num, (corpo | (alinea, el+, coda?))) >


<!ATTLIST en %globalifac;>

<!ELEMENT corpo %blocchi; >


<!ELEMENT alinea %inline; >
<!ELEMENT coda %inline; >

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0806E.html [12/10/2001 10.21.29]


8. Approfondimento sul DTD di NIR - Il file norme.dtd

8. Analisi del DTD di NIR - Il file norme.dtd (6 di 8)

● Elementi della conclusione


Una conclusione è composta da un elemento dataeluogo e dalle sottoscrizioni.
L'elemento dataeluogo è preposto a contenere le informazioni sulla data e sul luogo della firma del documento. Gli
attributi di questo attributo contengono i valori normalizzati di questi dati.

Per il blocco sottoscrizioni è stata scelta la definizione mediante blocchi di testo arbitrari, con la raccomandazione che
per tutti i nomi e i relativi ruoli si usino gli appositi elementi soggetto.
Elementi conclusione e attributi relativi
<!ELEMENT conclusione (dataeluogo?, sottoscrizioni?) >
<!ELEMENT dataeluogo %inline; >
<!ATTLIST dataeluogo %data; %dove; >

<!ELEMENT sottoscrizioni (sottoscrivente*, visto) >


<!ELEMENT sottoscrivente %blocchi; >
<!ELEMENT visto %blocchi; >

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0806F.html [12/10/2001 10.21.29]


8. Approfondimento sul DTD di NIR - Il file norme.dtd

8. Analisi del DTD di NIR - Il file norme.dtd (7 di 8)

● Elementi degli annessi


Elementi annessi e attributi relativi
<!ELEMENT annessi (elencoAnnessi?, annesso+) >
<!ELEMENT elencoAnnessi %blocchi; >
<!ELEMENT annesso (testata?, (%tipodocumento; | rifesterno)) >
<!ATTLIST annesso %globalireq;>

<!ELEMENT rifesterno EMPTY >


<!ATTLIST rifesterno %link; >

<!ELEMENT testata (denAnnesso?, titAnnesso?, preAnnesso?) >


<!ELEMENT denAnnesso %blocchi; >
<!ELEMENT titAnnesso %blocchi; >
<!ELEMENT preAnnesso %blocchi; >

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0806G.html [12/10/2001 10.21.30]


8. Approfondimento sul DTD di NIR - Il file norme.dtd

8. Analisi del DTD di NIR - Il file norme.dtd (8 di 8)

● Elementi inline e speciali


Questi elementi sono stati introdotti per la marcatura di informazioni con rilevanza normativa, in vista di ricerche
sofisticate e ulteriori elaborazioni.
Elementi inline e speciali
<!ELEMENT mrif %inline; >

<!ELEMENT rif %inline; >


<!ATTLIST rif %link; %globalifac; >

<!ELEMENT mod (%el_inline;| novella)* >


<!ATTLIST mod %globalifac; >

<!ELEMENT novella (%el_inline; | libro | parte | titolo | capo |


sezione | paragrafo | articolo | comma | el | en)* >

<!ELEMENT def %inline; >


<!ELEMENT atto %inline; >
<!ATTLIST atto %codice; >
<!ELEMENT soggetto %inline; >
<!ATTLIST soggetto %codice; >

<!ELEMENT ente %inline; >


<!ATTLIST ente %codice; >

<!ELEMENT data %inline; >


<!ATTLIST data %data; >

<!ELEMENT luogo %inline; >


<!ATTLIST luogo %dove; >

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0806H.html [12/10/2001 10.21.30]


8. Approfondimento sul DTD di NIR - Sintassi rilevanti

8. Analisi del DTD di NIR - Sintassi rilevanti (1 di 2)

In questo paragrafo sono date le sintassi di alcuni attributi rilevanti. Tali specifiche hanno valore prescrittivo, anche se
non sono poste all'interno del DTD.
● xlink:href
Il valore di questo attributo indica la destinazione di un riferimento o altri elementi di natura ipertestuale: è un
Uniform Resource Identifier (URI) . Nel caso in cui la destinazione è un documento normativo, si richiede l'uso di un
URN (Uniform Resource Name) , secondo la sintassi definita dal gruppo di lavoro inerente URN nell'ambito del
progetto NIR.
Per le locazioni interne si deve preporre, come nel caso di URI, il carattere '#' all'indicazione della locazione. Questa
indicazione può essere sia un XPointer, oppure, preferibilmente, l'identificativo dell'elemento desiderato.
L'identificativo è il valore dell'attributo 'id'.
● id
Il valore di questo attributo indentifica in modo univoco l'elemento all'interno del documento normativo.
Un id è costituito da uno o più blocchi di 8 caratteri, separati dal carattere '-'. Ciascuno blocco descrive un
componente della gerarchia dall'alto verso il basso.
Un blocco è costituito da caratteri alfanumerici, così suddivisi:

tipo componente nome elemento sigla


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 sono uguali ad altra sigla
Il numero, quando è presente, è quello d'ordine esplicito dell'elemento, altrimenti è il numero d'ordine assoluto
dell'elemento all'interno degli elementi con la stessa sigla. Il numero deve essere di quattro cifre, quindi,
eventualmente, completato a sinistra con degli '0'. Nei casi in cui, come è anche previsto dal Manuale, si abbia una
numerazione in cui siano presenti '0' a sinistra, il completamento deve essere fatto con degli '*'.
La lettera - sempre presente - è uguale ad 'a', oppure, in presenza di specifiche ulteriori dell'elemento (p.e. bis, ter,
...) assume il carattere 'b', 'c', ... rispettivamente per 'bis', 'ter', ...

Alcuni esempi:
elemento valore dell'attributo id
articolo 12 art0012a
terza sezione del capo IV del I libro lib0001a-cap0004a-sez0003a
numero 7 della lettera b dell'articolo 8 quater art0008d-let0002a-num0007a
terzo paragrafo del primo annesso ann0001a-prg0003a

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0807A.html [12/10/2001 10.21.30]


8. Approfondimento sul DTD di NIR - Sintassi rilevanti

8. Analisi del DTD di NIR - Sintassi rilevanti (2 di 2)

● norm
L'attributo norm fornisce la normalizzazione per elementi di tipo data (p.e. data, dataeluogo, dataDoc). La forma
normalizzata ha il seguente formato:
AAAAMMGGhHHMM[SS[FFF]]

dove l'anno va indicato su 4 cifre, mese e giorno su 2; di seguito troviamo l'indicazione per la normalizzazione
dell'ora, che viene introdotta dal carattere "h", seguita da 2 cifre per l'ora e 2 per i minuti, ed infine, - facoltative - 2
cifre per i secondi e 3 cifre per le frazioni di secondo.

Esempio:
<data norm="19631117h0930">alle 9 e 30 del 17 novembre 1963</data>
● codice
Il valore di questo attributo fornisce un valore normalizzato per il nome di atti, soggetti ed enti citati negli atti
normativi. Si prevedono per questi valori delle tabelle di corrispondenza fra le varie citazioni e l'unica forma
normalizzata (codice).

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0807B.html [12/10/2001 10.21.31]


8. Approfondimento sul DTD di NIR - Il file meta.dtd

8. Analisi del DTD di NIR - Il file meta.dtd (1 di 2)

Il DTD non dà indicazioni riguardo alla localizzazione delle meta-informazioni -internamente o esternamente - né dice
che queste devono essere raccolte in un unico blocco, se interne.
Ne fornisce la sintassi e l'organizzazione e ne suggerisce le posizioni standard del documento in cui inserirle, qualora si
decida di porle internamente.

Come già spiegato nella lezione sul DTD normativo di NIR, sono cinque le tipologie di meta-informazioni previste.
elemento meta
<!ELEMENT meta (dublin?, lavoripreparatori?, commenti?, redazionale?, disposizioni?)>

● Dublin Core - 15 elementi standard per la descrizione di risorse di rete, che vanno dal titolo
della risorsa al depositario dei diritti. La sintassi è tratta direttamente dallo standard del Dublin
Core 1.1.
elemento Dublin Core e sottoelementi annessi
<!ENTITY % dublincore "dc:title | dc:creator | dc:subject |
dc:description | dc:publisher | dc:contributor |
dc:date | dc:type | dc:format |
dc:identifier | dc:source | dc:language |
dc:relation | dc:coverage | dc:rights ">

<!ELEMENT dublin (%dublincore;)* >


<!ATTLIST dublin xmlns:dc CDATA #FIXED 'http://purl.org/dc/elements/1.1/'>

<!ELEMENT dc:title (#PCDATA) >


<!ELEMENT dc:creator (#PCDATA) >
<!ELEMENT dc:subject (#PCDATA) >
<!ELEMENT dc:description (#PCDATA) >
<!ELEMENT dc:publisher (#PCDATA) >
<!ELEMENT dc:contributor (#PCDATA) >
<!ELEMENT dc:date (#PCDATA) >
<!ELEMENT dc:type (#PCDATA) >
<!ELEMENT dc:format (#PCDATA) >
<!ELEMENT dc:identifier (#PCDATA) >
<!ELEMENT dc:source (#PCDATA) >
<!ELEMENT dc:language (#PCDATA) >
<!ELEMENT dc:relation (#PCDATA) >
<!ELEMENT dc:coverage (#PCDATA) >
<!ELEMENT dc:rights (#PCDATA) >

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0808A.html [12/10/2001 10.21.31]


8. Approfondimento sul DTD di NIR - Il file meta.dtd

8. Analisi del DTD di NIR - Il file meta.dtd (2 di 2)

● lavori preparatori
per le informazioni e documenti annessi alla fase preparatoria del testo
elemento lavori preparatori
<!ELEMENT lavoripreparatori %blocchi; >

● commenti
per le informazioni di natura libera sul testo, commenti di studiosi, riferimenti alla dottrina e alla
giurisprudenza di tipo redazionale, ecc.
elemento commenti
<!ELEMENT commenti %blocchi; >

● redazionale
per le informazioni a testo libero fatte dalla redazione
elemento redazionale
<!ELEMENT redazionale %blocchi; >

● disposizioni - si veda la pagina dedicata.

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0808B.html [12/10/2001 10.21.31]


8. Approfondimento sul DTD di NIR - Le disposizioni nel DTD di NIR

8. Analisi del DTD di NIR - Le disposizioni (1 di 2)

Le disposizioni costituiscono la struttura funzionale di un testo normativo, cioè descrivono le funzioni regolative del
testo stesso.
Distinta, quindi, dalla struttura formale, la struttura funzionale è ben più complessa da stabilire in quanto richiede
un'interpretazione linguistica del contenuto del testo, e quindi competenze specifiche.

In genere, non è possibile stabilire una corrispondenza fra una disposizione e un elemento della struttura formale, ad
esempio un comma o un articolo. Questo complica la sistemazione della struttura funzionale sopra la struttura formale
nella descrizione XML di un documento normativo.

Ciò ha condotto, dopo lo studio di alcune alternative, a sistemare le disposizioni fra le meta-informazioni. In questo
modo la descrizione di una disposizione può essere articolata permettendo di esprimere proprietà complesse. Poichè
ogni elemento della struttura formale è identificato univocamente, ciascuna disposizione potrà far riferimento alla
partizione dell'atto - o alle partizioni, anche non contigue - in modo semplice.
Inoltre, dal momento che sono richieste solide competenze giuridiche, l'analisi funzionale di un documento può essere
fatta in un secondo tempo rispetto alla strutturazione formale.

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0809A.html [12/10/2001 10.21.32]


8. Approfondimento sul DTD di NIR - Le disposizioni nel DTD di NIR

8. Analisi del DTD di NIR - Le disposizioni (2 di 2)

Al momento attuale sono state ipotizzate due categorie ben distinte di elementi funzionali:
● analitiche- le disposizioni, propriamente dette e descritte dal Manuale Rescigno;
● caratterizzanti - elementi analitici, per lo più connessi al preambolo, che descrivono informazioni di contesto del
documento.
Elemento disposizione
<!ELEMENT disposizioni (caratterizzanti?, analitiche?) >
<!ATTLIST disposizioni xmlns:dsp CDATA #FIXED
'http://www.normeinrete.it/nir/disposizioni/1.0' >

<!ENTITY % posizioni "(dsp:testo|dsp:pos)+">


<!ELEMENT dsp:testo (#PCDATA)>
<!ELEMENT dsp:pos EMPTY>
<!ATTLIST dsp:pos %link;>
L'attributo pos è quello che permette di mettere in relazione la disposizione con la partizione, o le partizioni, del
documento.

Per vedere le definizioni di elementi e attributi relativi alle disposizioni si può cliccare qui.

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0809B.html [12/10/2001 10.21.32]


8. Approfondimento sul DTD di NIR - Le disposizioni nel DTD di NIR

Definizione delle disposizioni caratterizzanti


<!ELEMENT caratterizzanti (dsp:necessitaeurgenza | dsp:delega |
dsp:parere | dsp:proposta |
dsp:considerata | dsp:visto |
dsp:attuazioneUE | dsp:copertura)+ >

<!ELEMENT dsp:necessitaeurgenza (%posizioni;) >


<!ELEMENT dsp:considerata (%posizioni;) >
<!ELEMENT dsp:visto (%posizioni;) >
<!ELEMENT dsp:copertura (%posizioni;) >

<!ELEMENT dsp:delega (%posizioni;, dsp:fonte+) >


<!ELEMENT dsp:attuazioneUE (%posizioni;, dsp:fonte+) >
<!ELEMENT dsp:parere (%posizioni;, dsp:fonte+) >
<!ELEMENT dsp:proposta (%posizioni;, dsp:fonte+) >

<!ELEMENT dsp:fonte EMPTY >


<!ATTLIST dsp:fonte %link;nome CDATA #IMPLIED >
Definizione delle disposizioni analitiche
<!ELEMENT analitiche (dsp:finalita | dsp:ambito | dsp:istitutiva |
&nbspdsp:definizione | dsp:competenza | dsp:potere |
&nbspdsp:dovere | dsp:diritto | dsp:obbligo | dsp:divieto |
&nbspdsp:permesso | dsp:procedura | dsp:sanzione | dsp:riparazione |
&nbspdsp:finanziaria | dsp:transitoria | dsp:eccezione | dsp:abrogazione |
&nbspdsp:sostituzione | dsp:integrazione | dsp:vigenza | dsp:proroga |
&nbspdsp:reviviscenza | dsp:sospensione | dsp:retroattivita | dsp:ultrattivita |
&nbspdsp:estensione | dsp:deroga )+>

<!ELEMENT dsp:finalita (%posizioni;,argomento)>


<!ELEMENT dsp:ambito (%posizioni;,soggetto,territorio)>
<!ELEMENT dsp:istitutiva (%posizioni;,entita) >
<!ELEMENT dsp:definizione (%posizioni;,definiendum)>
<!ELEMENT dsp:competenza (%posizioni;,soggetto,oggetto?,controparte?)>
<!ELEMENT dsp:potere (%posizioni;,soggetto,oggetto?,controparte?)>
<!ELEMENT dsp:dovere (%posizioni;,soggetto,oggetto?,controparte?)>
<!ELEMENT dsp:diritto (%posizioni;,soggetto,oggetto?,controparte?)>
<!ELEMENT dsp:obbligo (%posizioni;,soggetto,azione,controparte)>
<!ELEMENT dsp:divieto (%posizioni;,soggetto,azione,controparte)>
<!ELEMENT dsp:permesso (%posizioni;,soggetto,azione,controparte)>
<!ELEMENT dsp:procedura (%posizioni;,soggetto,azione)>
<!ELEMENT dsp:sanzione (%posizioni;,soggetto,azione,oggetto)>
<!ELEMENT dsp:riparazione (%posizioni;,soggetto,azione,oggetto)>
<!ELEMENT dsp:finanziaria (%posizioni;,oggetto)>
<!ELEMENT dsp:transitoria (%posizioni;,oggetto)>
<!ELEMENT dsp:abrogazione (%posizioni;,oggetto)>
<!ELEMENT dsp:sostituzione (%posizioni;,oggetto)>
<!ELEMENT dsp:integrazione (%posizioni;,oggetto)>
<!ELEMENT dsp:interpretazione (%posizioni;,oggetto)>
<!ELEMENT dsp:vigenza (%posizioni;,oggetto)>
<!ELEMENT dsp:proroga (%posizioni;,oggetto)>
<!ELEMENT dsp:reviviscenza (%posizioni;,oggetto)>
<!ELEMENT dsp:sospensione (%posizioni;,oggetto)>
<!ELEMENT dsp:retroattivita (%posizioni;,oggetto)>
<!ELEMENT dsp:ultrattivita (%posizioni;,oggetto)>
<!ELEMENT dsp:estensione (%posizioni;,oggetto)>
<!ELEMENT dsp:deroga (%posizioni;,oggetto)>
<!ELEMENT dsp:eccezione (%posizioni;,oggetto)>

<!ELEMENT argomento (#PCDATA) >

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorsoAppoggio0809B.html (1 di 2) [12/10/2001 10.21.32]


8. Approfondimento sul DTD di NIR - Le disposizioni nel DTD di NIR

<!ELEMENT territorio (#PCDATA) >


<!ELEMENT entita (#PCDATA) >
<!ELEMENT oggetto (#PCDATA) >
<!ELEMENT azione (#PCDATA) >
<!ELEMENT controparte (#PCDATA) >
<!ELEMENT definiendum (#PCDATA) >

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorsoAppoggio0809B.html (2 di 2) [12/10/2001 10.21.32]


8. Analisi sul DTD di NIR - Sommario

8. Analisi del DTD di NIR- Sommario

In questa lezione abbiamo studiato di nuovo, ma in maniera approfondita e dettagliata:


● il DTD per i documenti normativi del progetto NIR
... passi successivi:

la prossima lezione affronterà altri argomenti connessi con XML.

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso08Sommario.html [12/10/2001 10.21.33]


Appendice

9. Altri argomenti

In questa lezione cercheremo di introdurre altri concetti legati al linguaggio XML:


● Il linguaggio d'interrogazione XQL

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso09AltriArgomenti.html [12/10/2001 10.21.33]


Appendice - Query language

9. Altri argomenti - Query language (1 di 4)

Nel Web Consortium esiste un gruppo di lavoro (XML Query Working Group) preposto alla definizione di un linguaggio
di interrogazione specifico per i documenti XML.

L'obiettivo del gruppo è quello di fornire un linguaggio potente e flessibile per estrarre dati dai documenti XML con
prestazioni paragonabili a quelle fornite dai linguaggi progettati per i database . In questo modo le collezioni di file
XML saranno accessibili nello stesso modo in cui lo sono attualmente i database.
Ad oggi non esiste una raccomandazione del W3C per un linguaggio d'interrogazione, ma esistono diverse proposte,
fra le quali si può citare XML Query Language (XQL), estensione di XSL Patterns, lo schema per la costruzione di
espressioni atte ad indicare gli elementi di un documento XML.

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0901A.html [12/10/2001 10.21.33]


Appendice - Query language

9. Altri argomenti - Query language (2 di 4)

Le espressioni XQL assomigliano ai percorsi per individuare file e directory nel disco di un computer. Infatti XQL
sfrutta la natura gerarchica della struttura di un documento XML. Per esempio, l'espressione

/Legge//Comma

indica l'insieme degli elementi Comma discendenti dell'elemento Legge, che si trovano nel documento, mentre
l'espressione:

/Legge//Capo[@Num = "I"]/Articolo

seleziona tutti gli articoli del capo I.


Il risultato di una query XQL è un estratto del documento XML contenente le parti selezionate, ossia un documento
XML che ha come radice l'elemento <xql:result>.

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0901B.html [12/10/2001 10.21.34]


Appendice - Query language

9. Altri argomenti - Query language (3 di 4)

Nella tabella che segue vengono indicate le principali espressioni usate per costruire le espressioni di
interrogazione (query) in XQL
Elemento/Funzione Esempio
nome di un elemento Articolo
carattere jolly *
nome di un attributo @IdNumero
uguaglianza NumeroLegge='383'
relazione genitore-figlio Capo/Articolo
relazione antenato/discendente Articolato//Comma
filtri Legge[NumeroLegge='383']
intersezione
unione
congiunzione
disgiunzione
negazione

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0901D.html [12/10/2001 10.21.34]


Appendice - Query language

9. Altri argomenti - Query language (4 di 4)

Nella progettazione di XQL si sono perseguiti 3 obiettivi fondamentali:


1. la compattezza: XQL utilizza brevi sequenze di caratteri
2. la semplicità: XQL utilizza pochi elementi sintattici
3. la natura dichiarativa: le espressioni esprimono cosa si vuole ottenere e non "come" ottenerle (concetto analogo
a quello espresso per il linguaggio eXtensible Stylesheet Style)

Questi presupposti sono positivi, ma comportano anche degli svantaggi: per esempio, la compattezza porta, nel caso
di espressioni complesse, a compromettere la facilità dell'interpretazione.

Esistono poi due limitazioni non indifferenti:


1. non sono previsti meccanismi di unione fra più query (join), nè di ordinamento o di aggregazione
2. non è prevista l'interrogazione su più documenti contemporaneamente

Nonostante ciò, non mancano le implementazioni: XQL è supportato, per esempio dagli XML database server
eXcelon di ObjectStore e Tamino di Software AG.

http://w3.idg.fi.cnr.it/nirwbt/Stampa corsoXML/XMLCorso0901E.html [12/10/2001 10.21.34]

Potrebbero piacerti anche