view xml/test-schema.xsd @ 2316:0ca5bcfdc2d4

Fix for #16
author Nicholas Jillings <nicholas.jillings@mail.bcu.ac.uk>
date Fri, 29 Apr 2016 15:48:11 +0100
parents e4a2a39838db
children f1e67258f0b8
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="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>