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

    <xsd:element name="xls_workbook">
    	<xsd:annotation>
    		<xsd:documentation>XLXML Document, can be transformed to an Excel File using XML2XL</xsd:documentation>
    	</xsd:annotation>
        <xsd:complexType>
            <xsd:sequence>
            	<xsd:element name="xls_styles" type="xls_StylesType"/>
                <xsd:element name="xls_sheet" type="xls_DataType" maxOccurs="unbounded"/>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
	
	<xsd:annotation>
		<xsd:documentation>Consists of CellStyles</xsd:documentation>
	</xsd:annotation>
	<xsd:complexType name="xls_StylesType">
	    <xsd:sequence>
	    <!-- attrib name -->
            <xsd:element name="xls_cellstyle" type="xls_CellStyleType" maxOccurs="unbounded"/>
	    </xsd:sequence>
	</xsd:complexType>

	<xsd:annotation>
		<xsd:documentation>The Style for a single cell</xsd:documentation>
	</xsd:annotation>
	<xsd:complexType name="xls_CellStyleType">
		<xsd:attribute name="name" type="xsd:string"/>
	    <xsd:sequence>
	    	<xsd:element name="xls_font" minOccurs="0">
				<xsd:complexType>
					<xsd:attribute name="name" type="xsd:string" minOccurs="0"/>
					<xsd:attribute name="height" type="xsd:unsignedShort" minOccurs="0"/>
					<xsd:attribute name="bold" type="xsd:boolean" minOccurs="0"/>
					<xsd:attribute name="color" type="xsd:unsignedShort" minOccurs="0"/>
				</xsd:complexType>
    		</xsd:element>
	    	<xsd:element name="xls_border" minOccurs="0" maxOccurs="4">
				<xsd:complexType>
					<xsd:attribute name="location" type="xls_BorderLocation"/>
					<xsd:attribute name="type" type="xls_BorderType"/>
				</xsd:complexType>
    		</xsd:element>
	    	<xsd:element name="xls_fill" minOccurs="0">
				<xsd:complexType>
					<xsd:attribute name="color" type="xsd:unsignedShort" minOccurs="0"/>
				</xsd:complexType>
    		</xsd:element>
	    	<xsd:element name="xls_align" minOccurs="0">
				<xsd:complexType>
					<xsd:attribute name="align" type="xls_Align"/>
					<xsd:attribute name="valign" type="xls_VAlign"/>
				</xsd:complexType>
    		</xsd:element>
	    	<xsd:element name="xls_format" minOccurs="0">
				<xsd:complexType>
					<xsd:attribute name="format" type="xsd:unsignedShort" minOccurs="0"/>
				</xsd:complexType>
    		</xsd:element>
	    </xsd:sequence>
	</xsd:complexType>

	<xsd:simpleType name="xls_BorderLocation">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="TOP"/>
			<xsd:enumeration value="BOTTOM"/>
			<xsd:enumeration value="LEFT"/>
			<xsd:enumeration value="RIGHT"/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="xls_BorderType">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="NONE"/>
			<xsd:enumeration value="DASH_DOT"/>
			<xsd:enumeration value="DASH_DOT_DOT"/>
			<xsd:enumeration value="DASHED"/>
			<xsd:enumeration value="DOTTED"/>
			<xsd:enumeration value="DOUBLE"/>
			<xsd:enumeration value="HAIR"/>
			<xsd:enumeration value="MEDIUM"/>
			<xsd:enumeration value="MEDIUM_DASH_DOT"/>
			<xsd:enumeration value="MEDIUM_DASHED"/>
			<xsd:enumeration value="THICK"/>
			<xsd:enumeration value="THIN"/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="xls_Align">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="ALIGN_LEFT"/>
			<xsd:enumeration value="ALIGN_RIGHT"/>
			<xsd:enumeration value="ALIGN_CENTER"/>
			<xsd:enumeration value="ALIGN_CENTER_SELECTION"/>
			<xsd:enumeration value="ALIGN_FILL"/>
			<xsd:enumeration value="ALIGN_GENERAL"/>
			<xsd:enumeration value="ALIGN_JUSTIFY"/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="xls_VAlign">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="VERTICAL_BOTTOM"/>
			<xsd:enumeration value="VERTICAL_CENTER"/>
			<xsd:enumeration value="VERTICAL_JUSTIFY"/>
			<xsd:enumeration value="VERTICAL_TOP"/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:annotation>
		<xsd:documentation>A single Excel sheet</xsd:documentation>
	</xsd:annotation>
	<xsd:complexType name="xls_DataType">
		<xsd:attribute name="name" type="xsd:string" minOccurs="0"/>
	    <xsd:sequence>
            <xsd:element name="xls_row" type="xls_RowType" minOccurs="0" maxOccurs="unbounded"/>
	    </xsd:sequence>
	</xsd:complexType>

	<xsd:annotation>
		<xsd:documentation>A single Excel row</xsd:documentation>
	</xsd:annotation>
	<xsd:complexType name="xls_RowType">
		<xsd:attribute name="height" type="xsd:unsignedShort" minOccurs="0"/>
	    <xsd:sequence>
            <xsd:element name="xls_cell" type="xls_CellType" minOccurs="0" maxOccurs="unbounded">
            </xsd:element>
	    </xsd:sequence>
	</xsd:complexType>

	<xsd:annotation>
		<xsd:documentation>A single Excel cell</xsd:documentation>
	</xsd:annotation>
	<xsd:complexType name="xls_CellType">
		<xsd:simpleContent>
			<xsd:extension base="xsd:string">
				<xsd:attribute name="width" type="xsd:unsignedShort" minOccurs="0"/>
				<xsd:attribute name="style" type="xsd:string"/>
				<xsd:attribute name="numeric" type="xsd:boolean" minOccurs="0"/>
			</xsd:extension>
		</xsd:simpleContent>
	</xsd:complexType>
</xsd:schema>