<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

    <xsd:element name="invoice" type="invoiceType"></xsd:element>
    
    <xsd:complexType name="invoiceType">
    	<xsd:sequence>
    		<xsd:element name="date" type="xsd:date"></xsd:element>
            <xsd:element name="number" type="xsd:int"></xsd:element>
            <xsd:element name="products" type="productsType"></xsd:element>
    		<xsd:element name="payments" type="paymentsType"></xsd:element>
    	</xsd:sequence>
    </xsd:complexType>

    <xsd:complexType name="productsType">
    	<xsd:choice minOccurs="1" maxOccurs="unbounded">
    		<xsd:element name="product" type="productType"></xsd:element>
    	</xsd:choice>
    </xsd:complexType>

    <xsd:complexType name="productType">
    	<xsd:attribute name="price" type="xsd:float" use="required"></xsd:attribute>
    	<xsd:attribute name="description" type="xsd:string" use="required"></xsd:attribute>
    </xsd:complexType>


    <xsd:complexType name="paymentsType">
    	<xsd:sequence minOccurs="1" maxOccurs="unbounded">
    		<xsd:element name="payment" type="paymentType"></xsd:element>
    	</xsd:sequence>
    </xsd:complexType>

    <xsd:complexType name="paymentType">
    	<xsd:attribute name="amount" type="xsd:float" use="required"></xsd:attribute>
    	<xsd:attribute name="method" type="paymentMethodType" use="required"></xsd:attribute>
    </xsd:complexType>

    <xsd:simpleType name="paymentMethodType">
    	<xsd:restriction base="xsd:string">
    		<xsd:enumeration value="credit"></xsd:enumeration>
    		<xsd:enumeration value="debit"></xsd:enumeration>
    		<xsd:enumeration value="cash"></xsd:enumeration>
    	</xsd:restriction>
    </xsd:simpleType>
</xsd:schema>