<?xml version="1.0" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ht="http://www.w3.org/1999/xhtml">
	<xs:annotation>
<xs:documentation>
ICCU - Istituto Centrale per il Catalogo Unico delle Biblioteche
Italiane e per le Informazioni Bibliografiche
<ht:br />
Laboratorio per le Informazioni Bibliografiche
<ht:br />
Schema XML per lo scambio dei dati relativi a biblioteche
italiane
<ht:br />
Revisione a cura di Carla Di Loreto, Ornella Napoli, Andrea
Giuliano, Annamaria Mandillo
<ht:br />
Redazione dello schema a cura di Andrea Giuliano
<ht:br />
Storia delle revisioni
<ht:pre>
$Author: pflorio $ $Id: biblioteca-1.1.xsd,v 1.3
2006-07-12 08:44:56 giuliano Exp $ $Log:
biblioteca-1.1.xsd,v $ Revision 1.3 2006-07-12 08:44:56
giuliano - Modificati o creati alcuni elementi per
aderire quanto più possibile al modulo di rilevamento
predisposto dalle regioni. In particolare:

- reso opzionale il codice iccu, con l'idea di gestire
biblioteche senza codice, ma almeno con provincia, come
vengono gestite attualmente dall'applicativo - servizi:
aggiunta carta-servizi, ore-settimanali,
ore-settimanali-pomeridiane, settimane-apertura -
patrimonio: aggiunti elementi
acquisti-ultimi-quindici-anni, totale-posseduto e
totale-posseduto-ragazzi; aggiunto attributo
acquisti-ultimo-anno a materialeType - amministrativa:
aggiunto elemento minori-quattordici-anni a utenti

- Trasformati in nonNegativeInteger tutti gli integer.

- Individuata la necessità di concordare liste
d'autorità per: - servizi in carta-servizi (quali
possono essere i servizi?) - categoria-ammessa in
accesso (quali categorie possono accedere?)

- Piccole correzioni qua e là.

Revision 1.2 2006/03/14 09:25:54 giuliano Aggiunte: -
citazione bibliografica per i cataloghi a volume -
superficie totale e al pubblico - carta dei servizi (non
gestita da ICCU) - quantità dei prestiti dei vari tipi
(non gestiti da ICCU) Correzioni: - "fondo-antico"
diventa "fondi-antichi", non ripetibile -
"fondoAnticoType" ha ora solo un attributo "volumi", che
a sua volta è solo una enumerazione di valori che indica
i tre possibili intervalli numerici di posseduto (-1000,
1000-5000, e 5000-)

Revision 1.1 2006/03/07 13:17:23 giuliano Alla copertura
bibliografica di catalogoType sono stati aggiunti due
elementi con formato "YYYY", in modo da rappresentare un
intervallo di anni.
</ht:pre>
		</xs:documentation>


	</xs:annotation>

	<xs:element name="biblioteche">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="dataExport" type="xs:dateTime" minOccurs="1" maxOccurs="1">
					<xs:annotation>
<xs:documentation>
Data della creazione del file XML (generato con un esport).
</xs:documentation>			
					</xs:annotation>
				</xs:element>
				<xs:element name="biblioteca" type="bibliotecaType" minOccurs="0" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>

	<xs:complexType name="bibliotecaType">
		<xs:annotation>
<xs:documentation>
L'elemento "biblioteca" è la radice di un documento di questo tipo. Tale
elemento fa parte di un content model "xsd:all", che non obbliga a
rispettare l'ordine in cui si presentano gli elementi, a differenza di
"xsd:sequence".
</xs:documentation>
<xs:documentation>
In tutto il resto dello schema si tende ad usare questo content model,
perché meno rigido. Non dovrebbe comportare eccessivo carico per il
parser.
</xs:documentation>
<xs:documentation>
La maggior parte degli elementi e attributi risultano opzionali e
ripetibili, ma questi aspetti saranno oggetto di una revisione futura
dell'intero schema alla luce delle possibilità e delle richieste dei
diversi partner interessati a scambiare dati nel formato qui descritto.
</xs:documentation>
<xs:documentation>
Nei casi più elementari si è ritenuto opportuno fissare l'obbligatorietà
e la ripetibilità degli elementi.
</xs:documentation>
		</xs:annotation>
			<xs:sequence>
				<xs:element minOccurs="0" name="anagrafica"	type="anagraficaType" />
				<xs:element minOccurs="0" name="cataloghi"	type="cataloghiType" />
				<xs:element minOccurs="0" name="patrimonio"	type="patrimonioType" />
				<xs:element name="specializzazione"	type="specializzazioneType" maxOccurs="unbounded" minOccurs="0" />
				<xs:element minOccurs="0" name="servizi" type="serviziType" />
				<xs:element minOccurs="0" name="amministrativa"	type="amministrativaType" />
			</xs:sequence>
		</xs:complexType>


	<xs:complexType name="anagraficaType">
		<xs:annotation>
<xs:documentation>
Questo tipo raggruppa tutte le informazioni di tipo strettamente
anagrafico.
</xs:documentation>
		</xs:annotation>
		<xs:all>
			<xs:element name="dataCensimento" type="annoSecoloType" minOccurs="0" maxOccurs="1">
					<xs:annotation>
<xs:documentation>
Data in cui è stata censita la biblioteca (raccolta dati).  Formato:
AAAA
</xs:documentation>			
					</xs:annotation>
			</xs:element>
			<xs:element name="dataAggiornamento" type="xs:dateTime" minOccurs="0" maxOccurs="1">
					<xs:annotation>
<xs:documentation>
Ultima data in cui è stata modificata la biblioteca (dal gestionale) (x
export ICCU).  Formato: AAAA-MM-GGTHH:mm:ss
</xs:documentation>			
					</xs:annotation>
			</xs:element>
			<xs:element name="nome">
				<xs:annotation>
<xs:documentation>
Nomi di una biblioteca. È un insieme in cui solo il nome attuale è
obbligatorio e non ripetibile, mentre quelli precedenti e quelli
alternativi sono opzionali e ripetibili.
</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:element name="attuale">
							<xs:simpleType>
								<xs:restriction base="xs:string" />
							</xs:simpleType>
						</xs:element>

						<xs:element name="precedente" minOccurs="0" maxOccurs="unbounded">
							<xs:simpleType>
								<xs:restriction base="xs:string" />
							</xs:simpleType>
						</xs:element>
						<xs:element name="alternativo" minOccurs="0" maxOccurs="unbounded">
							<xs:simpleType>
								<xs:restriction base="xs:string" />
							</xs:simpleType>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="codici">
				<xs:annotation>
