﻿<?xml version="1.0" encoding="utf-8"?>

<xs:schema attributeFormDefault="unqualified" 
           elementFormDefault="qualified" 
           xmlns:hav="http://www.HopAndVineHull.co.uk/Food" 
           targetNamespace="http://www.HopAndVineHull.co.uk/Food" 
           xmlns:html="http://www.w3.org/1999/xhtml"  
           xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <!-- Document Element -->
  <xs:element name="Food" type="hav:FoodType"/>

  <!-- Complex Type Definitions -->
  <xs:complexType name="FoodType">
    <xs:sequence>
      <xs:element maxOccurs="unbounded" name="Section" type="hav:SectionType"/>
    </xs:sequence>
    <xs:attribute name="ValidFrom" type="xs:string" use="required" />
    <xs:attribute name="Heading" type="xs:string" use="optional" />
  </xs:complexType>

  <xs:complexType name="SectionType">
    <xs:sequence>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="1" name="Blurb" type="hav:BlurbType"/>
      </xs:sequence>
      <xs:choice maxOccurs="unbounded">
        <xs:element minOccurs="0" maxOccurs="unbounded" name="Entry" type="hav:EntryType"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" name="Juice" type="hav:JuiceType"/>
      </xs:choice>
    </xs:sequence>
    <xs:attribute name="Name" type="xs:string" use="required" />
  </xs:complexType>

  <xs:complexType name="EntryType" mixed="true">
    <xs:sequence minOccurs="0">
      <xs:any minOccurs="0" maxOccurs="unbounded" processContents="skip"
              namespace="http://www.w3.org/1999/xhtml"/>
    </xs:sequence>
    <xs:attribute name="Title" type="xs:string" use="required" />
    <xs:attribute name="SubTitle" type="xs:string" use="optional" />
    <xs:attribute name="Price" type="xs:decimal" use="required" />
  </xs:complexType>

  <xs:complexType name="JuiceType" mixed="true">
    <xs:sequence>
      <xs:element name="JuiceDetails" maxOccurs="unbounded" type="hav:JuiceDetailsType"/>
    </xs:sequence>
    <xs:attribute name="Title" type="xs:string" use="required" />
  </xs:complexType>

  <xs:complexType name="JuiceDetailsType">
    <xs:attribute name="Size" type="hav:SizeType" use="required" />
    <xs:attribute name="Price" type="xs:decimal" use="required" />
  </xs:complexType>

  <xs:complexType name="BlurbType" mixed="true">
    <xs:sequence minOccurs="0">
      <xs:any minOccurs="0" maxOccurs="unbounded" processContents="skip"
              namespace="http://www.w3.org/1999/xhtml"/>
    </xs:sequence>
  </xs:complexType>
  
  <!-- Simple type Defintions -->
  <xs:simpleType name="SizeType">
    <xs:restriction base="xs:string">
      <xs:pattern value="([.\d]*(ml|cl|l))|(pint|half)"/>
    </xs:restriction>
  </xs:simpleType>

</xs:schema>