<?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" minOccurs="0" maxOccurs="1"/>
											<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" minOccurs="0" maxOccurs="1"/>
									<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="materiale-escluso" type="xs:string">
										<xs:annotation>
											<xs:documentation>
												DEPRECATO: questo elemento 
												serviva per esprimere il 
												materiale non ammesso (escluso) 
												al prestito. Essendo stato
												introdotto un nuovo elemento 
												che ne permette la ripetibilità,
												l'elemento è in disuso. 
												Utilizzare l'elemento 
												MATERIALI-ESCLUSI-LOCALE.
											</xs:documentation>
										</xs:annotation>
									</xs:element>
									<xs:element minOccurs="0"
										name="durata" type="xs:string" />
									<xs:element minOccurs="0"
										name="utenti-ammessi" type="xs:string" />
									<xs:element name="totale-prestiti" minOccurs="0" maxOccurs="1" 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" minOccurs="0" maxOccurs="1"
										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:element minOccurs="0" name="materiali-esclusi-locale" >
							<xs:annotation>
								<xs:documentation>
									Con questo elemento si dà la possibilità di 
									inserire una lista di materiali esclusi dal
									prestito locale.									
								</xs:documentation>
							</xs:annotation>
							<xs:complexType>
								<xs:sequence>
									<xs:element minOccurs="1" maxOccurs="unbounded" type="xs:string" name="materiale"/>
								</xs:sequence>
							</xs:complexType>
						</xs:element>
						<xs:element minOccurs="0" maxOccurs="unbounded" name="riproduzioni" >
							<xs:annotation>
								<xs:documentation>
									Con questo elemento si dà la possibilità di 
									esprimere le modalità di riprodurre i vari
									materiali ammessi al prestito locale, 
									nazionale e/o internazionale.									
								</xs:documentation>
							</xs:annotation>
							<xs:complexType>
								<xs:sequence>
									<xs:element minOccurs="1" type="xs:string" name="tipo"/>
									<xs:element name="locale" minOccurs="0" type="siNoType" />
									<xs:element name="nazionale" minOccurs="0" type="siNoType" />
									<xs:element name="internazionale" minOccurs="0" type="siNoType" />
								</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" type="xs:string" />
								</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.
						NB. MODIFICATO TIPO ENUMERATO 
					</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:element name="modo" minOccurs="0" type="xs:string" />					
					</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="aperta" minOccurs="0" type="siNoType">
							<xs:annotation>
								<xs:documentation>
									L'elemento segnala semplicemente la 
									possibilità di accedere liberamente alla 
									biblioteca. In caso contrario la biblioteca
									risulta essere riservata.
								</xs:documentation>
							</xs:annotation>
						</xs:element>
						<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="xs:string" />												
											</xs:sequence>
										</xs:complexType>
									</xs:element>
									<xs:element name="appuntamento"	minOccurs="0" type="xs:string" />
								</xs:all>
							</xs:complexType>
						</xs:element>
						<xs:element minOccurs="0" name="destinazioni-sociali">
								<xs:complexType>
									<xs:sequence>
										<xs:element	minOccurs="1" maxOccurs="unbounded" name="destinazione">
											<xs:complexType>
												<xs:sequence>
													<xs:element	minOccurs="1" maxOccurs="1" name="valore" type="xs:string"/>
													<xs:element	minOccurs="0" maxOccurs="1" name="note" type="xs:string"/>
												</xs:sequence>
											</xs:complexType>
										</xs:element>																															
									</xs:sequence>
								</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:sequence>
						<xs:element minOccurs="1" maxOccurs="unbounded" name="sezione" type="xs:string" />
					</xs:sequence>
				</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="totale" type="xs:decimal" minOccurs="0" />								
									<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>