<xs:documentation>
Codici di una biblioteca.
</xs:documentation>
<xs:documentation>
È un elemento che raggruppa diversi codici.  Nessuno è ripetibile. I
nomi degli elementi dovrebbero essere auto-esplicativi.
</xs:documentation>
<xs:documentation>
Si sfruttano qui le possibilità offerte da XML Schema per effettuare una
prima validazione dei codici attraverso opportune espressioni regolari.
È però importante capire che si tratta di una validazione superficiale:
ad esempio, per i codici basati sulle sigle di provincia non viene
controllato che la sigla sia corretta, ma solo del tipo "AA".
</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:all>
						<xs:element name="iccu" minOccurs="1" type="xs:string">
							<xs:annotation>
<xs:documentation>
Il codice "iccu" può essere omesso nel caso la biblioteca in esame non
sia mai stata censita dall'ICCU.  Essa sarà trattata come una nuova
biblioteca, come avviene tramite l'applicativo web dell'ICCU. Per questo
motivo, è necessario che nell'anagrafica sia specificata la provincia,
altrimenti non è possibile assegnare la parte iniziale del codice.  Nota
r.eschini: tolte tutte le restirction e messo a required il codice iccu
</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element minOccurs="0" name="acnp" type="xs:string" />
						<xs:element minOccurs="0" name="rism" type="xs:string" />
						<xs:element minOccurs="0" name="sbn" type="xs:string" />
						<xs:element minOccurs="0" name="cei" type="xs:string" />
						<xs:element minOccurs="0" name="cmbs" type="xs:string" />
					</xs:all>
				</xs:complexType>
			</xs:element>
			<xs:element minOccurs="0" name="indirizzo">
				<xs:annotation>
<xs:documentation>
Questo tipo descrive un indirizzo di biblioteca.  È opzionale come tutti
i suoi sotto-elementi, ma forse almeno uno dovrebbe essere reso
obbligatorio, altrimenti si potrebbe istanziare un "indirizzo" vuoto.
</xs:documentation>
<xs:documentation>
Per il CAP, il comune, la provincia, la regione e lo stato valgono le
osservazioni fatte circa i codici di biblioteca: la validazione si ferma
alla semplice struttura.
</xs:documentation>
<xs:documentation>
Per comuni e provincie si adottano i codici ISTAT. Per lo stato si usa
il codice ISO di due lettere, senza distinguere fra maiuscolo e
minuscolo.
</xs:documentation>
<xs:documentation>
Al momento non viene fatto alcun controllo sulla regione, ma è un
elemento che la base dati ricevente dovrebbe essere in grado di ricavare
a partire dal solo codice ISTAT del comune, attraverso proprie tabelle
di raggruppamento.
</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:all>
						<xs:element minOccurs="0" name="via" type="xs:string" />
						<xs:element minOccurs="0" name="cap" type="xs:string" />
						<xs:element minOccurs="0" name="frazione" type="xs:string" />
						<xs:element minOccurs="0" name="comune">
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:pattern value="[0-9]{6}" />
								</xs:restriction>
							</xs:simpleType>
						</xs:element>
						<xs:element minOccurs="0" name="provincia">
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:pattern value="[0-9]{3}" />
								</xs:restriction>
							</xs:simpleType>
						</xs:element>
						<xs:element minOccurs="0" name="regione" type="xs:string" />
						<xs:element minOccurs="0" name="stato">
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:pattern value="[a-zA-Z]{2}" />
								</xs:restriction>
							</xs:simpleType>
						</xs:element>
					</xs:all>
				</xs:complexType>
			</xs:element>
			<xs:element minOccurs="0" name="contatti">
				<xs:annotation>
<xs:documentation>
Varie modalità per contattare la biblioteca e il suo personale.
</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:element minOccurs="0" name="telefonico" maxOccurs="unbounded">
							<xs:annotation>
<xs:documentation>
Un contatto di tipo telefonico. Il prefisso è ovviamente quello
internazionale.
</xs:documentation>
<xs:documentation>
Nelle note, opzionali e ripetibili, si dovrebbe indicare, ad esempio, se
si tratta di un centralino, o del numero di una persona etc...
L'attributo "tipo" serve a distinguere un telefono da un fax.
</xs:documentation>
<xs:documentation>
Numero e prefisso sono obbligatori e non ripetibili, altrimenti non
avrebbe senso istanziare questo elemento.
</xs:documentation>
<xs:documentation>
Prefisso e numero sono validati in modo molto elementare.
</xs:documentation>
							</xs:annotation>
							<xs:complexType>
								<xs:all>
									<xs:element name="prefisso" type="xs:string"/>
									<xs:element name="numero" type="xs:string"/>
									<xs:element minOccurs="0" name="note" type="xs:string" />
								</xs:all>
								<xs:attribute name="tipo" use="required">
									<xs:simpleType>
										<xs:restriction	base="xs:string">
											<xs:enumeration value="fax" />
											<xs:enumeration	value="telefono" />
										</xs:restriction>
									</xs:simpleType>
								</xs:attribute>
							</xs:complexType>
						</xs:element>
						<xs:element name="altro" minOccurs="0" maxOccurs="unbounded">
							<xs:annotation>
<xs:documentation>
I contatti di questo tipo prevedono solo le note e un valore, oltre a un
attributo "tipo" che, al momento, consente di specificare solo un
indirizzo e-mail, una URL o un telex. Ovviamente la stringa "valore" può
contenere qualsiasi cosa, quindi non c'è garanzia che tale stringa sia
conforme al tipo specificato.
</xs:documentation>
<xs:documentation>
Le note sono opzionali e ripetibili, sebbene la ripetibilità sia
discutibile. Il valore è invece obbligatorio e non ripetibile,
altrimenti si potrebbe istanziare un elemento vuoto.
</xs:documentation>
<xs:documentation>
Una linea di sviluppo potrebbe prevedere dei pattern per la validazione
dei valori. Questo comporterebbe però l'uso di sotto-elementi invece che
di attributi, altrimenti non sarebbe possibile vincolare i valori con
pattern.
</xs:documentation>
							</xs:annotation>
							<xs:complexType>
								<xs:sequence>
									<xs:element name="valore" type="xs:string" />
									<xs:element minOccurs="0" name="note" type="xs:string" />
								</xs:sequence>
								<xs:attribute name="tipo" use="required">
									<xs:simpleType>
										<xs:restriction	base="xs:string">
											<xs:enumeration	value="e-mail" />
											<xs:enumeration	value="telex" />
											<xs:enumeration value="url" />
										</xs:restriction>
									</xs:simpleType>
								</xs:attribute>
							</xs:complexType>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element minOccurs="0" name="edificio">
				<xs:annotation>
