<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

	<xsd:annotation>
	  <xsd:documentation xml:lang="en">
	   JavaScript Configuration Schema for HtmlUnit
	  </xsd:documentation>
	</xsd:annotation>

	<xsd:element name="configuration" type="configurationType"/>

	<xsd:complexType name="configurationType">
		<xsd:sequence>
			<xsd:element name="doclink" type="doclinkType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="class" type="classType" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="doclinkType">
		<xsd:attribute name="url" type="xsd:string" use="required"/>
		<xsd:attribute name="descr" type="xsd:string"/>
	</xsd:complexType>

	<xsd:complexType name="classType">
		<xsd:sequence>
			<xsd:element name="doclink" type="doclinkType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="browser" type="requiredBrowserType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="constant" type="constantType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="property" type="propertyType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="function" type="functionType" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attribute name="notImplemented" type="xsd:boolean" default="false"/>
		<xsd:attribute name="classname" type="xsd:string" use="required"/>
		<xsd:attribute name="jsConstructor" type="xsd:string"/>
		<xsd:attribute name="htmlClass" type="xsd:string"/>
		<xsd:attribute name="JSObject" type="xsd:boolean" default="false"/>
		<xsd:attribute name="extends" type="xsd:string"/>
	</xsd:complexType>

	<xsd:complexType name="constantType">
		<xsd:sequence>
			<xsd:element name="browser" type="requiredBrowserType" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attribute name="name" type="xsd:string" use="required"/>
	</xsd:complexType>

	<xsd:complexType name="propertyType">
		<xsd:sequence>
			<xsd:element name="doclink" type="doclinkType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="browser" type="requiredBrowserType" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attribute name="notImplemented" type="xsd:boolean" default="false"/>
		<xsd:attribute name="name" type="xsd:string" use="required"/>
		<xsd:attribute name="readable" type="xsd:boolean" default="true"/>
		<xsd:attribute name="writable" type="xsd:boolean" default="true"/>
	</xsd:complexType>

	<xsd:complexType name="functionType">
		<xsd:sequence>
			<xsd:element name="doclink" type="doclinkType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="browser" type="requiredBrowserType" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attribute name="name" type="xsd:string" use="required"/>
		<xsd:attribute name="notImplemented" type="xsd:boolean" default="false"/>
	</xsd:complexType>

	<xsd:complexType name="requiredBrowserType">
		<xsd:attribute name="name" use="required">
			<xsd:simpleType>
				<xsd:restriction base="xsd:string">
					<xsd:enumeration value="Firefox"/>
					<xsd:enumeration value="Internet Explorer"/>
				</xsd:restriction>
			</xsd:simpleType>
		</xsd:attribute>
		<xsd:attribute name="min-version" type="xsd:float"/>
		<xsd:attribute name="max-version" type="xsd:float"/>
	</xsd:complexType>
</xsd:schema>
