I am designing an XML schema and XML instance document for a library system here is the scenario.

A University library has recently decided to make changes to their existing data warehouse. It has been decided by the Head Librarian that the library will benefit from single-source information management with XML. The Head Librarian suggested that while the transition from disconnected workflows based around unstructured authoring was difficult and may require changes to workflows across the entire library, the rewards for a successful single-source implementation would be well worth the effort.

A University library provides a full range of lending services for students and staff. The library senior management team are conscious of the fact that library users would like to use the library at times outside the usual opening times. They have decided to make their services available via the Internet. To accomplish this, they are first making available a record of student and staff borrowing.

The library consists of books and possibly other printed or electronic publications. Books have a title, author(s), publisher, copyright date, ISBN number and other data. Other materials may have other relevant data. The system must include all data needed to track who has borrowed which book(s), contact information for the borrower and when the book(s) were borrowed.

Now i have dveloped a schema but not sure if its correct for the above scnario can some1 please give me some feedback as to weather its it correct or not???

<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2010 (http://www.altova.com) by Daniel (Advance) -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="Users">
<xs:complexType>
<xs:sequence>
<xs:element name="Students" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="First_Name" type="xs:string"/>
<xs:element name="Surname" type="xs:string"/>
<xs:element name="Student_Number">
<xs:simpleType>
<xs:restriction base="xs:int">
<xs:maxExclusive value="999999"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Address">
<xs:complexType>
<xs:sequence>
<xs:element name="House_Number">
<xs:simpleType>
<xs:restriction base="xs:int">
<xs:maxExclusive value="999"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Street" type="xs:string"/>
<xs:element name="City" type="xs:string"/>
<xs:element name="Post_Code" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Contact_Numbers">
<xs:complexType>
<xs:sequence>
<xs:element name="Home">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:maxExclusive value="999999999999"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Mobile" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:maxExclusive value="99999999999999"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Email" type="xs:string"/>
</xs:sequence>
<xs:attribute name="University" type="xs:string"/>
<xs:attribute name="Course_ID" type="xs:string"/>
<xs:attribute name="Level">
<xs:simpleType>
<xs:restriction base="xs:int"/>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="Staff" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="First_Name" type="xs:string"/>
<xs:element name="Surname" type="xs:string"/>
<xs:element name="Staff_Number">
<xs:simpleType>
<xs:restriction base="xs:int">
<xs:maxExclusive value="999999"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Address">
<xs:complexType>
<xs:sequence>
<xs:element name="House_Number">
<xs:simpleType>
<xs:restriction base="xs:int">
<xs:maxExclusive value="999"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Street" type="xs:string"/>
<xs:element name="City" type="xs:string"/>
<xs:element name="Post_Code" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Contact_Numbers">
<xs:complexType>
<xs:sequence>
<xs:element name="Home">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:maxExclusive value="999999999999"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Mobile" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:maxExclusive value="99999999999999"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Email" type="xs:string"/>
</xs:sequence>
<xs:attribute name="University" type="xs:string"/>
<xs:attribute name="Job_Title" type="xs:string"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Library_Items">
<xs:complexType>
<xs:sequence>
<xs:element name="Books" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Author" type="xs:string"/>
<xs:element name="Title" type="xs:string"/>
<xs:element name="Year" type="xs:gYear"/>
<xs:element name="City" type="xs:string"/>
<xs:element name="Publisher" type="xs:string"/>
<xs:element name="Editor" type="xs:string"/>
<xs:element name="ISBN" type="xs:string"/>
<xs:element name="Number_Of_Copies" type="xs:int"/>
</xs:sequence>
<xs:attribute name="Catagorie"/>
</xs:complexType>
</xs:element>
<xs:element name="Journals" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Author" type="xs:string"/>
<xs:element name="Title" type="xs:string"/>
<xs:element name="Year" type="xs:gYear"/>
<xs:element name="City" type="xs:string"/>
<xs:element name="Publisher" type="xs:string"/>
<xs:element name="Editor" type="xs:string"/>
<xs:element name="ISBN" type="xs:string"/>
<xs:element name="Number_Of_Copies" type="xs:int"/>
</xs:sequence>
<xs:attribute name="Catagorie"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Loaned_Items">
<xs:complexType>
<xs:sequence>
<xs:element name="Book" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="User_Details">
<xs:complexType>
<xs:sequence>
<xs:element name="First_Name" type="xs:string"/>
<xs:element name="Surname" type="xs:string"/>
<xs:element name="Address">
<xs:complexType>
<xs:sequence>
<xs:element name="House_Number">
<xs:simpleType>
<xs:restriction base="xs:int">
<xs:maxInclusive value="999"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Street" type="xs:string"/>
<xs:element name="City" type="xs:string"/>
<xs:element name="Post_Code" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Contact_Numbers">
<xs:complexType>
<xs:sequence>
<xs:element name="Home">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:maxInclusive value="9999999999999"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Mobile">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:maxInclusive value="9999999999999"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Book_Details">
<xs:complexType>
<xs:sequence>
<xs:element name="Title" type="xs:string"/>
<xs:element name="Author" type="xs:string"/>
<xs:element name="ISBN" type="xs:string"/>
<xs:element name="Checkout_Date" type="xs:dateTime"/>
<xs:element name="Duedate" type="xs:dateTime"/>
<xs:element name="Copy_Number" type="xs:int"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="Catagorie" type="xs:string"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>