<xs:documentation>
Dati relativi all'edificio. Sono tutti opzionali, ma potrebbe essere più
sensato renderne obbligatorio almeno uno.
</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:element minOccurs="0" name="denominazione" type="xs:string" />
						<xs:element minOccurs="0" name="monumentale" type="siNoType"/>
						<xs:element minOccurs="0" name="appositamenteCostruito" type="siNoType"/>
						<!-- 
						<xs:element minOccurs="0" name="tipoDataCostruzione" type="annoSecoloType" />
						<xs:element minOccurs="0" name="dataCostruzione" type="xs:string" /> 
						-->
						<xs:element minOccurs="0" name="dataCostruzione" type="annoSecoloType" />
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element minOccurs="0" name="Istituzione">
				<xs:annotation>
<xs:documentation>
Data in cui è stata istituita formalmente l'attuale biblioteca. È
possibile anche indicare l'anno di prima istituzione o fondazione, nel
caso che la biblioteca abbia avuto nel tempo gestioni amministrative
diverse.
</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:element minOccurs="0" name="dataIstituzione" type="annoSecoloType" />
						<!-- 
						<xs:element minOccurs="0" name="tipoDataFondazione" type="annoSecoloType" />
						<xs:element minOccurs="0" name="dataFondazione" type="xs:string" />
						 -->
						 <xs:element minOccurs="0" name="dataFondazione" type="annoSecoloType" />
					</xs:sequence>
				</xs:complexType>
			</xs:element>
		</xs:all>
	</xs:complexType>

	<xs:complexType name="patrimonioType">
		<xs:annotation>
<xs:documentation>
Tipo utilizzato per descrivere il patrimonio di una biblioteca. I
sotto-elementi sono tutti ripetibili, e sarebbe opportuno istanziare
questo elemento solo se contiene almeno un sotto-elemento non vuoto, ma
si è preferito comunque non rendere obbligatori i sotto-elementi.
</xs:documentation>
<xs:documentation>
L'elemento "materiale" va ripetuto per ciascun tipo di materiale. Non è
prevista una gerarchia fra i materiali, anche se alcune basi dati, fra
cui quella ICCU, organizzano i materiali in gerarchie a due o più
livelli. Imporre in questo contesto una gerarchia non gestita in modo
uniforme dalle base dati appare superfluo e limitante.
</xs:documentation>
<xs:documentation>
Anche l'elemento "fondo-speciale" va ripetuto per ciascuna istanza di
fondo. Inventario e catalogo topografico sono invece non ripetibili.
L'elemento "fondi-antichi", invece, serve solo a conteggiare in modo
approssimativo i volumi dei diversi fondi antichi della biblioteca, e
quindi non è ripetibile. I tre valori dell'attributo "volumi" sono da
intendersi "fino a 1000", "da 1000 a 5000", e "oltre 5000".
</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element minOccurs="0" maxOccurs="unbounded" name="materiale" type="materialeType" />
			<xs:element minOccurs="0" maxOccurs="unbounded" name="fondo-speciale" type="fondoSpecialeType" />
			<xs:element minOccurs="0" name="fondi-antichi" type="fondoAnticoType" />
			<xs:element minOccurs="0" name="inventario" type="infCarType">
				<xs:annotation>
<xs:documentation>
L'inventario, opzionale, può essere informatizzato o cartaceo (oppure,
ovviamente, entrambi).
</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element minOccurs="0" name="catalogo-topografico" type="infCarType">
				<xs:annotation>
<xs:documentation>
Il catalogo è trattato esattamente come l'inventario.
</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="acquisti-ultimi-quindici-anni" type="xs:decimal" minOccurs="0">
				<xs:annotation>
<xs:documentation>
Totale degli acquisti, indipendentemente dal tipo di materiale,
effettuati negli ultimi quindici anni.
</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="totale-posseduto" type="xs:nonNegativeInteger" minOccurs="0">
				<xs:annotation>
<xs:documentation>
Totale del posseduto, indipendentemente dal tipo di materiale. Si pone
il problema della coerenza di questo dato con quello del posseduto per i
singoli materiali. Si presume che l'applicativo ricevente non sia tenuto
a verificare questa coerenza.
</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="totale-posseduto-ragazzi" type="xs:nonNegativeInteger" minOccurs="0">
				<xs:annotation>
<xs:documentation>
Totale del posseduto destinato ai minori di 16 anni, indipendentemente
dal tipo di materiale.  Anche per questo dato, si presume che
l'applicativo ricevente non sia tenuto a verificarne la coerenza con gli
altri dati patrimoniali ricevuti.
</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="cataloghiType">
		<xs:annotation>
<xs:documentation>
Tipo che raccoglie i diversi cataloghi. Un elemento di questo tipo può
dunque contenere i tre tipi di cataloghi di seguito definiti.
</xs:documentation>
<xs:documentation>
Tutti i tre sotto-elementi sono opzionali e ripetibili in un ordine
qualsiasi. Nel definire i tre sottotipi sono sfruttate dove possibile le
somiglianze fra i tre, attraverso la derivazione di un tipo da un altro.
</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="catalogo-generale" minOccurs="0" maxOccurs="unbounded" type="catalogoType" />
			<xs:element name="catalogo-speciale" minOccurs="0" maxOccurs="unbounded" type="catalogoSpecialeType" />
			<xs:element name="catalogo-collettivo" minOccurs="0" maxOccurs="unbounded" type="catalogoCollettivoType" />
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="serviziType">
		<xs:annotation>
<xs:documentation>
Tipo di elemento relativo ai servizi offerti da una biblioteca. Fra
questi, gli orari di apertura, il prestito, le informazioni
bibliografiche, tipo e condizioni di accesso e diverse altre
informazioni.
</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element minOccurs="0" name="orario">
				<xs:annotation>
<xs:documentation>
Questo elemento non ripetibile raggruppa tutte le informazioni relative
agli orari di accesso alla biblioteca. I sottoelementi, tutti opzionali,
sono per lo più ripetibili, eccetto ovviamente l'orario ufficiale.
</xs:documentation>
<xs:documentation>
L'elemento serve solo da contenitore. Non è necessario dal punto di
vista applicativo, ma agevola la leggibilità dello schema, che in questa
parte è piuttosto articolato.
</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:element name="ufficiale" minOccurs="0" type="orarioType">
							<xs:annotation>
<xs:documentation>
Questo elemento contiene almeno un elemento "orario" di tipo
"orarioType", da non confondere con l'elemento soprastante. Si veda più
avanti la descrizione di questo tipo di elemento.
</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="variazione" minOccurs="0" maxOccurs="unbounded">
							<xs:annotation>
