Mercurial > hg > webaudioevaluationtool
changeset 443:e2bcbf7fe030 Dev_main
Added schema for Test Specification Document for validation (wip)
author | Nicholas Jillings <n.g.r.jillings@se14.qmul.ac.uk> |
---|---|
date | Wed, 23 Dec 2015 12:41:08 +0000 |
parents | 4866152611e6 |
children | 9d73d9f6b03e |
files | SpecificationSchema.xsd |
diffstat | 1 files changed, 234 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/SpecificationSchema.xsd Wed Dec 23 12:41:08 2015 +0000 @@ -0,0 +1,234 @@ +<?xml version="1.0"?> +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://127.0.0.1:8020/webaudioevaluationtool/SpecificationSchema.xsd" xmlns="http://127.0.0.1:8020/webaudioevaluationtool/SpecificationSchema.xsd" elementFormDefault="qualified"> + <xs:annotation> + <xs:documentation xml:lang="en"> + Schema for the Web Audio Evaluation Toolbox + </xs:documentation> + </xs:annotation> + <!-- definition of simple objects--> + <xs:element name="statement" type="xs:string"></xs:element> + <xs:element name="title" type="xs:string"></xs:element> + + <!-- definition of common attributes--> + <xs:attribute name="id" type="xs:ID"></xs:attribute> + <xs:attribute name="mandatory" type="xs:boolean"></xs:attribute> + <xs:attribute name="name" type="xs:string"></xs:attribute> + <xs:attribute name="url" type="xs:anyURI"></xs:attribute> + + <!-- definition of the complex nodes--> + <xs:element name="BrowserEvalProjectDocument"> + <xs:complexType> + <xs:sequence> + <xs:element ref="setup" maxOccurs="1"/> + <xs:element ref="audioHolder" minOccurs="1" maxOccurs="200"/> + </xs:sequence> + </xs:complexType> + </xs:element> + + <xs:element name="setup"> + <xs:complexType> + <xs:sequence> + <xs:element ref="PreTest"/> + <xs:element ref="PostTest"/> + <xs:element ref="Metric"/> + <xs:element ref="interface"/> + </xs:sequence> + <xs:attribute name="interface" type="xs:string" use="required"/> + <xs:attribute name="projectReturn" type="xs:string" use="required"/> + <xs:attribute name="randomiseOrder" type="xs:boolean" default="false"/> + <xs:attribute name="collectMetrics" type="xs:boolean" default="true"/> + <xs:attribute name="testPages" type="xs:nonNegativeInteger" default="0"/> + <xs:attribute name="loudness" type="xs:nonPositiveInteger" default="-23"/> + </xs:complexType> + </xs:element> + + <xs:element name="Metric"> + <xs:complexType> + <xs:sequence> + <xs:element name="metricEnable" type="xs:string" minOccurs="0" maxOccurs="200"></xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + + <xs:element name="check"> + <xs:complexType> + <xs:attribute name="name" type="xs:string" use="required"/> + </xs:complexType> + </xs:element> + + <xs:element name="show"> + <xs:complexType> + <xs:attribute ref="name" use="required"/> + </xs:complexType> + </xs:element> + + <xs:element name="scale"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:string"> + <xs:attribute name="position" type="xs:nonNegativeInteger" use="required"/> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + + <xs:element name="interface"> + <xs:complexType> + <xs:sequence> + <xs:element ref="title" minOccurs="0" maxOccurs="1"/> + <xs:element ref="check" minOccurs="0" maxOccurs="200"/> + <xs:element ref="show" minOccurs="0" maxOccurs="200"/> + <xs:element ref="scale" minOccurs="0" maxOccurs="200"/> + <xs:element ref="commentBoxPrefix" minOccurs="0" maxOccurs="1"/> + <xs:element name="option" minOccurs="0" maxOccurs="200"> + <xs:complexType> + <xs:attribute name="name" type="xs:string" use="required"/> + </xs:complexType> + </xs:element> + </xs:sequence> + <xs:attribute name="name" type="xs:string"/> + </xs:complexType> + </xs:element> + + <xs:element name="audioHolder"> + <xs:complexType> + <xs:sequence> + <xs:element ref="interface" minOccurs="0" maxOccurs="200"/> + <xs:element ref="audioElements" minOccurs="1" maxOccurs="200"/> + <xs:element name="CommentQuestion" minOccurs="0" maxOccurs="200"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:string"> + <xs:attribute name="id" type="xs:ID"/> + <xs:attribute name="type" type="xs:string"/> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + <xs:element ref="PreTest"/> + <xs:element ref="PostTest"/> + </xs:sequence> + <xs:attribute name="id" type="xs:string" use="required"/> + <xs:attribute name="hostURL" type="xs:string" use="required"/> + <xs:attribute name="randomiseOrder" type="xs:string" default="false"/> + <xs:attribute name="repeatCount" type="xs:nonNegativeInteger" default="0"/> + <xs:attribute name="loop" type="xs:boolean" default="false"/> + <xs:attribute name="elementComments" type="xs:boolean" default="true"/> + <xs:attribute name="loudness" type="xs:nonPositiveInteger" default="-23"/> + </xs:complexType> + </xs:element> + + <xs:element name="audioElements"> + <xs:complexType> + <xs:attribute name="id" type="xs:ID" use="required"/> + <xs:attribute name="url" type="xs:anyURI" use="required"/> + <xs:attribute name="gain" type="xs:integer" default="0"/> + <xs:attribute name="type" type="xs:string" default="normal"/> + <xs:attribute name="marker"> + <xs:simpleType> + <xs:restriction base="xs:positiveInteger"> + <xs:maxInclusive value="100"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + + <!-- Survery Nodes --> + <xs:element name="PreTest"> + <xs:complexType> + <xs:all> + <xs:element ref="statement" minOccurs="0"/> + <xs:element ref="question" minOccurs="0"/> + <xs:element ref="number" minOccurs="0"/> + <xs:element ref="radio" minOccurs="0"/> + <xs:element ref="checkbox" minOccurs="0"/> + </xs:all> + </xs:complexType> + </xs:element> + + <xs:element name="PostTest"> + <xs:complexType> + <xs:all> + <xs:element ref="statement" minOccurs="0"/> + <xs:element ref="question" minOccurs="0"/> + <xs:element ref="number" minOccurs="0"/> + <xs:element ref="radio" minOccurs="0"/> + <xs:element ref="checkbox" minOccurs="0"/> + </xs:all> + </xs:complexType> + </xs:element> + + <xs:element name="question"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:string"> + <xs:attribute name="id" type="xs:string" use="required"/> + <xs:attribute name="mandatory" type="xs:string" default="false"/> + <xs:attribute name="boxsize" default="normal"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="small"/> + <xs:enumeration value="normal"/> + <xs:enumeration value="large"/> + <xs:enumeration value="hude"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + + <xs:element name="number"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:string"> + <xs:attribute name="id" type="xs:string" use="required"/> + <xs:attribute name="mandatory" type="xs:string" default="false"/> + <xs:attribute name="min" type="xs:decimal"/> + <xs:attribute name="max" type="xs:decimal"/> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + + <xs:element name="checkbox"> + <xs:complexType> + <xs:sequence> + <xs:element ref="statement" minOccurs="1" maxOccurs="1"/> + <xs:element name="option" minOccurs="1" maxOccurs="200"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:string"> + <xs:attribute name="name" type="xs:string" use="required"/> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + </xs:sequence> + <xs:attribute name="id" type="xs:string" use="required"/> + <xs:attribute name="mandatory" type="xs:string" default="false"/> + </xs:complexType> + </xs:element> + + <xs:element name="radio"> + <xs:complexType> + <xs:sequence> + <xs:element ref="statement" minOccurs="1" maxOccurs="1"/> + <xs:element name="option" minOccurs="1" maxOccurs="200"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:string"> + <xs:attribute name="name" type="xs:string" use="required"/> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + </xs:sequence> + <xs:attribute name="id" type="xs:string" use="required"/> + <xs:attribute name="mandatory" type="xs:string" default="false"/> + </xs:complexType> + </xs:element> + +</xs:schema> \ No newline at end of file