<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
    xmlns:pdi="http://www.atsc.org/XMLSchemas/iss/pdi/1"
    targetNamespace="http://www.atsc.org/XMLSchemas/iss/pdi/1" elementFormDefault="qualified"
    version="1.0">

    <annotation>
        <documentation source="http://www.atsc.org/cms/standards/a_nnn-2013.pdf"> ATSC IIS
            PDI-related schema elements Version: 1.0 Date: m/dd/2013 Location:
            http://www.atsc.org/XMLSchemas/iss/pdi/1.0.xsd Namespace:
            http://www.atsc.org/XMLSchemas/iss/pdi/1 Information about the use of this schema can be
            found in ATSC standard A/nnn-2013 Interactive Services available at http://www.atsc.org/
            . This schema defines a number of XML elements: (1) An XML element named PDITable that
            is used to deliver PDI questionnaires to TV receivers. (2) A set of XML elements named
            QIAD, QBAD, QSAD, QTAD and QAAD that are used to pass individual PDI questions and
            answers to and from Declarative Objects via an API defined for that purpose. (3) An XML
            element named FilteringCriteria that is used to attach PDI targeting criteria to a
            Content Item in a TPT. </documentation>
    </annotation>

    <annotation>
        <documentation xml:lang="en"> PDITable element, used to deliver PDI questionnaires
        </documentation>
    </annotation>
    <element name="PDITable">
        <complexType>
            <choice maxOccurs="unbounded">
                <element name="QIA" type="pdi:QIAType"/>
                <element name="QBA" type="pdi:QBAType"/>
                <element name="QSA" type="pdi:QSAType"/>
                <element name="QTA" type="pdi:QTAType"/>
                <element name="QAA" type="pdi:QAAType"/>
            </choice>
            <attribute name="protocolVersion" type="hexBinary" use="optional" default="10"/>
            <attribute name="pdiTableId" type="anyURI"/>
            <attribute name="pdiTableVersion" type="unsignedByte"/>
            <attribute name="time" type="dateTime"/>
        </complexType>
    </element>

    <annotation>
        <documentation xml:lang="en"> QIAD, QBAD, QSAD, QTAD, QAAD elements, 
            used to pass individual questions and answers to and from DOs via APIs 
        </documentation>
    </annotation>
    <element name="QIAD">
        <complexType>
            <sequence>
                <element name="QIA" type="pdi:QIAType"/>
            </sequence>
            <attribute name="protocolVersion" type="hexBinary" use="optional" default="10"/>
        </complexType>
    </element>
    <element name="QBAD">
        <complexType>
            <sequence>
                <element name="QBA" type="pdi:QBAType"/>
            </sequence>
            <attribute name="protocolVersion" type="hexBinary" use="optional" default="10"/>
        </complexType>
    </element>
    <element name="QSAD">
        <complexType>
            <sequence>
                <element name="QSA" type="pdi:QSAType"/>
            </sequence>
            <attribute name="protocolVersion" type="hexBinary" use="optional" default="10"/>
        </complexType>
    </element>
    <element name="QTAD">
        <complexType>
            <sequence>
                <element name="QTA" type="pdi:QTAType"/>
            </sequence>
            <attribute name="protocolVersion" type="hexBinary" use="optional" default="10"/>
        </complexType>
    </element>
    <element name="QAAD">
        <complexType>
            <sequence>
                <element name="QAA" type="pdi:QAAType"/>
            </sequence>
            <attribute name="protocolVersion" type="hexBinary" use="optional" default="10"/>
        </complexType>
    </element>

    <annotation>
        <documentation xml:lang="en"> Type definitions for QIA, QBA, QSA, QTA, QAA elements, 
            which appear in PDITable and in QIAD, QBAD, QSAD, QTAD, QAAD elements 
        </documentation>
    </annotation>
    <complexType name="QIAType">
        <sequence>
            <element name="Q" minOccurs="0">
                <complexType>
                    <sequence>
                        <element name="QText" type="pdi:QTextType" maxOccurs="unbounded"/>
                    </sequence>
                    <attribute name="loEnd" type="int" use="optional"/>
                    <attribute name="hiEnd" type="int" use="optional"/>
                </complexType>
            </element>
            <element name="A" minOccurs="0">
                <complexType>
                    <attribute name="answer" type="int"/>
                    <attribute name="time" type="dateTime" use="optional"/>
                </complexType>
            </element>
        </sequence>
        <attribute name="id" type="anyURI"/>
        <attribute name="expire" type="dateTime" use="optional"/>
        <attribute name="xactionSetId" type="unsignedShort" use="optional"/>
    </complexType>

    <complexType name="QBAType">
        <sequence>
            <element name="Q" minOccurs="0">
                <complexType>
                    <sequence>
                        <element name="QText" type="pdi:QTextType" maxOccurs="unbounded"/>
                    </sequence>
                </complexType>
            </element>
            <element name="A" minOccurs="0">
                <complexType>
                    <attribute name="answer" type="boolean"/>
                    <attribute name="time" type="dateTime" use="optional"/>
                </complexType>
            </element>
        </sequence>
        <attribute name="id" type="anyURI"/>
        <attribute name="expire" type="dateTime" use="optional"/>
        <attribute name="xactionSetId" type="unsignedShort" use="optional"/>
    </complexType>

    <complexType name="QSAType">
        <sequence>
            <element name="Q" minOccurs="0">
                <complexType>
                    <sequence>
                        <element name="QText" type="pdi:QTextType" maxOccurs="unbounded"/>
                        <element name="Selection" minOccurs="2" maxOccurs="255">
                            <complexType>
                                <simpleContent>
                                    <extension base="string">
                                        <attribute name="selectionId" type="unsignedByte"/>
                                    </extension>
                                </simpleContent>
                            </complexType>
                        </element>
                    </sequence>
                    <attribute name="minChoices" type="unsignedByte" use="optional"/>
                    <attribute name="maxChoices" type="unsignedByte" use="optional"/>
                </complexType>
            </element>
            <element name="A" minOccurs="0" maxOccurs="255">
                <complexType>
                    <attribute name="answer" type="unsignedByte"/>
                    <attribute name="time" type="dateTime" use="optional"/>
                </complexType>
            </element>
        </sequence>
        <attribute name="id" type="anyURI"/>
        <attribute name="expire" type="dateTime" use="optional"/>
        <attribute name="xactionSetId" type="unsignedShort" use="optional"/>
    </complexType>

    <complexType name="QTAType">
        <sequence>
            <element name="Q" minOccurs="0">
                <complexType>
                    <sequence>
                        <element name="QText" type="pdi:QTextType" maxOccurs="unbounded"/>
                    </sequence>
                </complexType>
            </element>
            <element name="A" minOccurs="0">
                <complexType>
                    <attribute name="answer" type="string"/>
                    <attribute name="time" type="dateTime" use="optional"/>
                    <attribute name="lang" type="language" use="optional"/>
                </complexType>
            </element>
        </sequence>
        <attribute name="id" type="anyURI"/>
        <attribute name="expire" type="dateTime" use="optional"/>
        <attribute name="xactionSetId" type="unsignedShort" use="optional"/>
    </complexType>

    <complexType name="QAAType">
        <sequence>
            <element name="A" minOccurs="0">
                <complexType>
                    <attribute name="answer" type="base64Binary"/>
                    <attribute name="time" type="dateTime" use="optional"/>
                </complexType>
            </element>
        </sequence>
        <attribute name="id" type="anyURI"/>
        <attribute name="expire" type="dateTime" use="optional"/>
        <attribute name="xactionSetId" type="unsignedShort" use="optional"/>
    </complexType>

    <complexType name="QTextType">
        <simpleContent>
            <extension base="string">
                <attribute name="lang" type="language" use="optional"/>
            </extension>
        </simpleContent>
    </complexType>

    <annotation>
        <documentation xml:lang="en"> FilteringCriteria element, used to attach targeting criteria
            to Content Items in a TPT 
        </documentation>
    </annotation>
    <element name="FilteringCriteria">
        <complexType>
            <choice maxOccurs="unbounded">
                <element name="QIACriterion" type="pdi:QIACriterionType"/>
                <element name="QBACriterion" type="pdi:QBACriterionType"/>
                <element name="QSACriterion" type="pdi:QSACriterionType"/>
                <element name="QTACriterion" type="pdi:QTACriterionType"/>
                <element name="QAACriterion" type="pdi:QAACriterionType"/>
            </choice>
            <attribute name="protocolVersion" type="hexBinary" use="optional" default="10"/>
        </complexType>
    </element>

    <annotation>
        <documentation xml:lang="en"> Type definitions for various criterion elements
            which can appear in a FilteringCriteria element
        </documentation>
    </annotation>
    <complexType name="QIACriterionType">
        <sequence>
            <element name="CriterionValue" maxOccurs="unbounded">
                <complexType>
                    <simpleContent>
                        <extension base="int">
                            <attribute name="extent" type="positiveInteger" use="optional"/>
                        </extension>
                    </simpleContent>
                </complexType>
            </element>
        </sequence>
        <attribute name="id" type="anyURI"/>
    </complexType>
    
    <complexType name="QBACriterionType">
        <sequence>
            <element name="CriterionValue" type="boolean"/>
        </sequence>
        <attribute name="id" type="anyURI"/>
    </complexType>
    
    <complexType name="QSACriterionType">
        <sequence>
            <element name="CriterionValue" type="unsignedByte" maxOccurs="unbounded"/>
        </sequence>
        <attribute name="id" type="anyURI"/>
    </complexType>  
    
    <complexType name="QTACriterionType">
        <sequence>
            <element name="CriterionValue">
                <complexType>
                    <simpleContent>
                        <extension base="string">
                            <attribute name="lang" type="language" use="optional"/>
                        </extension>
                    </simpleContent>
                </complexType>
            </element>
        </sequence>
        <attribute name="id" type="anyURI"/>
    </complexType>
    
    <complexType name="QAACriterionType">
        <sequence>
            <element name="CriterionValue" type="base64Binary" maxOccurs="unbounded"/>
        </sequence>
        <attribute name="id" type="anyURI"/>
    </complexType>

</schema>