<xs:documentation>
Le variazioni di orario sono espresse da eventuali elementi di questo
tipo. Esso è identico ad un orario ufficiale (orarioType), salvo per
l'aggiunta di una nota esplicativa (e del periodo di validità,
attualmente deprecato e non considerato in import e export). La nota
esplicativa può essere di qualsiasi forma.
</xs:documentation>
							</xs:annotation>
							<xs:complexType>
								<xs:complexContent>
									<xs:extension base="orarioType">
										<xs:sequence>
											<xs:element name="periodo" type="xs:string" />
											<xs:element name="note"	type="xs:string" />
										</xs:sequence>
									</xs:extension>
								</xs:complexContent>
							</xs:complexType>
						</xs:element>

						<xs:element name="chiusura" minOccurs="0" maxOccurs="unbounded">
							<xs:annotation>
<xs:documentation>
Un periodo di chiusura è semplicemente una nota esplicativa (e del
periodo di validità, attualmente deprecato e non considerato in import e
export). La nota esplicativa può essere di qualsiasi forma. (dal-al,
periodo natalizio,...).
</xs:documentation>
							</xs:annotation>
							<xs:complexType>
								<xs:all>
									<xs:element name="periodo" type="xs:string" />
									<xs:element name="note"	type="xs:string" />
								</xs:all>
							</xs:complexType>
						</xs:element>
						<xs:element name="ore-settimanali" type="xs:decimal" minOccurs="0">
							<xs:annotation>
<xs:documentation>
Totale delle ore di apertura settimanali. Questo elemento può essere
presente insieme all'orario dettagliato (di tipo orarioType), e il suo
valore può essere incoerente con l'orario dettagliato, ma gli
applicativi che ricevono i dati sono liberi di verificare la congruità
dei dati segnalati oppure no.
</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="ore-settimanali-pomeridiane" minOccurs="0" type="xs:decimal">
							<xs:annotation>
<xs:documentation>
Totale delle ore di apertura pomeridiana settimanali. Ovviamente
dovrebbe essere minore di ore-settimanali, ma circa la congruità di
questo dato con gli altri, vale quanto già detto per ore-settimanali:
non è garantito un controllo da parte degli applicativi riceventi.
</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="settimane-apertura" minOccurs="0" type="xs:decimal">
							<xs:annotation>
<xs:documentation>
Numero di settimane di apertura della biblioteca in un anno. Anche per
questo dato, gli applicativi riceventi non dovrebbero essere costretti a
verificare la coerenza con gli altri dati di questo gruppo.
</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>

			<xs:element minOccurs="0" name="prestito">
				<xs:annotation>
<xs:documentation>
Varie informazioni relative al servizio di prestito. Ci sono diversi
sotto-elementi di ovvio significato, tutti opzionali.
</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:element minOccurs="0" name="locale">
							<xs:annotation>
<xs:documentation>
A parte l'elemento "automatizzato", che serve ad indicare se il prestito
avviene con procedure automatizzate oppure no, e che pertanto è di tipo
"siNoType", gli altri sono soltanto stringhe, anche se la durata
potrebbe essere vincolata con un pattern opportuno, e gli altri due
possono contenere valori controllati, che però è meglio lasciare fuori
dallo schema. In particolare, il materiale escluso potrebbe essere
normalizzato in base alle apposite norme ISO. Qualcosa del genere
andrebbe studiato anche per gli utenti ammessi.
</xs:documentation>
							</xs:annotation>
							<xs:complexType>
								<xs:all>
									<xs:element minOccurs="0"
										name="automatizzato" type="siNoType" />
									<xs:element minOccurs="0"
										name="durata" type="xs:string" />
									<xs:element minOccurs="0"
										name="materiale-escluso" type="xs:string" />
									<xs:element minOccurs="0"
										name="utenti-ammessi" type="xs:string" />
									<xs:element name="totale-prestiti" minOccurs="0"
										type="xs:decimal">
										<xs:annotation>
<xs:documentation>
Questo elemento conteggia il totale dei prestiti di questo tipo
effettuati nel periodo di osservazione.  Dev'essere un numero.
</xs:documentation>
										</xs:annotation>
									</xs:element>
								</xs:all>
							</xs:complexType>
						</xs:element>
						<xs:element minOccurs="0" name="interbibliotecario">
							<xs:annotation>
<xs:documentation>
In questo elemento, pur opzionale, si è ritenuto opportuno rendere
obbligatorio almeno il sotto-elemento "tipo", escludendo la paradossale
situazione di una biblioteca che offre il servizio, ma non sa di che
tipo.
</xs:documentation>
<xs:documentation>
L'elemento è ripetibile al più due volte perché la biblioteca può
offrire due tipi di prestito interbibliotecario, ed è opportuno che essi
siano descritti in elementi separati. Tuttavia non si può escludere che
vengano descritti due elementi dello stesso tipo, sebbene un applicativo
dovrebbe produrne tipicamente sempre al più due, e di tipi diversi.
</xs:documentation>
<xs:documentation>
Ovviamente l'elemento "sistema-ill" è opzionale e ripetibile, in quanto
la biblioteca può partecipare a più d'uno.
</xs:documentation>
							</xs:annotation>
							<xs:complexType>
								<xs:sequence>
									<xs:element minOccurs="0" maxOccurs="unbounded" name="tipo-prestito">
										<xs:complexType>
											<xs:sequence>
												<xs:element
													minOccurs="0" name="internazionale" type="siNoType" />
												<xs:element
													minOccurs="0" name="nazionale" type="siNoType" />
												<xs:element name="ruolo">
													<xs:simpleType>
														<xs:restriction
															base="xs:string">
															<xs:enumeration
																value="POS" />
															<xs:enumeration
																value="DSC" />
														</xs:restriction>
													</xs:simpleType>
												</xs:element>
											</xs:sequence>
										</xs:complexType>
									</xs:element>
									<xs:element
										minOccurs="0" name="automatizzato" type="siNoType" />
									<xs:element name="totale-prestiti"
										type="xs:decimal">
										<xs:annotation>
<xs:documentation>
Questo elemento conteggia il totale dei prestiti di questo tipo
effettuati nel periodo di osservazione.  Dev'essere un numero.
</xs:documentation>
										</xs:annotation>
									</xs:element>
									<xs:element minOccurs="0"
										maxOccurs="unbounded" name="sistema-ill">
										<xs:complexType>
											<xs:all>
												<xs:element name="nome"
													type="xs:string" />
												<xs:element
													minOccurs="0" name="note" type="xs:string" />
											</xs:all>
										</xs:complexType>
									</xs:element>
								</xs:sequence>
							</xs:complexType>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			
			
			
			
			
			
			<xs:element name="informazioni-bibliografiche">
				<xs:annotation>
<xs:documentation>
Per segnalare la disponibilità del servizio interno si usa l'elemento
vuoto omonimo, soluzione discutibile ma funzionante. Essa ha il
vantaggio di mettere questo servizio allo stesso livello del
"servizio-esterno", com'è logico.  Quest'ultimo però è più articolato.
</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:all>
						<xs:element name="servizio-interno"	minOccurs="0" type="siNoType" />
						<xs:element name="servizio-esterno"	minOccurs="0">
							<xs:annotation>
