changeset 1123:23c3e630571b

Added schema
author Nicholas Jillings <n.g.r.jillings@se14.qmul.ac.uk>
date Tue, 29 Dec 2015 13:54:56 +0000
parents 0aaf631d502d
children 0f161e776cb4
files test-schema.xsd
diffstat 1 files changed, 226 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-schema.xsd	Tue Dec 29 13:54:56 2015 +0000
@@ -0,0 +1,226 @@
+<?xml version="1.0"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+  <!-- define simple elements-->
+  <xs:element name="statement" type="xs:string"/>
+  <xs:element name="metricenable" type="xs:string"/>
+  <xs:element name="title" type="xs:string"/>
+  
+  <!-- define simple attributes-->
+  <xs:attribute name="id" type="xs:ID"/>
+  <xs:attribute name="mandatory" type="xs:boolean"/>
+  <xs:attribute name="name" type="xs:string"/>
+  
+  <!-- define complex elements-->
+  <xs:element name="waet">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="setup" minOccurs="1" maxOccurs="1"/>
+        <xs:element ref="page" minOccurs="1" maxOccurs="unbounded"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="setup">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="survey" maxOccurs="2"/>
+        <xs:element ref="metric" maxOccurs="1"/>
+        <xs:element ref="interface" maxOccurs="1"/>
+      </xs:sequence>
+      <xs:attribute name="interface" type="xs:string" use="required"/>
+      <xs:attribute name="project-return" use="required" type="xs:string"/>
+      <xs:attribute name="randomise-order" type="xs:boolean" default="false"/>
+      <xs:attribute name="test-pages" type="xs:nonNegativeInteger" default="0"/>
+      <xs:attribute name="loudness" type="xs:nonPositiveInteger" use="optional"/>
+      <xs:attribute name="sample-rate" type="xs:positiveInteger" use="optional"/>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="page">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="title" minOccurs="0" maxOccurs="1"/>
+        <xs:element name="commentboxprefix" type="xs:string" minOccurs="0" maxOccurs="1"/>
+        <xs:element ref="interface" minOccurs="1" maxOccurs="unbounded"/>
+        <xs:element ref="audioelement" minOccurs="1" maxOccurs="unbounded"/>
+        <xs:element ref="commentquestion" minOccurs="0" maxOccurs="unbounded"/>
+        <xs:element ref="survey" maxOccurs="2"/>
+      </xs:sequence>
+      <xs:attribute ref="id" use="required"/>
+      <xs:attribute name="host-URL" type="xs:anyURI" use="required"/>
+      <xs:attribute name="randomise-order" type="xs:boolean" default="false"/>
+      <xs:attribute name="repeat-count" type="xs:nonNegativeInteger" default="0"/>
+      <xs:attribute name="loop" type="xs:boolean" default="false"/>
+      <xs:attribute name="show-element-comments" type="xs:boolean" default="false"/>
+      <xs:attribute name="loudness" type="xs:nonPositiveInteger" use="optional"/>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="metric">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element name="metricenable" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="interface">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="title" minOccurs="0" maxOccurs="1"/>
+        <xs:element name="interfaceoption" minOccurs="0" maxOccurs="unbounded">
+          <xs:complexType>
+            <xs:attribute name="type" use="required">
+              <xs:simpleType>
+                <xs:restriction base="xs:string">
+                  <xs:enumeration value="check"/>
+                  <xs:enumeration value="show"/>
+                  <xs:enumeration value="option"/>
+                </xs:restriction>
+              </xs:simpleType>
+            </xs:attribute>
+            <xs:attribute ref="name" use="required"/>
+            <xs:attribute name="min" use="optional"/>
+            <xs:attribute name="max" use="optional"/>
+          </xs:complexType>
+        </xs:element>
+        <xs:element name="scales" minOccurs="0" maxOccurs="1">
+          <xs:complexType>
+            <xs:sequence>
+              <xs:element name="scalelabel" minOccurs="0" maxOccurs="unbounded">
+                <xs:complexType>
+                  <xs:simpleContent>
+                    <xs:extension base="xs:string">
+                      <xs:attribute name="position" use="required">
+                        <xs:simpleType>
+                          <xs:restriction base="xs:nonNegativeInteger">
+                            <xs:minInclusive value="0"/>
+                            <xs:maxInclusive value="100"/>
+                          </xs:restriction>
+                        </xs:simpleType>
+                      </xs:attribute>
+                    </xs:extension>
+                  </xs:simpleContent>
+                </xs:complexType>
+              </xs:element>
+            </xs:sequence>
+          </xs:complexType>
+        </xs:element>
+      </xs:sequence>
+      <xs:attribute ref="name" use="optional"/>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="audioelement">
+    <xs:complexType>
+      <xs:attribute ref="id" use="required"/>
+      <xs:attribute name="url" type="xs:anyURI" use="required"/>
+      <xs:attribute name="gain" type="xs:decimal"/>
+      <xs:attribute name="type">
+        <xs:simpleType>
+          <xs:restriction base="xs:string">
+            <xs:enumeration value="normal"/>
+            <xs:enumeration value="anchor"/>
+            <xs:enumeration value="reference"/>
+            <xs:enumeration value="outside-reference"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+      <xs:attribute name="marker" use="optional">
+        <xs:simpleType>
+          <xs:restriction base="xs:nonNegativeInteger">
+            <xs:minInclusive value="0"/>
+            <xs:maxInclusive value="100"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+      <xs:attribute name="loudness" type="xs:nonPositiveInteger" use="optional"/>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="commentquestion">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="statement" minOccurs="0" maxOccurs="1"/>
+        <xs:element name="option" minOccurs="0" maxOccurs="unbounded">
+          <xs:complexType>
+            <xs:simpleContent>
+              <xs:extension base="xs:string">
+                <xs:attribute ref="name"/>
+              </xs:extension>
+            </xs:simpleContent>
+          </xs:complexType>
+        </xs:element>
+      </xs:sequence>
+      <xs:attribute ref="id" use="required"/>
+      <xs:attribute name="type" default="question">
+        <xs:simpleType>
+          <xs:restriction base="xs:string">
+            <xs:enumeration value="question"/>
+            <xs:enumeration value="radio"/>
+            <xs:enumeration value="checkbox"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="survey">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element name="surveyentry" maxOccurs="unbounded">
+          <xs:complexType>
+            <xs:sequence>
+              <xs:element ref="statement" minOccurs="1" maxOccurs="1"/>
+              <xs:element name="option" minOccurs="0" maxOccurs="unbounded">
+                <xs:complexType>
+                  <xs:simpleContent>
+                    <xs:extension base="xs:string">
+                      <xs:attribute ref="name"/>
+                    </xs:extension>
+                  </xs:simpleContent>
+                </xs:complexType>
+              </xs:element>
+            </xs:sequence>
+            <xs:attribute ref="id"/>
+            <xs:attribute ref="mandatory"/>
+            <xs:attribute name="min"/>
+            <xs:attribute name="max"/>
+            <xs:attribute name="type" use="required">
+              <xs:simpleType>
+                <xs:restriction base="xs:string">
+                  <xs:enumeration value="statement"/>
+                  <xs:enumeration value="question"/>
+                  <xs:enumeration value="number"/>
+                  <xs:enumeration value="radio"/>
+                  <xs:enumeration value="checkbox"/>
+                </xs:restriction>
+              </xs:simpleType>
+            </xs:attribute>
+            <xs:attribute name="boxsize" default="normal">
+              <xs:simpleType>
+                <xs:restriction base="xs:string">
+                  <xs:enumeration value="normal"/>
+                  <xs:enumeration value="large"/>
+                  <xs:enumeration value="small"/>
+                  <xs:enumeration value="huge"/>
+                </xs:restriction>
+              </xs:simpleType>
+            </xs:attribute>
+          </xs:complexType>
+        </xs:element>
+      </xs:sequence>
+      <xs:attribute name="location">
+        <xs:simpleType>
+          <xs:restriction base="xs:string">
+            <xs:enumeration value="before"/>
+            <xs:enumeration value="pre"/>
+            <xs:enumeration value="after"/>
+            <xs:enumeration value="post"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+    </xs:complexType>
+  </xs:element>
+  
+</xs:schema>
\ No newline at end of file