﻿<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="product"
    targetNamespace="https://schemas.cdon.com/product/4.0/4.8.0/product"
    xmlns="https://schemas.cdon.com/product/4.0/4.8.0/product"
    attributeFormDefault="unqualified"
    elementFormDefault="qualified"
    xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:include schemaLocation="identities.xsd" />
  <xs:include schemaLocation="types.xsd" />
  <xs:include schemaLocation="dimensions.xsd" />
  <xs:include schemaLocation="energy.xsd" />
  <xs:include schemaLocation="categories.xsd" />
  <xs:include schemaLocation="attributes.xsd" />
  <xs:include schemaLocation="variants.xsd" />

  <xs:simpleType name="titleString">
    <xs:restriction base="xs:token">
      <xs:minLength value="1" />
      <xs:maxLength value="150" />
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="title">
    <xs:sequence>
      <xs:element name="default" minOccurs="1" maxOccurs="1" type="titleString" />
      <xs:element name="se" minOccurs="0" maxOccurs="1" type="titleString" />
      <xs:element name="dk" minOccurs="0" maxOccurs="1" type="titleString" />
      <xs:element name="no" minOccurs="0" maxOccurs="1" type="titleString" />
      <xs:element name="fi" minOccurs="0" maxOccurs="1" type="titleString" />
      <xs:element name="fr" minOccurs="0" maxOccurs="1" type="titleString" />
    </xs:sequence>
  </xs:complexType>

  <xs:simpleType name="descriptionString">
    <xs:restriction base="xs:token">
      <xs:minLength value="1" />
      <xs:maxLength value="10000" />
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="description">
    <xs:sequence>
      <xs:element name="default" minOccurs="1" maxOccurs="1" type="descriptionString" />
      <xs:element name="se" minOccurs="0" maxOccurs="1" type="descriptionString" />
      <xs:element name="dk" minOccurs="0" maxOccurs="1" type="descriptionString" />
      <xs:element name="no" minOccurs="0" maxOccurs="1" type="descriptionString" />
      <xs:element name="fi" minOccurs="0" maxOccurs="1" type="descriptionString" />
      <xs:element name="fr" minOccurs="0" maxOccurs="1" type="descriptionString" />
    </xs:sequence>
  </xs:complexType>

  <xs:simpleType name="brand">
    <xs:restriction base="xs:token">
      <xs:minLength value="1" />
      <xs:maxLength value="70" />
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="uspString">
    <xs:restriction base="xs:token">
      <xs:minLength value="1" />
      <xs:maxLength value="50" />
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="uspValue">
    <xs:sequence>
      <xs:element name="default" minOccurs="1" maxOccurs="1" type="uspString" />
      <xs:element name="se" minOccurs="0" maxOccurs="1" type="uspString" />
      <xs:element name="dk" minOccurs="0" maxOccurs="1" type="uspString" />
      <xs:element name="no" minOccurs="0" maxOccurs="1" type="uspString" />
      <xs:element name="fi" minOccurs="0" maxOccurs="1" type="uspString" />
      <xs:element name="fr" minOccurs="0" maxOccurs="1" type="uspString" />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="usp">
    <xs:sequence>
      <xs:element name="value" minOccurs="1" maxOccurs="15" type="uspValue" />
    </xs:sequence>
  </xs:complexType>

  <xs:simpleType name="releaseDate">
    <xs:restriction base="xs:date">
      <xs:minExclusive value="1900-01-01" />
      <xs:maxInclusive value="2079-06-06" />
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="product">
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="identity" type="identity" />
      <xs:element minOccurs="1" maxOccurs="1" name="title" type="title" />
      <xs:element minOccurs="1" maxOccurs="1" name="description" type="description" />
      <xs:element minOccurs="1" maxOccurs="1" name="category" type="category" />
      <xs:element minOccurs="0" maxOccurs="1" name="brand" type="brand" />
      <xs:element minOccurs="0" maxOccurs="1" name="usp" type="usp" />
      <xs:element minOccurs="0" maxOccurs="1" name="energy" type="energyClassification" />
      <xs:element minOccurs="0" maxOccurs="1" name="dimensions" type="dimensions" />
      <xs:element minOccurs="0" maxOccurs="1" name="releaseDate" type="releaseDate" />
      <xs:element minOccurs="0" maxOccurs="1" name="isAdult" type="xs:boolean" />
      <xs:element minOccurs="0" maxOccurs="1" name="isDrug" type="xs:boolean" />
      <xs:element minOccurs="0" maxOccurs="1" name="isPreOwned" type="xs:boolean" />
      <xs:element minOccurs="0" maxOccurs="1" name="variants" type="variants" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="marketplace">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="product" type="product" minOccurs="1" maxOccurs="unbounded" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

</xs:schema>