view xml/test-schema.xsd @ 2376:c41caaa96633

Some fixes for #90. Also a failsafe loop if the server never responds with meaningul information from saves (for instance, running only on apache or basic http servers). More changes to pythonServer for python 3.5. Please check if still valid on 2.7
author Nicholas Jillings <nicholas.jillings@mail.bcu.ac.uk>
date Thu, 19 May 2016 10:44:19 +0100
parents f1e67258f0b8
children fbc22422d73d
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" />
        <xs:attribute name="poolSize" type="xs:nonNegativeInteger" default="0" />
        <xs:attribute name="alwaysInclude" type="xs:boolean" default="false" />

        <xs:attribute name="preSilence">
            <xs:simpleType>
                <xs:restriction base="xs:decimal">
                    <xs:minInclusive value="0.0" />
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="postSilence">
            <xs:simpleType>
                <xs:restriction base="xs:decimal">
                    <xs:minInclusive value="0.0" />
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>

        <!-- 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 name="exitText" type="xs:string" minOccurs="0" maxOccurs="1" />
                    <xs:element ref="survey" minOccurs="0" 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" type="xs:string" use="optional" default="" />
                <xs:attribute name="returnURL" type="xs:string" use="optional" default="" />
                <xs:attribute name="randomiseOrder" type="xs:boolean" default="false" />
                <xs:attribute ref="poolSize" />
                <xs:attribute name="loudness" type="xs:nonPositiveInteger" use="optional" />
                <xs:attribute name="sampleRate" type="xs:positiveInteger" use="optional" />
                <xs:attribute name="calibration" type="xs:boolean" default="false" />
                <xs:attribute name="crossFade" default="0.0">
                    <xs:simpleType>
                        <xs:restriction base="xs:decimal">
                            <xs:minInclusive value="0.0" />
                        </xs:restriction>
                    </xs:simpleType>
                </xs:attribute>
                <xs:attribute ref="preSilence" />
                <xs:attribute ref="postSilence" />
            </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" minOccurs="0" maxOccurs="2" />
                </xs:sequence>
                <xs:attribute ref="id" use="required" />
                <xs:attribute name="hostURL" type="xs:anyURI" default="" />
                <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="synchronous" type="xs:boolean" default="false" />
                <xs:attribute name="showElementComments" type="xs:boolean" default="false" />
                <xs:attribute name="loudness" type="xs:nonPositiveInteger" use="optional" />
                <xs:attribute name="label" use="optional" default="default">
                    <xs:simpleType>
                        <xs:restriction base="xs:string">
                            <xs:enumeration value="default" />
                            <xs:enumeration value="none" />
                            <xs:enumeration value="number" />
                            <xs:enumeration value="letter" />
                            <xs:enumeration value="capital" />
                        </xs:restriction>
                    </xs:simpleType>
                </xs:attribute>
                <xs:attribute ref="poolSize" />
                <xs:attribute ref="alwaysInclude" />
                <xs:attribute ref="preSilence" />
                <xs:attribute ref="postSilence" />
            </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" type="xs:decimal" use="optional" />
                            <xs:attribute name="max" type="xs:decimal" 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 ref="name" />
                <xs:attribute name="type" default="normal">
                    <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:attribute ref="alwaysInclude" />
                <xs:attribute ref="preSilence" />
                <xs:attribute ref="postSilence" />
            </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="optional" />
                <xs:attribute ref="name" use="optional" />
                <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" minOccurs="0" 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" use="required" />
                            <xs:attribute ref="name" />
                            <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>