The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:gn="http://base.google.com/ns/1.0" targetNamespace="http://base.google.com/ns/1.0" elementFormDefault="qualified" attributeFormDefault="unqualified">

  <xs:group name="baseElementGroup">
    <xs:annotation>
      <xs:documentation> 
        The original group is broken in many ways: name-space, field
        type and occurence.  We overrule it.

        Besides, many many fields are missing from base and other have
        bugs.  The list below is not complete.  Contact me if you need
        more.
      </xs:documentation> 
    </xs:annotation>
    <xs:sequence>
      <!-- kill a few options, which are defined in the wrong name-space -->
      <xs:element ref="gn:id" minOccurs="0"/>

      <!-- the following elements are missing from the spec -->
      <xs:element name="gtin"         type="gn:stringAttrValueType"
         minOccurs="0" />
      <xs:element name="mpn"          type="gn:stringAttrValueType"
         minOccurs="0" />
      <xs:element name="availability" type="gn:availType"
         minOccurs="0" />
      <xs:element name="sale_price"   type="gn:floatUnitType"
         minOccurs="0" />
      <xs:element name="additional_image_link"     type="xs:anyURI"
         minOccurs="0" maxOccurs="10" />
      <xs:element name="sale_price_effective_date" type="gn:stringAttrValueType"
         minOccurs="0" />
      <xs:element name="age_group"    type="gn:ageGroupEnumeration"
         minOccurs="0" />
      <xs:element name="item_group_id" type="gn:stringAttrValueType"
         minOccurs="0" />
      <xs:element name="material"     type="gn:stringAttrValueType"
         minOccurs="0" />
      <xs:element name="pattern"      type="gn:stringAttrValueType"
         minOccurs="0" />
      <xs:element name="shipping_weight" type="gn:floatUnitType"
         minOccurs="0" />
      <xs:element name="multipack"    type="xs:int"
         minOccurs="0" />
      <xs:element name="adult"        type="gn:boolEnumeration"
         minOccurs="0" />
    </xs:sequence>
  </xs:group>

  <xs:simpleType name="availType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="in stock" />
      <xs:enumeration value="available for order" />
      <xs:enumeration value="out of stock" />
      <xs:enumeration value="preorder" />
    </xs:restriction>
  </xs:simpleType>

  <!-- unisex was missing as option in base -->
  <xs:simpleType name="genderEnumeration">
    <xs:restriction base="xs:string">
      <xs:enumeration value="male"/>
      <xs:enumeration value="M"/>
      <xs:enumeration value="female"/>
      <xs:enumeration value="F"/>
      <xs:enumeration value="unisex"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="ageGroupEnumeration">
    <xs:restriction base="xs:string">
      <xs:enumeration value="adult"/>
      <xs:enumeration value="kids"/>
    </xs:restriction>
  </xs:simpleType>

  <!-- the schema developer really had no clue what he was doing -->
  <xs:simpleType name="boolEnumeration">
    <xs:restriction base="xs:string">
      <xs:enumeration value="TRUE"/>
      <xs:enumeration value="FALSE"/>
    </xs:restriction>
  </xs:simpleType>


</xs:schema>