<xs:documentation>
Se è specificato il servizio esterno, sarebbe opportuno indicare almeno
un "modo" di espletamento del servizio stesso. Come in altri casi, anche
un elemento vuoto potrebbe essere accettato, come semplice segnalazione
di un servizio disponibile. Starà poi all'applicativo ricevente decidere
se ignorare tale informazione, perché troppo vaga, o tenerne comunque
conto.
</xs:documentation>
							</xs:annotation>
							<xs:complexType>
								<xs:sequence>
									<xs:element name="modo"	minOccurs="0" maxOccurs="unbounded">
										<xs:simpleType>
											<xs:restriction	base="xs:string">
												<xs:enumeration	value="tel" />
												<xs:enumeration	value="fax" />
												<xs:enumeration	value="e-mail" />
												<xs:enumeration	value="web" />
												<xs:enumeration	value="sms" />
												<xs:enumeration	value="mms" />
											</xs:restriction>
										</xs:simpleType>
									</xs:element>
								</xs:sequence>
							</xs:complexType>
						</xs:element>
					</xs:all>
				</xs:complexType>
			</xs:element>
			<xs:element name="internet">
				<xs:annotation>
<xs:documentation>
Accesso a Internet da postazioni locali. La modalità "limitato" potrebbe
essere fonte di equivoci. In ogni caso, la modalità è opzionale e
ripetibile.
</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:element name="modo" minOccurs="0" type="modoInternetType" />					
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="accesso" minOccurs="0">
				<xs:annotation>
<xs:documentation>
Riguarda le modalità di accesso alla biblioteca, sia in termini
logistici (e.g. portatori di handicap), sia in termini amministrativi
(chi può accedere ai servizi e a quali condizioni può farlo).
</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:element name="handicap" minOccurs="0" type="xs:string">
							<xs:annotation>
<xs:documentation>
La presenza di questo elemento, che può essere vuoto, segnala
semplicemente la possibilità di accesso ai portatori di handicap, ma per
ora non viene qui attribuito alcun significato particolare al suo
eventuale contenuto.
</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="categoria-ammessa" type="xs:string" minOccurs="0" maxOccurs="unbounded">
							<xs:annotation>
<xs:documentation>
Le categorie dipendono molto dalle diverse basi dati, per cui in questo
schema non si è ritenuto opportuno elencarne alcuna. Possono essere
specificate più categorie, sotto forma di semplici stringhe non
controllate. I valori qui utilizzati andrebbero però concordati,
stabilendo una lista d'autorità.
</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element minOccurs="0"
							name="condizioni-accesso" maxOccurs="unbounded">
							<xs:annotation>
<xs:documentation>
Condizioni di accesso. Tutti i sotto-elementi sono opzionali, anche se
avrebbe poco senso un elemento vuoto. I documenti, a loro volta, possono
non essere specializzati.  Questo potrebbe indicare la necessità di
esibire un generico documento di riconoscimento, non meglio specificato.
</xs:documentation>
<xs:documentation>
Le condizioni raggruppate andrebbero intese in AND logico. I documenti
nell'apposito elemento sono invece equivalenti, cioè in OR logico.
Infine, più elementi "condizioni-accesso", con gli opportuni
sottoelementi, sono da considerarsi in OR logico.
</xs:documentation>
<xs:documentation>
Ad esempio, il tipico caso "almeno 18 anni e un documento valido" si
traduce in opportuni elementi "età" e "documenti", ma senza un elemento
"appuntamento". Se in alternativa la biblioteca è accessibile
incondizionatamente per appuntamento, va aggiunto un apposito elemento
"condizioni-accesso", col solo sotto-elemento "appuntamento".
</xs:documentation>
							</xs:annotation>
							<xs:complexType>
								<xs:all>
									<xs:element minOccurs="0" name="eta">
										<xs:complexType>
											<xs:attribute name="min" type="xs:nonNegativeInteger" />
											<xs:attribute name="max" type="xs:nonNegativeInteger" />
										</xs:complexType>
									</xs:element>
									<xs:element minOccurs="0" name="documenti">
										<xs:complexType>
											<xs:sequence>
												<xs:element	minOccurs="0" maxOccurs="unbounded" name="tipo" type="tipoDocType" />												
											</xs:sequence>
										</xs:complexType>
									</xs:element>
									<xs:element name="appuntamento"	minOccurs="0" type="xs:string" />
								</xs:all>
							</xs:complexType>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element minOccurs="0" maxOccurs="unbounded" name="sistemi">
				<xs:annotation>
<xs:documentation>
Se la biblioteca partecipa a uno o più sistemi di biblioteche, questi
devono essere dichiarati in questo elemento, utilizzando sottoelementi
"sistema". È obbligatorio almeno uno di questi sottoelementi. I
sottoelementi "sistema" contegono semplicemente il nome di ciascun
sistema di biblioteche.
</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:all>
						<xs:element minOccurs="1" name="sistema" type="xs:string" />
					</xs:all>
				</xs:complexType>
			</xs:element>
			<xs:element minOccurs="0" maxOccurs="1" name="sezioni-speciali">
				<xs:annotation>
<xs:documentation>
Se la biblioteca ha delle sezioni speciali, queste vanno inserite in
altrettanti elementi "sezione". Nella maschera di ricerca avanzata
dell'anagrafe, alla voce "Sezione speciale", è disponibile l'intero
elenco delle sezioni speciali registrate dal sistema.
</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:all>
						<xs:element minOccurs="1" name="sezione" type="xs:string" />
					</xs:all>
				</xs:complexType>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	
	<xs:simpleType name="tipoDocType">
		<xs:restriction base="xs:string">
			<xs:enumeration value="documentoIdentità" />
			<xs:enumeration value="tesseraBiblioteca" />
			<xs:enumeration value="letteraPresentazione" />
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="modoInternetType">
		<xs:restriction base="xs:string">
			<xs:enumeration value="libero" />
			<xs:enumeration value="a pagamento" />
			<xs:enumeration value="a tempo" />
			<xs:enumeration value="limitato" />
		</xs:restriction>
	</xs:simpleType>

	<xs:complexType name="amministrativaType">
		<xs:annotation>
<xs:documentation>
Tipo di elemento recante informazioni di carattere amministrativo. È la
parte che più probabilmente richiederà aggiustamenti per soddisfare le
esigenze di vari enti. Molti elementi sono auto-esplicativi.
</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="codice-fiscale" type="xs:string"	minOccurs="0" />
			<xs:element name="partita-IVA" type="xs:string"	minOccurs="0" />
			<xs:element name="autonoma" type="siNoType" minOccurs="0">
				<xs:annotation>
