<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
			elementFormDefault="qualified">
			
	<xsd:include schemaLocation="types.xsd" />
	
	<xsd:complexType name="autodetectInformation">
		<xsd:all>
			<xsd:element name="ieee1284" type="xsd:string" minOccurs="0" />
			<xsd:element name="commandset" type="xsd:string" minOccurs="0" />
			<xsd:element name="description" type="xsd:string" minOccurs="0" />
			<xsd:element name="manufacturer" type="xsd:string" minOccurs="0" />
			<xsd:element name="model" type="xsd:string" minOccurs="0" />
		</xsd:all>
	</xsd:complexType>
	
	<xsd:element name="printer">
		<xsd:complexType>
			<xsd:all>
				<xsd:element name="make" type="xsd:string" />
				<xsd:element name="model" type="xsd:string" />
				<xsd:element name="pcmodel" minOccurs="0">
					<xsd:simpleType>
						<xsd:restriction base="xsd:string">
							<xsd:pattern value="[A-Z0-9_]{0,8}" />
						</xsd:restriction>
					</xsd:simpleType>
				</xsd:element>
				
				<!-- <mechanism> -->
				<xsd:element name="mechanism" minOccurs="0">
					<xsd:annotation>
						<xsd:documentation>
							The mechanism section describes the various facets of a
							printer's operating mechanism such as the maximum resolution
							supported, the type of the printer (supported types are inkjet,
							dotmatrix, laser, led, impact, sublimation and transfer), the 
							margin specifications, some comments on the consumables (like 
							toner or ribbon etc.) and if the printer prints in color.
						</xsd:documentation>
					</xsd:annotation>
					<xsd:complexType>
						<xsd:all>
							<xsd:element name="laser" minOccurs="0">
								<xsd:complexType />
							</xsd:element>
							<xsd:element name="led" minOccurs="0">
								<xsd:complexType />
							</xsd:element>
							<xsd:element name="inkjet" minOccurs="0">
								<xsd:complexType />
							</xsd:element>
							<xsd:element name="dotmatrix" minOccurs="0">
								<xsd:complexType />
							</xsd:element>
							<xsd:element name="impact" minOccurs="0">
								<xsd:complexType />
							</xsd:element>
							<xsd:element name="sublimation" minOccurs="0">
								<xsd:complexType />
							</xsd:element>
							<xsd:element name="transfer" minOccurs="0">
								<xsd:complexType />
							</xsd:element>
							<xsd:element name="thermal" minOccurs="0">
								<xsd:complexType />
							</xsd:element>
							<!--<xsd:group ref="printerTypes" minOccurs="0" />-->
							<xsd:element name="color" minOccurs="0">
								<xsd:complexType />
							</xsd:element>
							<xsd:element name="resolution" minOccurs="0">
								<xsd:complexType>
									<xsd:all>
										<xsd:element name="dpi" minOccurs="0">
											<xsd:complexType>
												<xsd:all>
													<xsd:element name="x" type="xsd:nonNegativeInteger" minOccurs="0" />
													<xsd:element name="y" type="xsd:nonNegativeInteger" minOccurs="0" />
												</xsd:all>
											</xsd:complexType>
										</xsd:element>
									</xsd:all>
								</xsd:complexType>
							</xsd:element>
							<xsd:element name="margins" type="marginsDefinition" minOccurs="0" />
						</xsd:all>
					</xsd:complexType>
				</xsd:element>
				<!-- </mechanism> -->
				
				<xsd:element name="url" type="xsd:string" minOccurs="0" />
				
				<!-- <lang> -->
				<xsd:element name="lang" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>
						The lang section describes the printer command languages 
						that are understood by this printer. A printer may be built 
						to understand more than one language.
					</xsd:documentation>
				</xsd:annotation>
					<xsd:complexType>
						<xsd:all>
							<xsd:element name="postscript" minOccurs="0">
								<xsd:complexType>
									<xsd:attribute name="level" type="xsd:string" />
								</xsd:complexType>
							</xsd:element>
							<xsd:element name="pdf" minOccurs="0">
								<xsd:complexType>
									<xsd:attribute name="level" type="xsd:string" />
								</xsd:complexType>
							</xsd:element>
							<xsd:element name="lips" minOccurs="0">
								<xsd:complexType>
									<xsd:attribute name="level" type="xsd:string" />
								</xsd:complexType>
							</xsd:element>
							<xsd:element name="pcl" minOccurs="0">
								<xsd:complexType>
									<xsd:attribute name="level" type="xsd:string" />
								</xsd:complexType>
							</xsd:element>
							<xsd:element name="escp" minOccurs="0">
								<xsd:complexType>
									<xsd:attribute name="level" type="xsd:string" />
								</xsd:complexType>
							</xsd:element>
							<xsd:element name="escp2" minOccurs="0">
								<xsd:complexType>
									<xsd:attribute name="level" type="xsd:string" />
								</xsd:complexType>
							</xsd:element>
							<xsd:element name="hpgl2" minOccurs="0">
								<xsd:complexType>
									<xsd:attribute name="level" type="xsd:string" />
								</xsd:complexType>
							</xsd:element>
							<xsd:element name="tiff" minOccurs="0">
								<xsd:complexType>
									<xsd:attribute name="level" type="xsd:string" />
								</xsd:complexType>
							</xsd:element>
							<xsd:element name="proprietary" minOccurs="0">
								<xsd:complexType />
							</xsd:element>
							<xsd:element name="pjl" minOccurs="0">
								<xsd:complexType />
							</xsd:element>
							<xsd:element name="text" minOccurs="0">
								<xsd:complexType>
									<xsd:all>
										<xsd:element name="charset" type="xsd:string" />
									</xsd:all>
								</xsd:complexType>
							</xsd:element>
						</xsd:all>
					</xsd:complexType>
				</xsd:element>
				<!-- </lang> -->
				
				<xsd:element name="autodetect" minOccurs="0">
					<xsd:complexType>
						<xsd:all>
							<xsd:element name="general" type="autodetectInformation" minOccurs="0" />
							<xsd:element name="parallel" type="autodetectInformation" minOccurs="0" />
							<xsd:element name="usb" type="autodetectInformation" minOccurs="0" />
							<xsd:element name="snmp" type="autodetectInformation" minOccurs="0" />
						</xsd:all>
					</xsd:complexType>
				</xsd:element>
				
				<xsd:element name="functionality">
					<xsd:simpleType>
						<xsd:restriction base="xsd:string">
							<xsd:enumeration value="A" />
							<xsd:enumeration value="B" />
							<xsd:enumeration value="D" />
							<xsd:enumeration value="F" />
							<xsd:enumeration value="" />
						</xsd:restriction>
					</xsd:simpleType>
				</xsd:element>
				
				<xsd:element name="driver" type="xsd:string" minOccurs="0" />
				<xsd:element name="drivers" minOccurs="0">
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name="driver" maxOccurs="unbounded">
								<xsd:complexType>
									<xsd:all>
										<xsd:element name="id" type="xsd:string"/>
										<xsd:element name="ppd" type="xsd:string" minOccurs="0" />
										<xsd:element name="comments" type="i18nString" minOccurs="0" />
									</xsd:all>
								</xsd:complexType>
							</xsd:element>
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>
				
				<xsd:element name="contrib_url" type="xsd:string" minOccurs="0" />
				<xsd:element name="comments" type="i18nString" minOccurs="0" />
			</xsd:all>
			<xsd:attribute name="id" type="printerID" use="required" />
		</xsd:complexType>
	</xsd:element>
</xsd:schema>
