﻿<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" 
           elementFormDefault="qualified" 
           targetNamespace="http://www.HopAndVineHull.co.uk/PastBeers" 
           xmlns:hav="http://www.HopAndVineHull.co.uk/PastBeers" 
           xmlns:xs="http://www.w3.org/2001/XMLSchema">
  
  <!-- Root Element -->
  <xs:element name="Products" type="hav:ProductsType"/>
  
  <!-- Complex Type Definitions -->
  <xs:complexType name="ProductsType">
    <xs:sequence>
      <xs:element maxOccurs="unbounded" name="Maker" type="hav:MakerType"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="MakerType">
    <xs:sequence>
      <xs:element maxOccurs="unbounded" name="Product" type="hav:ProductType"/>
    </xs:sequence>
    <xs:attribute name="Maker" type="xs:string" use="required" />
    <xs:attribute name="Location" type="xs:string" use="optional" />
    <xs:attribute name="URL" type="xs:anyURI" use="optional" />
  </xs:complexType>

  <xs:complexType name="ProductType">
    <xs:sequence>
      <xs:element maxOccurs="unbounded" name="Appearance" type="hav:AppearanceType"/>
    </xs:sequence>
    <xs:attribute name="ProductType" type="hav:ProductTypeType" use="required" />
    <xs:attribute name="Product" type="xs:string" use="required" />
    <xs:attribute name="ABV" type="hav:ABVType" use="optional" />
  </xs:complexType>

  <xs:complexType name="AppearanceType">
    <xs:attribute name="TheMonth" type="xs:gYearMonth" use="required" />
    <xs:attribute name="YYYY" type="xs:gYear" use="required" />
    <xs:attribute name="MMMM" type="hav:MMMMType" use="required" />
    <xs:attribute name="OnSale" type="xs:dateTime" use="required" />
  </xs:complexType>
  
  <!-- Simple Type Definitions -->
  <xs:simpleType name="ProductTypeType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Beer"/>
      <xs:enumeration value="Cider"/>
      <xs:enumeration value="Perry"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="ABVType">
    <xs:restriction base="xs:string">
      <!-- dont forget the 6.66% beers! -->
      <xs:pattern value="\d{1,2}\.\d{1,2}"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="MMMMType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="January"/>
      <xs:enumeration value="February"/>
      <xs:enumeration value="March"/>
      <xs:enumeration value="April"/>
      <xs:enumeration value="May"/>
      <xs:enumeration value="June"/>
      <xs:enumeration value="July"/>
      <xs:enumeration value="August"/>
      <xs:enumeration value="September"/>
      <xs:enumeration value="October"/>
      <xs:enumeration value="November"/>
      <xs:enumeration value="December"/>
    </xs:restriction>
  </xs:simpleType>

</xs:schema>