<xs:documentation>
Eventuale autonomia di spesa.
</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="ente" minOccurs="0">
				<xs:annotation>
<xs:documentation>
Dati relativi all'ente da cui la biblioteca dipende. Almeno il nome è
obbligatorio. Inoltre, andrebbe discussa l'opportunità di fare
riferimento ad una lista controllata di enti, individuati tramite il
solo codice fiscale o la partita IVA. Devono esistere certamente simili
liste, e le diverse basi dati dovrebbero attenersi ad esse, almeno in
parte.
</xs:documentation>
<xs:documentation>
La funzione-obiettivo corrisponde al COFOG.
</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:all>
						<xs:element name="nome" type="xs:string" />
						<xs:element name="tipologia-amministrativa"	minOccurs="0" type="xs:string" />
						<xs:element name="tipologia-funzionale"	minOccurs="0" type="xs:string" />
						<xs:element name="stato" minOccurs="0"	type="xs:string" />
						<xs:element name="codice-fiscale" minOccurs="0"	type="xs:string" />
						<xs:element name="partita-IVA" minOccurs="0" type="xs:string" />
						<xs:element name="funzione-obiettivo"	minOccurs="0" type="xs:string" />
					</xs:all>
				</xs:complexType>
			</xs:element>
			<xs:element name="regolamento" minOccurs="0">
				<xs:complexType>
					<xs:all>
						<xs:element name="norma" type="xs:string" minOccurs="0" />
						<xs:element name="url" type="xs:string"	minOccurs="0" />
					</xs:all>
				</xs:complexType>
			</xs:element>
			<xs:element name="carta-servizi" minOccurs="0">
				<xs:annotation>
<xs:documentation>
Questo elemento opzionale indica se la biblioteca si è dotata di una
carta dei servizi o meno, e per quali servizi specifici. Gli eventuali
singoli servizi devono essere elencati in altrettanti elementi
"servizio", sotto forma di stringhe alfanumeriche. Se l'elemento è
vuoto, vuol dire solo che esiste una carta dei servizi, ma mancano altre
informazioni. I valori andrebbero standardizzati attraverso un'opportuna
lista d'autorità concordata.
</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:element name="servizio" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="deposito-legale" minOccurs="0" maxOccurs="unbounded">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="tipo" type="xs:string" minOccurs="0"/>
						<xs:element name="anno-inizio" type="xs:string"	minOccurs="0" />
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="strutture" minOccurs="0">
				<xs:annotation>
<xs:documentation>
Questo elemento e i suoi sotto-elementi descrivono sommariamente le
strutture di cui la biblioteca dispone.
</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:all>
						<xs:element name="scaffalature" minOccurs="0">
							<xs:annotation>
<xs:documentation>
I valori dei sotto-elementi sono ovviamente da intendersi in metri.
Trattandosi di decimali, non sono ammessi valori come "30m" o "30
metri".
</xs:documentation>
							</xs:annotation>
							<xs:complexType>
								<xs:all>
									<xs:element name="magazzino" type="xs:decimal" minOccurs="0" />
									<xs:element name="pubbliche" type="xs:decimal" minOccurs="0" />
								</xs:all>
							</xs:complexType>
						</xs:element>
						<xs:element name="superficie" minOccurs="0">
							<xs:annotation>
<xs:documentation>
I valori dei sotto-elementi sono ovviamente da intendersi in metri
quadrati. Trattandosi di decimali, non sono ammessi valori come "100mq"
o "100 metri quadri".
</xs:documentation>
							</xs:annotation>
							<xs:complexType>
								<xs:all>
									<xs:element name="totale" type="xs:decimal" minOccurs="0" />
									<xs:element name="al-pubblico" type="xs:decimal" minOccurs="0" />
								</xs:all>
							</xs:complexType>
						</xs:element>
						<xs:element name="postazioni" minOccurs="0">
							<xs:annotation>
<xs:documentation>
Le postazioni si dividono in diversi elementi, tutti opzionali. Se un
elemento è presente, deve avere un valore, e questo è forse scomodo se
si vuole solo indicare che la biblioteca dispone genericamente di
postazioni internet o audio, senza indicare quante. Per consentire la
semplice segnalazione si dovrebbe usare un costrutto più complesso.
</xs:documentation>
							</xs:annotation>
							<xs:complexType>
								<xs:all>
									<xs:element name="lettura" type="xs:nonNegativeInteger" minOccurs="0" />
									<xs:element name="video" type="xs:nonNegativeInteger" minOccurs="0" />
									<xs:element name="audio" type="xs:nonNegativeInteger" minOccurs="0" />
									<xs:element name="internet"	type="xs:nonNegativeInteger" minOccurs="0" />
								</xs:all>
							</xs:complexType>
						</xs:element>
					</xs:all>
				</xs:complexType>
			</xs:element>
			<xs:element name="utenti" minOccurs="0">
				<xs:annotation>
<xs:documentation>
Informazioni relative agli utenti della biblioteca.
</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:all>
						<xs:element name="ultimo-anno" type="xs:nonNegativeInteger" minOccurs="0" />
						<xs:element name="iscritti-prestito" type="xs:nonNegativeInteger" minOccurs="0" />
						<xs:element name="minori-quattordici-anni" type="xs:nonNegativeInteger" minOccurs="0" />
					</xs:all>
				</xs:complexType>
			</xs:element>
			<xs:element name="personale" minOccurs="0">
				<xs:annotation>
<xs:documentation>
Informazioni relative al personale impiegato a vario titolo nella
biblioteca.
</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:all>
						<xs:element name="totale" type="xs:nonNegativeInteger" minOccurs="0" />
						<xs:element name="temporaneo" type="xs:nonNegativeInteger" minOccurs="0" />
						<xs:element name="part-time" type="xs:nonNegativeInteger" minOccurs="0" />
						<xs:element name="esterno" type="xs:nonNegativeInteger" minOccurs="0" />
					</xs:all>
				</xs:complexType>
			</xs:element>
			<xs:element name="bilancio" minOccurs="0">
				<xs:annotation>
<xs:documentation>
Informazioni relative al bilancio della biblioteca.
</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:all>
						<xs:element name="entrate" type="xs:decimal" minOccurs="0" />
						<xs:element name="uscite" minOccurs="0">
							<xs:complexType>
								<xs:all>
									<xs:element name="personale" type="xs:decimal" minOccurs="0" />
									<xs:element name="funzionamento" type="xs:decimal" minOccurs="0" />
									<xs:element name="automazione" type="xs:decimal" minOccurs="0" />
									<xs:element name="patrimonio" type="xs:decimal" minOccurs="0" />
									<xs:element name="altre" type="xs:decimal" minOccurs="0" />
								</xs:all>
							</xs:complexType>
						</xs:element>
					</xs:all>
				</xs:complexType>
			</xs:element>

		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="specializzazioneType">
		<xs:annotation>
