view xml/test-schema.xsd @ 3141:335bc77627e0 tip

fixing discrete interface to allow labels to display
author Dave Moffat <me@davemoffat.com>
date Mon, 26 Jul 2021 12:15:24 +0100
parents 998e05c5769a
children
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" default="0.0">
            <xs:simpleType>
                <xs:restriction base="xs:decimal">
                    <xs:minInclusive value="0.0" />
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="postSilence" default="0.0">
            <xs:simpleType>
                <xs:restriction base="xs:decimal">
                    <xs:minInclusive value="0.0" />
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>

        <xs:attribute name="minNumberPlays" type="xs:nonNegativeInteger" default="0" />
        <xs:attribute name="maxNumberPlays" type="xs:nonNegativeInteger" />

        <xs:attribute name="playOne" type="xs:boolean" default="false" />

        <xs:attribute name="minWait" type="xs:nonNegativeInteger" default="0" />

        <!-- 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="calibration" 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="crossFade" default="0.0">
                    <xs:simpleType>
                        <xs:restriction base="xs:decimal">
                            <xs:minInclusive value="0.0" />
                        </xs:restriction>
                    </xs:simpleType>
                </xs:attribute>
                <xs:attribute name="randomiseAxisOrder" type="xs:boolean" default="false" />
                <xs:attribute ref="preSilence" />
                <xs:attribute ref="postSilence" />
                <xs:attribute ref="playOne" />
                <xs:attribute ref="minNumberPlays" use="optional" />
                <xs:attribute ref="maxNumberPlays" use="optional" />
            </xs:complexType>
        </xs:element>

        <xs:element name="calibration">
            <xs:complexType>
                <xs:attribute name="checkFrequencies" type="xs:boolean" default="false" />
                <xs:attribute name="checkLevels" type="xs:boolean" default="false" />
                <xs:attribute name="checkChannels" type="xs:boolean" default="false" />
            </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="commentquestions" minOccurs="0" maxOccurs="1" />
                    <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="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:enumeration value="samediff" />
                        </xs:restriction>
                    </xs:simpleType>
                </xs:attribute>
                <xs:attribute name="labelStart" type="xs:string" use="optional" default="" />
                <xs:attribute name="randomiseAxisOrder" type="xs:boolean" use="optional" />
                <xs:attribute ref="poolSize" />
                <xs:attribute ref="alwaysInclude" />
                <xs:attribute name="position" use="optional" type="xs:nonNegativeInteger" />
                <xs:attribute ref="preSilence" />
                <xs:attribute ref="postSilence" />
                <xs:attribute ref="playOne" />
                <xs:attribute name="restrictMovement" type="xs:boolean" default="false" use="optional" />
                <xs:attribute ref="minNumberPlays" use="optional" />
                <xs:attribute ref="maxNumberPlays" 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="image" minOccurs="0" maxOccurs="1">
                        <xs:complexType>
                            <xs:attribute name="src" type="xs:anyURI" use="required" />
                        </xs:complexType>
                    </xs:element>
                    <xs:element name="interfaceoption" minOccurs="0" maxOccurs="unbounded">
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element name="errormessage" type="xs:string" minOccurs="0" maxOccurs="1" />
                            </xs:sequence>
                            <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:sequence>
                    <xs:element name="alternative" minOccurs="0" maxOccurs="unbounded">
                        <xs:complexType>
                            <xs:attribute name="url" type="xs:anyURI" use="required" />
                            <xs:attribute name="sampleRate" use="optional">
                                <xs:simpleType>
                                    <xs:restriction base="xs:decimal">
                                        <xs:minInclusive value="1" />
                                    </xs:restriction>
                                </xs:simpleType>
                            </xs:attribute>
                        </xs:complexType>
                    </xs:element>
                </xs:sequence>
                <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="label" type="xs:string" default="" />
                <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:attribute name="startTime" use="optional">
                    <xs:simpleType>
                        <xs:restriction base="xs:decimal">
                            <xs:minInclusive value="0" />
                        </xs:restriction>
                    </xs:simpleType>
                </xs:attribute>
                <xs:attribute name="stopTime" use="optional">
                    <xs:simpleType>
                        <xs:restriction base="xs:decimal">
                            <xs:minInclusive value="0" />
                        </xs:restriction>
                    </xs:simpleType>
                </xs:attribute>
                <xs:attribute name="sampleRate" use="optional">
                    <xs:simpleType>
                        <xs:restriction base="xs:decimal">
                            <xs:minInclusive value="1" />
                        </xs:restriction>
                    </xs:simpleType>
                </xs:attribute>
                <xs:attribute name="image" type="xs:anyURI" use="optional" />
                <xs:attribute ref="minNumberPlays" use="optional" />
                <xs:attribute ref="maxNumberPlays" use="optional" />
            </xs:complexType>
        </xs:element>

        <xs:element name="commentquestions">
            <xs:complexType>
                <xs:choice maxOccurs="unbounded">
                    <xs:element name="commentquestion" maxOccurs="unbounded" />
                    <xs:element name="commentradio" maxOccurs="unbounded" />
                    <xs:element name="commentcheckbox" maxOccurs="unbounded" />
                    <xs:element name="commentslider" maxOccurs="unbounded" />
                </xs:choice>
            </xs:complexType>
        </xs:element>

        <xs:element name="commentradio">
            <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="optional" />
                <xs:attribute ref="name" use="optional" />
                <xs:attribute ref="mandatory" use="optional" />
            </xs:complexType>
        </xs:element>

        <xs:element name="commentcheckbox">
            <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="optional" />
                <xs:attribute ref="name" use="optional" />
                <xs:attribute ref="mandatory" use="optional" />
            </xs:complexType>
        </xs:element>

        <xs:element name="commentquestion">
            <xs:complexType>
                <xs:sequence>
                    <xs:element ref="statement" minOccurs="1" maxOccurs="1" />
                </xs:sequence>
                <xs:attribute ref="id" use="optional" />
                <xs:attribute ref="name" use="optional" />
                <xs:attribute ref="mandatory" use="optional" />
            </xs:complexType>
        </xs:element>

        <xs:element name="commentslider">
            <xs:complexType>
                <xs:sequence>
                    <xs:element ref="statement" minOccurs="1" maxOccurs="1" />
                    <xs:element name="minText" minOccurs="0" maxOccurs="1" type="xs:string" />
                    <xs:element name="maxText" minOccurs="0" maxOccurs="1" type="xs:string" />
                </xs:sequence>
                <xs:attribute ref="id" use="optional" />
                <xs:attribute ref="name" use="optional" />
                <xs:attribute name="min" type="xs:decimal" use="required" />
                <xs:attribute name="max" type="xs:decimal" use="required" />
                <xs:attribute name="step" type="xs:decimal" use="optional" default="1" />
                <xs:attribute name="value" type="xs:decimal" use="optional" />
                <xs:attribute ref="mandatory" use="optional" />
            </xs:complexType>
        </xs:element>

        <xs:element name="conditional">
            <xs:complexType>
                <xs:attribute name="check" use="required">
                    <xs:simpleType>
                        <xs:restriction base="xs:string">
                            <xs:enumeration value="equals" />
                            <xs:enumeration value="lessThan" />
                            <xs:enumeration value="greaterThan" />
                            <xs:enumeration value="stringContains" />
                        </xs:restriction>
                    </xs:simpleType>
                </xs:attribute>
                <xs:attribute name="value" type="xs:string" use="optional" />
                <xs:attribute name="jumpToOnPass" type="xs:string" use="optional" />
                <xs:attribute name="jumpToOnFail" type="xs:string" use="optional" />
            </xs:complexType>
        </xs:element>

        <xs:element name="surveyquestion">
            <xs:complexType>
                <xs:sequence>
                    <xs:element ref="statement" minOccurs="1" maxOccurs="1" />
                    <xs:element ref="conditional" minOccurs="0" maxOccurs="unbounded" />
                </xs:sequence>
                <xs:attribute ref="id" use="required" />
                <xs:attribute ref="name" />
                <xs:attribute ref="mandatory" />
                <xs:attribute ref="minWait" />
                <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:element name="surveyradio">
            <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:element ref="conditional" minOccurs="0" maxOccurs="unbounded" />
                </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="randomise" type="xs:boolean" default="false" />
                <xs:attribute ref="minWait" />
            </xs:complexType>
        </xs:element>

        <xs:element name="surveycheckbox">
            <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:element ref="conditional" minOccurs="0" maxOccurs="unbounded" />
                </xs:sequence>
                <xs:attribute ref="id" use="required" />
                <xs:attribute ref="name" />
                <xs:attribute ref="mandatory" />
                <xs:attribute ref="minWait" />
                <xs:attribute name="min" type="xs:decimal" />
                <xs:attribute name="max" type="xs:decimal" />
                <xs:attribute name="randomise" type="xs:boolean" default="false" />
            </xs:complexType>
        </xs:element>

        <xs:element name="surveystatement">
            <xs:complexType>
                <xs:sequence>
                    <xs:element ref="statement" minOccurs="1" maxOccurs="1" />
                </xs:sequence>
                <xs:attribute ref="minWait" />
                <xs:attribute ref="id" use="required" />
            </xs:complexType>
        </xs:element>

        <xs:element name="surveynumber">
            <xs:complexType>
                <xs:sequence>
                    <xs:element ref="statement" minOccurs="1" maxOccurs="1" />
                    <xs:element ref="conditional" minOccurs="0" maxOccurs="unbounded" />
                </xs:sequence>
                <xs:attribute ref="id" use="required" />
                <xs:attribute ref="name" />
                <xs:attribute ref="mandatory" />
                <xs:attribute ref="minWait" />
                <xs:attribute name="min" type="xs:decimal" />
                <xs:attribute name="max" type="xs:decimal" />
            </xs:complexType>
        </xs:element>

        <xs:element name="surveyslider">
            <xs:complexType>
                <xs:sequence>
                    <xs:element ref="statement" minOccurs="1" maxOccurs="1" />
                    <xs:element name="minText" minOccurs="0" maxOccurs="1" type="xs:string" />
                    <xs:element name="maxText" minOccurs="0" maxOccurs="1" type="xs:string" />
                    <xs:element ref="conditional" minOccurs="0" maxOccurs="unbounded" />
                </xs:sequence>
                <xs:attribute ref="id" use="required" />
                <xs:attribute ref="name" />
                <xs:attribute ref="minWait" />
                <xs:attribute name="min" use="required" type="xs:decimal" />
                <xs:attribute name="max" use="required" type="xs:decimal" />
            </xs:complexType>
        </xs:element>

        <xs:element name="surveyvideo">
            <xs:complexType>
                <xs:sequence>
                    <xs:element ref="statement" minOccurs="1" maxOccurs="1" />
                </xs:sequence>
                <xs:attribute ref="id" use="required" />
                <xs:attribute ref="minWait" />
                <xs:attribute name="url" use="required" type="xs:string" />
            </xs:complexType>
        </xs:element>

        <xs:element name="surveyyoutube">
            <xs:complexType>
                <xs:sequence>
                    <xs:element ref="statement" minOccurs="1" maxOccurs="1" />
                </xs:sequence>
                <xs:attribute ref="id" use="required" />
                <xs:attribute ref="minWait" />
                <xs:attribute name="url" use="required" type="xs:string" />
            </xs:complexType>
        </xs:element>

        <xs:element name="survey">
            <xs:complexType>
                <xs:choice maxOccurs="unbounded" minOccurs="0">
                    <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:element ref="conditional" minOccurs="0" maxOccurs="unbounded" />
                            </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:enumeration value="video" />
                                        <xs:enumeration value="youtube" />
                                    </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:attribute name="url" type="xs:string" use="optional" />
                        </xs:complexType>
                    </xs:element>
                    <xs:element name="surveyquestion" maxOccurs="unbounded" />
                    <xs:element name="surveyradio" maxOccurs="unbounded" />
                    <xs:element name="surveycheckbox" maxOccurs="unbounded" />
                    <xs:element name="surveystatement" maxOccurs="unbounded" />
                    <xs:element name="surveynumber" maxOccurs="unbounded" />
                    <xs:element name="surveyslider" maxOccurs="unbounded" />
                    <xs:element name="surveyvideo" maxOccurs="unbounded" />
                    <xs:element name="surveyyoutube" maxOccurs="unbounded" />
                </xs:choice>
                <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:attribute name="showBackButton" type="xs:boolean" default="true" />
            </xs:complexType>
        </xs:element>

    </xs:schema>