<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XML Spy v4.4 U (http://www.xmlspy.com) by Eric Allen (self) -->
<xs:schema targetNamespace="http://svallens.com/epall/javaml" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://svallens.com/epall/javaml" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xs:element name="java">
		<xs:annotation>
			<xs:documentation>Comment describing your root element</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="import" maxOccurs="unbounded"/>
				<xs:element name="class">
					<xs:complexType>
						<xs:choice maxOccurs="unbounded">
							<xs:element name="variable" type="variable" minOccurs="0"/>
							<xs:element name="method">
								<xs:complexType>
									<xs:sequence>
										<xs:element name="argument" minOccurs="0" maxOccurs="unbounded">
											<xs:complexType>
												<xs:attribute name="array" type="xs:boolean" use="optional" default="false"/>
												<xs:attribute name="type" type="xs:string" use="required"/>
												<xs:attribute name="name" type="xs:string" use="required"/>
											</xs:complexType>
										</xs:element>
										<xs:group ref="statement" maxOccurs="unbounded"/>
									</xs:sequence>
									<xs:attributeGroup ref="variable"/>
								</xs:complexType>
							</xs:element>
						</xs:choice>
						<xs:attribute name="name" type="xs:ID" use="required"/>
					</xs:complexType>
				</xs:element>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:attributeGroup name="variable">
		<xs:attribute name="name" type="xs:string" use="required"/>
		<xs:attribute name="type" type="xs:string" use="required"/>
		<xs:attribute name="static" type="xs:boolean" use="optional" default="false"/>
		<xs:attribute name="array" type="xs:boolean" use="optional" default="false"/>
		<xs:attribute name="access" use="optional">
			<xs:simpleType>
				<xs:restriction base="xs:string">
					<xs:enumeration value="package"/>
					<xs:enumeration value="private"/>
					<xs:enumeration value="public"/>
					<xs:enumeration value="protected"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
	</xs:attributeGroup>
	<xs:complexType name="variable">
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attributeGroup ref="variable"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:group name="statement">
		<xs:choice>
			<xs:element name="method-call">
				<xs:complexType>
					<xs:sequence minOccurs="0">
						<xs:element name="argument">
							<xs:complexType>
								<xs:simpleContent>
									<xs:extension base="xs:string">
										<xs:attribute name="ref" type="xs:string" use="optional"/>
									</xs:extension>
								</xs:simpleContent>
							</xs:complexType>
						</xs:element>
					</xs:sequence>
					<xs:attribute name="method" type="xs:string" use="required"/>
					<xs:attribute name="object" type="xs:string" use="required"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="statement"/>
			<xs:element name="code" type="xs:string"/>
		</xs:choice>
	</xs:group>
</xs:schema>