<xs:documentation>
La specializzazione di una biblioteca è semplicemente una CDD più una
descrizione libera opzionale.
</xs:documentation>
		</xs:annotation>
		<xs:all>
			<xs:element name="cdd" type="xs:string" />
			<xs:element name="descrizione-libera" type="xs:string" minOccurs="0" />
		</xs:all>
	</xs:complexType>

	<!-- Tipi secondari legati al patrimonio e ai cataloghi -->

	<xs:complexType name="materialeType">
		<xs:annotation>
<xs:documentation>
Un tipo di materiale è descritto semplicemente da un nome e da un
posseduto (opzionale). Quest'ultimo dev'essere un intero non negativo.
</xs:documentation>
		</xs:annotation>
		<xs:attribute name="nome" type="xs:string" use="required" />
		<xs:attribute name="posseduto" type="xs:nonNegativeInteger" />
		<xs:attribute name="acquisti-ultimo-anno" type="xs:nonNegativeInteger" />

	</xs:complexType>

	<xs:complexType name="fondoSpecialeType">
		<xs:annotation>
<xs:documentation>
A parte alcuni elementi dall'ovvio significato, la "descrizione"
corrisponde ad una descrizione libera del fondo speciale, mentre
"digitalizzazione" registra in forma libera lo stato dell'eventuale
digitalizzazione del fondo.
</xs:documentation>
		</xs:annotation>
		<xs:all>
			<xs:element name="nome" type="xs:string" />
			<xs:element minOccurs="0" name="descrizione" type="xs:string" />
			<xs:element minOccurs="0" name="cdd" type="xs:string" />
			<xs:element minOccurs="0" name="depositato" type="siNoType" />
			<xs:element minOccurs="0" name="digitalizzazione" type="siNoType" />
			<xs:element minOccurs="0" name="catalogoInventario">
				<xs:simpleType>
					<xs:annotation>
<xs:documentation>
Un elemento di questo tipo ammette solo valori del tipo {S:schede,
M:microforme, V:Volumi, O:Online(informatizzato)}
</xs:documentation>
					</xs:annotation>
					<xs:restriction base="xs:string">
						<xs:enumeration value="M" />
						<xs:enumeration value="S" />
						<xs:enumeration value="O" />
						<xs:enumeration value="V" />
					</xs:restriction>
				</xs:simpleType>		
			</xs:element>	
			<xs:element minOccurs="0" name="catalogoInventarioUrl" type="xs:string" />
		</xs:all>
	</xs:complexType>

	<xs:complexType name="fondoAnticoType">
		<xs:annotation>
<xs:documentation>
I fondi antichi vanno classificati in base al posseduto: fino a 1000, da
1000 a 5000, oltre 5000. Non è quindi possibile specificare esattamente
un posseduto.
</xs:documentation>
		</xs:annotation>
		<xs:attribute name="volumi" use="required">
			<xs:simpleType>
				<xs:restriction base="xs:string">
					<xs:enumeration value="-1000" />
					<xs:enumeration value="1000-5000" />
					<xs:enumeration value="5000-" />
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
	</xs:complexType>

	<xs:complexType name="catalogoType">
		<xs:annotation>
<xs:documentation>
I cataloghi hanno diverse caratteristiche comuni. Vale la pena di
definire un tipo che raccoglie queste caratteristiche, per poi derivare
da esso, tramite restriction, i diversi tipi di cataloghi.
</xs:documentation>
<xs:documentation>
Tutti contengono le quattro forme "schede", "volume", "microfilm" e
"digitale", ciascuna con la sua percentuale di copertura (vedi
"formaType"), e tutti hanno una copertura temporale. La forma "digitale"
ha un tipo particolare, "digitaleType", che aggiunge a "formaType" il
solo sott-elemento "supporto".
</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="forme" minOccurs="0">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="schede" type="formaType" minOccurs="0" />
						<xs:element name="volume" type="volumeType" minOccurs="0" />
						<xs:element name="microforme" type="formaType" minOccurs="0" />
						<xs:element name="digitale" type="digitaleType"	minOccurs="0" />
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="copertura" minOccurs="0">
				<xs:annotation>
<xs:documentation>
La copertura bibliografica deve essere espressa tramite un anno iniziale
(elemento "da-anno") e un anno finale (elemento "ad-anno"). Entrambi
devono avere il formato "YYYY", cioè esattamente quattro cifre (non è
ammesso alcun altro carattere).
</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:all>
						<xs:element name="da-anno">
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:pattern value="[0-9]{4}" />
								</xs:restriction>
							</xs:simpleType>
						</xs:element>
						<xs:element name="ad-anno">
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:pattern value="[0-9]{4}" />
								</xs:restriction>
							</xs:simpleType>
						</xs:element>
					</xs:all>
				</xs:complexType>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="tipo" type="xs:string" use="required" />
	</xs:complexType>

	<!-- <xs:complexType name="catalogoGeneraleType">
		<xs:annotation>
<xs:documentation>
Catalogo generale. Deriva da "catalogoType", con la sola aggiunta del
"tipo" di catalogo, per il quale si dovrebbero usare solo i valori
seguenti: topografico, autore, sistematico, dizionario, titoli,
soggetto.
</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="catalogoType">
				<xs:sequence>
					<xs:element name="tipo" type="xs:string" />
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
 -->
	<xs:complexType name="catalogoSpecialeType">
		<xs:annotation>
<xs:documentation>
Catalogo speciale. Deriva da "catalogoType", con l'aggiunta del "nome"
del catalogo e del "materiale".
</xs:documentation>
<xs:documentation>
Notare come tale tipo di elemento costituisce la base per il
"catalogoSpecialeType".
</xs:documentation>
		</xs:annotation>

		<xs:sequence>
			<xs:element name="forme" minOccurs="0">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="schede" type="formaType" minOccurs="0" />
						<xs:element name="volume" type="volumeType" minOccurs="0" />
						<xs:element name="microforme" type="formaType" minOccurs="0" />
						<xs:element name="digitale" type="digitaleType"	minOccurs="0" />
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="copertura" minOccurs="0">
				<xs:annotation>
<xs:documentation>
La copertura bibliografica deve essere espressa tramite un anno iniziale
(elemento "da-anno") e un anno finale (elemento "ad-anno"). Entrambi
devono avere il formato "YYYY", cioè esattamente quattro cifre (non è
ammesso alcun altro carattere).
</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:all>
						<xs:element name="da-anno">
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:pattern value="[0-9]{4}" />
								</xs:restriction>
							</xs:simpleType>
						</xs:element>
						<xs:element name="ad-anno">
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:pattern value="[0-9]{4}" />
								</xs:restriction>
							</xs:simpleType>
						</xs:element>
					</xs:all>
				</xs:complexType>
			</xs:element>
			<xs:element name="nome" type="xs:string" minOccurs="0" />
			<xs:element name="materiale" type="xs:string" minOccurs="0" />
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="catalogoCollettivoType">
		<xs:annotation>
