VJA:Schema

From RemyWiki
Jump to navigation Jump to search

XML Schema

Just copy and paste this into a new text and change the extension to .xsd

<?xml version="1.0" encoding="UTF-8"?>
<!-- created by David Wilson --!>
<xs:schema targetNamespace="http://vjarmy.com/iidx/ns#" elementFormDefault="qualified"
 attributeFormDefault="unqualified" xmlns="http://vjarmy.com/iidx/ns#"
 xmlns:xs="http://www.w3.org/2001/XMLSchema">
	<xs:element name="vjadata">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="user"/>
			</xs:sequence>
			<xs:attribute name="version" type="xs:float" default="0.1"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="user">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="id" type="xs:int"/>
				<xs:element name="login" type="xs:string"/>
				<xs:element name="djname">
					<xs:simpleType>
						<xs:restriction base="xs:string">
							<xs:minLength value="1"/>
							<xs:maxLength value="6"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:element>
				<xs:element ref="scoredata"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="scoredata">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="song" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="song">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="id" type="xs:int"/>
				<xs:element name="songname" type="xs:string"/>
				<xs:element name="artist" type="xs:string"/>
				<xs:element name="genre" type="xs:string"/>
				<xs:element name="bpm">
					<xs:simpleType>
						<xs:restriction base="xs:int">
							<xs:totalDigits value="3"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:element>
				<xs:element name="styles" type="xs:string"/>
				<xs:element name="notes">
					<xs:simpleType>
						<xs:restriction base="xs:int">
							<xs:totalDigits value="4"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:element>
				<xs:element name="exscore">
					<xs:simpleType>
						<xs:restriction base="xs:int">
							<xs:totalDigits value="4"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:element>
				<xs:element name="grade">
					<xs:simpleType>
						<xs:restriction base="xs:string">
							<xs:minLength value="1"/>
							<xs:maxLength value="3"/>
							<xs:enumeration value="AAA"/>
							<xs:enumeration value="AA"/>
							<xs:enumeration value="A"/>
							<xs:enumeration value="B"/>
							<xs:enumeration value="C"/>
							<xs:enumeration value="D"/>
							<xs:enumeration value="E"/>
							<xs:enumeration value="F"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:element>
				<xs:element name="djpoints">
					<xs:simpleType>
						<xs:restriction base="xs:int">
							<xs:maxInclusive value="10"/>
							<xs:minInclusive value="0"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:element>
				<xs:element ref="scorebreakdown"/>
				<xs:element ref="mods"/>
				<xs:element name="cleartype">
					<xs:simpleType>
						<xs:restriction base="xs:string">
							<xs:enumeration value="played"/>
							<xs:enumeration value="cleared"/>
							<xs:enumeration value="combo"/>
							<xs:enumeration value="comboed"/>
							<xs:enumeration value="perfect"/>
							<xs:enumeration value="perfected"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:element>
				<xs:element name="picurl" type="xs:anyURI" minOccurs="0"/>
				<xs:element name="comment" type="xs:string" minOccurs="0"/>
				<xs:element name="date" type="xs:string"/>
			</xs:sequence>
			<xs:attribute name="diff" use="required">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:enumeration value="L7"/>
						<xs:enumeration value="7"/>
						<xs:enumeration value="A"/>
						<xs:enumeration value="L14"/>
						<xs:enumeration value="14"/>
						<xs:enumeration value="A14"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<xs:element name="scorebreakdown">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="justgreats" type="xs:int"/>
				<xs:element name="greats" type="xs:int"/>
				<xs:element name="good" type="xs:int"/>
				<xs:element name="bad" type="xs:int"/>
				<xs:element name="poor" type="xs:int"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="mods">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="highspeed">
					<xs:simpleType>
						<xs:restriction base="xs:int"/>
					</xs:simpleType>
				</xs:element>
				<xs:element name="hidsud" minOccurs="0">
					<xs:simpleType>
						<xs:restriction base="xs:string">
							<xs:enumeration value="H"/>
							<xs:enumeration value="S"/>
							<xs:enumeration value="B"/>
							<xs:enumeration value="T"/>
							<xs:enumeration value="N"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:element>
				<xs:element name="hardeasy" minOccurs="0">
					<xs:simpleType>
						<xs:restriction base="xs:string">
							<xs:enumeration value="H"/>
							<xs:enumeration value="E"/>
							<xs:enumeration value="N"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:element>
				<xs:element name="ranmir" minOccurs="0">
					<xs:simpleType>
						<xs:restriction base="xs:string">
							<xs:enumeration value="R"/>
							<xs:enumeration value="M"/>
							<xs:enumeration value="B"/>
							<xs:enumeration value="N"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:element>
				<xs:element name="autoscratch" minOccurs="0">
					<xs:simpleType>
						<xs:restriction base="xs:string"/>
					</xs:simpleType>
				</xs:element>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
</xs:schema>