Salve a tutti, premetto di essermi avvicinato da pochissimo al mondo XML, il cui studio ed applicazione è scaturito per motivi di studi universitari.
Come per molte altre attività ho consultato una delle tante guidi fornite da HTML.it tra cui quella denominata Guida Web Service, in particolare al paragrafo denominato Esercizio di riepilogo viene proposto un esercizio, il quale ho cercato di risolvere ma non avendo alcun elemento con cui confrontarmi chiedo il vostro parere sulla correttezza della soluzione da me proposta.

L'esercizio chiedeva di realizzare un XML Schema a partire dal contenuto del seguente file xml:

codice:
<?xml version="1.0"?>
<biblioteca>
	<libreria codice="meZa" stanza="1"> 
    		<libro id="25">
      			<titolo>Il signore dei cammelli</titolo>
      			<pagine>2000</pagine>
      			<autore>Tolkien Abdu</autore>
    		</libro>
    		<libro id="12" danneggiato="true">
      			<titolo>Kamasutra</titolo>
      			<pagine>400</pagine>
      			<autore>ironoxide</autore>
    		</libro>
  	</libreria>
  	<libreria codice="mdare"> 
    		<libro id="45" danneggiato="true"> 
      			<titolo>La lampo di aladino</titolo>
      			<pagine>150</pagine>
      			<autore>idderffis</autore>
    		</libro>
  	</libreria>
</biblioteca>
inoltre xml schema bisogna considerare che:
[list=1][*]una libreria deve avere almeno un libro e come massimo ne può contenere 50[*]la libreria può non avere una stanza (immaginate che si estenda su più stanze[*]un libro può non essere danneggiato ed impostare l'attributo non è indispensabile ma in questo deve avere valore "false"[/list=1]

quindi la soluzione da me proposta è stata la seguente:

codice:
<?xml version="1.0"?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.giuseppespecchio.it/"
 xmlns="http://www.giuseppespecchio.it/" elementFormDefault="qualified">
 	
 	<xs:element name="biblioteca">
 		<xs:complexType> 
 			
 			
 						
 			
 			<xs:element name="libreria">
 				<xs:complexType> 
 					
 					
 					<xs:attribute name="codice" type="xs:string">
 					
					<xs:attribute name="stanza" type="xs:integer" use="optional">
					
					
					<xs:element name="libro" minOccurs="0" maxOccurs="50">
						<xs:complexType> 
      							<xs:all>
        							
        							<xs:attribute name="id" type="xs:integer">
								<!-- un libro può non essere danneggiato ed impostare l'attributo non è indispensabile 
								ma in questo deve avere valore "false" -->
								<xs:attribute name="danneggiato" type="xs:boolean" use="optional" default="false"> 
        							<xs:element name="titolo" type="xs:string" /> 
        							<xs:element name="autore" type="xs:string" />
        							<xs:element name="pagine" type="xs:integer" />
      							</xs:all>
    						</xs:complexType>
  					</xs:element>
  	
					
 				</xs:complexType>
			<xs:element>

 		</xs:complexType>
	<xs:element>
      			
	
	
</xs:schema>