<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema
	xmlns:xsd="http://www.w3.org/2001/XMLSchema"
	targetNamespace="http://web.simmons.edu/~tsai/LIS531F/"
	xmlns="http://web.simmons.edu/~tsai/LIS531F/"
	elementFormDefault="qualified"
	attributeFormDefault="qualified">

	<xsd:annotation>
		<xsd:documentation>
			Library list schema.
		</xsd:documentation>
	</xsd:annotation>
	
	<xsd:element name="librarylist">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element ref="library" maxOccurs="unbounded"/>
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
	
	
	<xsd:element name="library">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element name="name" type="nameType"/>
				<xsd:element name="type" type="xsd:string"/> 
				<xsd:element name="url" type="urlType" minOccurs="0"/>
				<xsd:element name="address" minOccurs="0">
					<xsd:simpleType>
						<xsd:restriction base="xsd:string">
							<xsd:whiteSpace value="replace"/>
						</xsd:restriction>
					</xsd:simpleType>
				</xsd:element>
				<xsd:element name="country" type="xsd:string"/>
				<xsd:element name="phone" type="phoneType" minOccurs="0"/>
				<xsd:element ref="onlineContact" minOccurs="0" maxOccurs="5"/>
				<xsd:element ref="openHours" minOccurs="0" maxOccurs="10"/>
				<xsd:element name="collectionSize" type="collection" minOccurs="0"/>
				<xsd:element name="rareBooks" type="collection" minOccurs="0"/>
				<xsd:element name="note" type="xsd:string" minOccurs="0"/>
			</xsd:sequence>
			<xsd:attribute name="nation" use="required">
				<xsd:simpleType>
					<xsd:restriction base="xsd:string">
						<xsd:pattern value="[A-Z][A-Z]"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:attribute>
			<xsd:attribute name="id" type="id" use="required"/>
		</xsd:complexType>
	</xsd:element>
	
	<xsd:complexType name="nameType">
		<xsd:sequence>
			<xsd:element name="nameEn" type="xsd:string"/>
			<xsd:element name="nameOther" minOccurs="0" maxOccurs="unbounded">
				<xsd:complexType>
					<xsd:simpleContent>
						<xsd:extension base="xsd:string">
							<xsd:attribute ref="language"/>
						</xsd:extension>
					</xsd:simpleContent>
				</xsd:complexType>
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>
	
	<xsd:complexType name="urlType">
		<xsd:sequence>		
			<xsd:element name="urlMain" minOccurs="0">
				<xsd:complexType>
					<xsd:simpleContent>
						<xsd:extension base="xsd:uriReference">
							<xsd:attribute ref="language"/>
						</xsd:extension>
					</xsd:simpleContent>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="urlOther" minOccurs="0" maxOccurs="unbounded">
				<xsd:complexType>
					<xsd:simpleContent>
						<xsd:extension base="xsd:uriReference">
							<xsd:attribute ref="language"/>
						</xsd:extension>
					</xsd:simpleContent>
				</xsd:complexType>
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>
	
	<xsd:attribute name="language" type="xsd:NMTOKEN" use="required"/>
	
	<xsd:complexType name="phoneType">
		<xsd:sequence>
			<xsd:element name="phoneGeneral" type="xsd:string" minOccurs="0"/>
			<xsd:element name="phoneOther" type="xsd:string" minOccurs="0"/>
		</xsd:sequence>
	</xsd:complexType>
	
	<xsd:complexType name="onlineContact">
		<xsd:sequence>
			<xsd:element name="title" type="xsd:string" minOccurs="0"/>
			<xsd:element name="firstName" type="xsd:string" minOccurs="0"/>
			<xsd:element name="lastName" type="xsd:string" minOccurs="0"/>
			<xsd:choice>
					<xsd:element name="email" type="xsd:string" maxOccurs="3"/>
					<xsd:element name="contactForm" type="xsd:string" maxOccurs="3"/>
			</xsd:choice>
		</xsd:sequence>
	</xsd:complexType>
	
	<xsd:complexType name="openHours">
		<xsd:sequence>
			<xsd:element name="hours">
				<xsd:simpleType>
					<xsd:restriction base="xsd:time">
						<xsd:pattern value="\hh:mm - \hh:mm"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<xsd:element name="days" type="xsd:string" minOccurs="0"/>
		</xsd:sequence>
	</xsd:complexType>
	
	<xsd:simpleType name="id">
		<xsd:restriction base="xsd:string">
			<xsd:pattern value="[A-Z]+"/>
		</xsd:restriction>
	</xsd:simpleType>
	
	<xsd:simpleType name="collection">
		<xsd:restriction base="xsd:integer">
			<xsd:pattern value="[1-9][0-9]*"/>
		</xsd:restriction>
	</xsd:simpleType>

	
</xsd:schema>
	
