<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    targetNamespace="http://www.egis-online.de/EBC/schema/ShoppingCartRequest"
    xmlns="http://www.egis-online.de/EBC/schema/ShoppingCartRequest"
    elementFormDefault="qualified">
    <xs:element name="ShoppingCartRequest">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="TransactionHeader"/>
                <xs:element ref="ShoppingCart" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="TransactionHeader">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="VersionId"></xs:element>
                <xs:element ref="GenerationDateTime"></xs:element>
                <xs:element ref="ERP"></xs:element>
                <xs:element ref="Login"></xs:element>
                <xs:element ref="Password"></xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="VersionId" type="xs:decimal"></xs:element>
    <xs:element name="GenerationDateTime" type="xs:dateTime"></xs:element>
    <xs:element name="ERP" type="xs:string"></xs:element>

    <xs:element name="Login">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:minLength value="1"></xs:minLength>
                <xs:maxLength value="40"></xs:maxLength>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>

    <xs:element name="Password">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:minLength value="1"/>
                <xs:maxLength value="40"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>

    <xs:element name="ShoppingCart">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="Header"/>
                <xs:element ref="Body"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="Header">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="ShoppingCartIdentification"/>
                <xs:element ref="ShoppingCartActionIdentification"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="ShoppingCartIdentification">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="ShoppingCartIdentifier"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="ShoppingCartIdentifier">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="ShoppingCartName"></xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="ShoppingCartName">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:maxLength value="35"></xs:maxLength>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>

    <xs:element name="ShoppingCartActionIdentification">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="ShoppingCartCreateAction"></xs:element>
                <xs:element ref="ShoppingCartUpdateAction"></xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element default="false" name="ShoppingCartCreateAction"
              type="xs:boolean">
    </xs:element>
    <xs:element default="true" name="ShoppingCartUpdateAction" type="xs:boolean"></xs:element>

    <xs:element name="Body">
        <xs:complexType>
            <xs:sequence>
                <xs:element maxOccurs="unbounded" ref="LineItem"></xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="LineItem">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="DistributorDescription"></xs:element>
                <xs:element ref="ProductIdentification"></xs:element>
                <xs:element ref="OrderQuantity"></xs:element>
                <xs:element ref="Comment"></xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="DistributorDescription">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="ProprietaryDistributorIdentifier"></xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    
    <xs:element name="ProprietaryDistributorIdentifier" type="xs:string" nillable="true"></xs:element>

    <xs:element name="ProductIdentification">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="ProprietaryProductIdentifier"></xs:element>
                <xs:element ref="DistributorProductIdentifier"></xs:element>
                <xs:element ref="ManufacturerProductIdentifier"></xs:element>
                <xs:element ref="GlobalProductIdentifier"></xs:element>
                <xs:element ref="ProductDescription"></xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="ProprietaryProductIdentifier">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="ProprietaryProductNumber"></xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="DistributorProductIdentifier">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="DistributorProductNumber"></xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="ManufacturerProductIdentifier">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="ManufacturerProductNumber"></xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="GlobalProductIdentifier">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="GlobalProductNumber"></xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="ProductDescription">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:maxLength value="100"></xs:maxLength>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>

    <xs:element name="ProprietaryProductNumber" nillable="true" type="xs:string"></xs:element>

    <xs:element name="DistributorProductNumber" nillable="true">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:maxLength value="25"></xs:maxLength>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>

    <xs:element name="ManufacturerProductNumber" nillable="true">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:maxLength value="50"></xs:maxLength>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>

    <xs:element name="GlobalProductNumber" nillable="true">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:maxLength value="15"></xs:maxLength>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>

    <xs:element name="OrderQuantity">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="RequestedQuantity"></xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="RequestedQuantity" type="xs:positiveInteger"></xs:element>

    <xs:element name="Comment">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="AdditionalText"></xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="AdditionalText" nillable="true">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:maxLength value="200"></xs:maxLength>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
</xs:schema>