<xs:documentation>
Catalogo collettivo. Deriva da "catalogoSpecialeType", con l'aggiunta
della "zona", a sua volta specializzata in un "nome" e in un "tipo".
</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="catalogoSpecialeType">
				<xs:sequence>
					<xs:element name="zona" minOccurs="0">
						<xs:complexType>
							<xs:all>
								<xs:element name="nome" type="xs:string" minOccurs="0">
									<xs:annotation>
<xs:documentation>
Il nome della zona può essere ad esempio "Toscana", "Triveneto",
"Centro-Sud", "Castelli Romani"...
</xs:documentation>
									</xs:annotation>
								</xs:element>
								<xs:element name="tipo" type="xs:string" minOccurs="0">
									<xs:annotation>
<xs:documentation>
Il tipo della zona può essere invece "regionale", "comunale" ...
</xs:documentation>
									</xs:annotation>
								</xs:element>
							</xs:all>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>

	<xs:complexType name="formaType">
		<xs:annotation>
<xs:documentation>
La forma di un catalogo ha di solito un solo attributo, la percentuale
di copertura, riferita al patrimonio inventariato o supposto, relativo
alla forma particolare. Un'eccezione è la forma "digitale", che aggiunge
un elemento (o attributo che sia) relativo al tipo di catalogo digitale
(CD-ROM, web o altro).
</xs:documentation>
		</xs:annotation>
		<xs:attribute name="percentuale" type="xs:string" />
	</xs:complexType>

	<xs:complexType name="digitaleType">
		<xs:annotation>
<xs:documentation>
La forma "digitale" di un catalogo richiede l'indicazione di un
supporto. Per il momento, nel caso on-line non si può indicare la URL.
</xs:documentation>
<xs:documentation>
Si noti che comunque questo tipo è derivato da "formaType" e quindi
eredita le sue caratteristiche.
</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="formaType">
				<xs:all>
					<xs:element name="supporto" type="xs:string" minOccurs="0" />
				</xs:all>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>

	<xs:complexType name="volumeType">
		<xs:annotation>
<xs:documentation>
La forma "volumeType" deriva dalla generica "formaType" con l'aggiunta
della citazione bibliografica, specifica di questa forma. La citazione è
comunque opzionale.
</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="formaType">
				<xs:all>
					<xs:element name="citazione-bibliografica" type="xs:string" minOccurs="0" />
				</xs:all>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>

	<xs:complexType name="infCarType">
		<xs:annotation>
<xs:documentation>
Un elemento di questo tipo serve solo a specificare una forma cartacea e
una forma informatizzata di qualcosa, tipicamente un catalogo, ma non
solo. Entrambi gli elementi che definisce sono semplici siNoType.
</xs:documentation>
		</xs:annotation>
		<xs:all>
			<xs:element name="informatizzato" type="siNoType" minOccurs="0" />
			<xs:element name="cartaceo" type="siNoType" minOccurs="0" />
		</xs:all>
	</xs:complexType>

	<!--Altri tipi secondari -->

	<xs:complexType name="orarioType">
		<xs:annotation>
<xs:documentation>
Questo tipo descrive sostanzialmente l'orario ufficiale, ma è anche un
tipo base da cui derivare le variazioni di orario. Poiché le variazioni
sono all'interno dei servizi, questo tipo base deve essere globale.
</xs:documentation>
<xs:documentation>
La struttura di questo tipo è molto semplice: un giorno della settimana,
un orario iniziale e un'orario finale.  Sebbene il questionario ICCU
preveda una struttura più articolata, queste informazioni sono
sufficienti a descrivere qualsiasi ragionevole situazione, e dovrebbero
essere gestibili da qualsiasi base dati.  Strutture più articolate
possono essere ricondotte a questa, ripetendo opportunamente gli
elementi.
</xs:documentation>
<xs:documentation>
Per i limiti orari si potrebbe specificare un vincolo più fine, perché
quello attuale accetterebbe anche un orario come "35:72".
</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="orario" maxOccurs="unbounded">
				<xs:complexType>
					<xs:attribute name="giorno" use="required">
						<xs:simpleType>
							<xs:restriction base="xs:string">
								<xs:enumeration value="lun" />
								<xs:enumeration value="mar" />
								<xs:enumeration value="mer" />
								<xs:enumeration value="gio" />
								<xs:enumeration value="ven" />
								<xs:enumeration value="sab" />
								<xs:enumeration value="dom" />
							</xs:restriction>
						</xs:simpleType>
					</xs:attribute>
					<xs:attribute name="dalle" use="required">
						<xs:simpleType>
							<xs:restriction base="xs:string">
								<xs:pattern value="[0-9]{2}:[0-9]{2}" />
							</xs:restriction>
						</xs:simpleType>
					</xs:attribute>
					<xs:attribute name="alle" use="required">
						<xs:simpleType>
							<xs:restriction base="xs:string">
								<xs:pattern value="[0-9]{2}:[0-9]{2}" />
							</xs:restriction>
						</xs:simpleType>
					</xs:attribute>
				</xs:complexType>
			</xs:element>
		</xs:sequence>
	</xs:complexType>

	<xs:simpleType name="siNoType">
		<xs:annotation>
<xs:documentation>
Un elemento di questo tipo ammette solo valori del tipo "si/no" (ma non
esattamente questi due...)
</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:enumeration value="s" />
			<xs:enumeration value="n" />
		</xs:restriction>
	</xs:simpleType>
	
	<!-- <xs:simpleType name="annoSecoloType">
		<xs:annotation>
<xs:documentation>
Un elemento di questo tipo ammette solo valori del tipo "anno / secolo"
</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:enumeration value="anno" />
			<xs:enumeration value="secolo" />
		</xs:restriction>
	</xs:simpleType>
 	-->
	<xs:complexType name="annoSecoloType">
		<xs:annotation>
<xs:documentation>
Un elemento di questo tipo contiene una stringa come valore, e ha un
attributo "tipo" che serve ad indicare se tale valore è un anno o un
secolo. Questo non esclude un elemento con valore "XVI" e tipo "anno",
per cui sarebbe auspicabile un costrutto più coerente.
</xs:documentation>
		</xs:annotation>
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attribute name="tipo">
					<xs:simpleType>
						<xs:restriction base="xs:string">
							<xs:enumeration value="anno" />
							<xs:enumeration value="secolo" />
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>

</xs:schema>
