<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            targetNamespace="http://schema.talk.com/enterprise/0.1"
            xmlns="http://schema.talk.com/enterprise/0.1"
            elementFormDefault="qualified"
            attributeFormDefault="unqualified">

    <xsd:element name="parameter" type="ParameterType"/>

    <xsd:complexType name="ParameterType">
        <xsd:annotation><xsd:documentation>
            A request parameter name-value pair.  The body of this element is
            the value of the parameter.
        </xsd:documentation></xsd:annotation>
        <xsd:complexContent>
            <xsd:extension base="EntityType">
                <xsd:attribute name="name" use="required">
                    <xsd:annotation><xsd:documentation>
                        The name of the parameter.  In most cases parameter
                        names will be unique to the request, but in the case
                        that multiple parameters appear with the same value
                        then they will be treated as a single multi-valued
                        parameter whose values appear in the order in which
                        they are specified.
                    </xsd:documentation></xsd:annotation>
                </xsd:attribute>
                <xsd:attribute name="val">
                    <xsd:annotation><xsd:documentation>
                        The value of the parameter
                    </xsd:documentation></xsd:annotation>
                </xsd:attribute>
            </xsd:extension>
        </xsd:complexContent>
    </xsd:complexType>

    <xsd:complexType name="EntityType">
        <xsd:annotation><xsd:documentation>
                Base class for all persistable entities.  This base class
                abstracts out common fields such as ID, version, and references
                to third-party system IDs.
        </xsd:documentation></xsd:annotation>
        <xsd:attribute name="id" type="xsd:string" use="optional">
            <xsd:annotation><xsd:documentation>
                Identifies an entity element within a particular XML document.
                This is a reliable way of referencing other entities.  This is
                used instead of primary key values because the entities may
                not be persistent at the time the document is generated.
            </xsd:documentation></xsd:annotation>
        </xsd:attribute>
        <xsd:attribute name="idref" type="xsd:string" use="optional">
            <xsd:annotation><xsd:documentation>
                Identifies an entity element within a particular XML document.
                This is a reliable way of referencing other entities.  This is
                used instead of primary key values because the entities may
                not be persistent at the time the document is generated.
            </xsd:documentation></xsd:annotation>
        </xsd:attribute>
    </xsd:complexType>

</xsd:schema>
