view test-schema.xsd @ 469:d39d243e6601 Dev_main

Outside references now have an interfaceDOM. All interfaceDOM objects must respond to canMove() for determining if fixed or not.
author Nicholas Jillings <n.g.r.jillings@se14.qmul.ac.uk>
date Tue, 12 Jan 2016 18:29:55 +0000
parents 44a6fe06e71a
children 3a9b869ba7f8
line wrap: on
line source
<?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="projectReturn" use="required" type="xs:string"/>
      <xs:attribute name="randomiseOrder" type="xs:boolean" default="false"/>
      <xs:attribute name="testPages" type="xs:nonNegativeInteger" default="0"/>
      <xs:attribute name="loudness" type="xs:nonPositiveInteger" use="optional"/>
      <xs:attribute name="sampleRate" 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="hostURL" type="xs:anyURI" use="required"/>
      <xs:attribute name="randomiseOrder" type="xs:boolean" default="false"/>
      <xs:attribute name="repeatCount" type="xs:nonNegativeInteger" default="0"/>
      <xs:attribute name="loop" type="xs:boolean" default="false"/>
      <xs:attribute name="showElementComments" 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" default="0"/>
      <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" type="xs:decimal"/>
            <xs:attribute name="max" type="xs:decimal"/>
            <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>