﻿<?xml version="1.0" encoding="utf-8"?>
<xs:schema
  attributeFormDefault="unqualified"
  elementFormDefault="qualified"
  xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:include schemaLocation="types.xsd" />

  <xs:simpleType name="dimensionValue">
    <xs:restriction base="nonNegativeDecimal">
      <xs:fractionDigits value="3" />
      <xs:minInclusive value="0"/>
      <xs:maxInclusive value="2147483647"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="sizeUnit">
    <xs:restriction base="xs:token">
      <xs:enumeration value="um" />
      <xs:enumeration value="µm" />
      <xs:enumeration value="mm" />
      <xs:enumeration value="cm" />
      <xs:enumeration value="dm" />
      <xs:enumeration value="m" />
      <xs:enumeration value="km" />
      <xs:enumeration value="in" />
      <xs:enumeration value="ft" />
      <xs:enumeration value="yd" />
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="size">
    <xs:sequence>
      <xs:element name="value" minOccurs="1" maxOccurs="1" type="dimensionValue" />
      <xs:element name="unit" minOccurs="1" maxOccurs="1" type="sizeUnit" />
    </xs:sequence>
  </xs:complexType>

  <xs:simpleType name="massUnit">
    <xs:restriction base="xs:token">
      <xs:enumeration value="mcg" />
      <xs:enumeration value="µg" />
      <xs:enumeration value="mg" />
      <xs:enumeration value="g" />
      <xs:enumeration value="hg" />
      <xs:enumeration value="kg" />
      <xs:enumeration value="t" />
      <xs:enumeration value="gr" />
      <xs:enumeration value="oz" />
      <xs:enumeration value="lb" />
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="mass">
    <xs:sequence>
      <xs:element name="value" minOccurs="1" maxOccurs="1" type="dimensionValue" />
      <xs:element name="unit" minOccurs="1" maxOccurs="1" type="massUnit" />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="dimensions">
    <xs:sequence>
      <xs:element name="height" minOccurs="0" maxOccurs="1" type="size" />
      <xs:element name="width" minOccurs="0" maxOccurs="1" type="size" />
      <xs:element name="length" minOccurs="0" maxOccurs="1" type="size" />
      <xs:element name="weight" minOccurs="0" maxOccurs="1" type="mass" />
    </xs:sequence>
  </xs:complexType>

</xs:schema>