<!--
  ~ Licensed to the Apache Software Foundation (ASF) under one
  ~ or more contributor license agreements. See the NOTICE file
  ~ distributed with this work for additional information
  ~ regarding copyright ownership. The ASF licenses this file
  ~ to you under the Apache License, Version 2.0 (the
  ~ "License"); you may not use this file except in compliance
  ~ with the License. You may obtain a copy of the License at
  ~
  ~ http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing,
  ~ software distributed under the License is distributed on an
  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  ~ KIND, either express or implied. See the License for the
  ~ specific language governing permissions and limitations
  ~ under the License.
  -->

<xsd:schema elementFormDefault="qualified"
            xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:xs="http://www.w3.org/2001/XMLSchema"
            xmlns:tns="http://tempuri.org/"
            xmlns:ns1="http://google.com"
            targetNamespace="http://tempuri.org/">

    <xsd:simpleType name="ChildSimpleType">
        <xsd:restriction base="xsd:string"/>
    </xsd:simpleType>
    <xsd:simpleType name="ParentSimpleType">
        <xsd:restriction base="tns:ChildSimpleType"/>
    </xsd:simpleType>
    <xsd:complexType name="TestSimpleAttribute">
        <xsd:attribute name="attrib1" type="tns:ParentSimpleType" use="required"></xsd:attribute>
        <xsd:attribute name="attrib2" type="tns:ParentSimpleType" use="optional"></xsd:attribute>
        <xsd:all>
            <xsd:element name="testElement1" type="xsd:QName"/>
            <xsd:element name="testElement2" type="xsd:QName"/>
            <xsd:element name="testElement3" type="xsd:QName"/>
        </xsd:all>
    </xsd:complexType>

    <xsd:element name="TestSimpleAttributeElement" type="tns:TestSimpleAttribute"/>


    <xsd:simpleType name="NormalSimpleType">
        <xsd:restriction base="xsd:QName"/>
    </xsd:simpleType>

    <xsd:simpleType name="EnumerationSimpleType">
        <xsd:restriction base="xsd:QName">
            <xsd:enumeration value="ns1:test1"/>
            <xsd:enumeration value="ns1:test2"/>
            <xsd:enumeration value="ns1:test3"/>
        </xsd:restriction>
    </xsd:simpleType>

    <xsd:simpleType name="ParentNormalSimpleType">
        <xsd:restriction base = "tns:NormalSimpleType"/>
    </xsd:simpleType>

    <xsd:simpleType name="ParentEnumerationSimpleType">
        <xsd:restriction base="tns:EnumerationSimpleType"/>
    </xsd:simpleType>

    <xsd:element name="NormalSimpleTypeElement" type="tns:ParentNormalSimpleType"/>
    <xsd:element name="EnumerationSimpleTypeElement" type="tns:ParentEnumerationSimpleType"/>

    <xsd:complexType name="BaseRestrictionType">
        <xsd:sequence>
            <xsd:element name="baseTypeElement1" minOccurs="0" type="xsd:string"/>
            <xsd:element name="baseTypeElement2" minOccurs="0" type="xsd:int"/>
        </xsd:sequence>
    </xsd:complexType>

    <xsd:complexType name="ParentRestrictionType">
        <xsd:complexContent>
            <xsd:restriction base="tns:BaseRestrictionType">
                <xsd:sequence>
                    <xsd:element name="baseTypeElement1" type="xsd:string"/>
                    <xsd:element name="baseTypeElement2" type="xsd:int"/>
                </xsd:sequence>
            </xsd:restriction>
        </xsd:complexContent>
    </xsd:complexType>

    <xsd:element name="ComplexRestrictionTypeTestElement" type="tns:ParentRestrictionType"/>

    <xsd:simpleType name="ErrorCodeType">
		<xsd:restriction base="xsd:string">
			<xsd:maxLength value="30"/>
			<xsd:minLength value="1"/>
		</xsd:restriction>
	</xsd:simpleType>

    <xsd:simpleType name="TestSimpleTypeRestrictionPattern">
        <xsd:restriction base="xsd:string">
            <xsd:pattern value="\d{4}((-\d{2}){0,1}-\d{2}){0,1}"></xsd:pattern>
        </xsd:restriction>
    </xsd:simpleType>

    <xs:simpleType name="RFCProbabilityCodeType1">
           <xs:restriction base="xs:double">
                   <xs:maxInclusive value="1.5"/>
                   <xs:minInclusive value="0.1"/>
           </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="RFCProbabilityCodeType2">
           <xs:restriction base="xs:long">
                   <xs:maxExclusive value="5"/>
                   <xs:minExclusive value="1"/>
           </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="RFCProbabilityCodeType3">
           <xs:restriction base="xs:integer">
                   <xs:maxExclusive value="5"/>
                   <xs:minExclusive value="1"/>
           </xs:restriction>
    </xs:simpleType>

    <xsd:complexType name="Person">
        <xsd:sequence>
            <xsd:element name="name" type="xsd:string"></xsd:element>
            <xsd:element name="age" type="xsd:int"></xsd:element>
            <xsd:element name="hairColor">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="black"></xsd:enumeration>
                        <xsd:enumeration value="brown"></xsd:enumeration>
                        <xsd:enumeration value="blonde"></xsd:enumeration>
                        <xsd:enumeration value="gray"></xsd:enumeration>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>
            <xsd:element name="birthDate" type="xsd:date"></xsd:element>
            <xsd:element name="address" type="tns:Address" maxOccurs="1" minOccurs="0"></xsd:element>
        </xsd:sequence>
    </xsd:complexType>



    <xsd:complexType name="Address">
        <xsd:sequence>
            <xsd:element name="line1" type="xsd:string"></xsd:element>
            <xsd:element name="line2" type="xsd:string" maxOccurs="1"
                     minOccurs="0">
            </xsd:element>
            <xsd:element name="city" type="xsd:string"></xsd:element>
            <xsd:element name="state" type="xsd:string"></xsd:element>
            <xsd:element name="zip">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:pattern value="[A-Z]"></xsd:pattern>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <xsd:element name="PersonElement" type="tns:Person"/>

    <xsd:element name="SMSElement">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="EndDate" type="tns:WSTypeDate" nillable="true"/>
                <xsd:element name="SMS_Provider" type="tns:WSTypeChar3" nillable="true"/>
            </xsd:sequence>
            <xsd:attribute name="MultipleRestriction">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:pattern value="String"/>
                        <xsd:pattern value="Base64"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:attribute>
        </xsd:complexType>
    </xsd:element>

    <xsd:simpleType name="WSTypeDate">
        <xsd:restriction base="xsd:date">
            <xsd:pattern value='[0-9]{4}-[0-9]{2}-[0-9]{2}'/>
        </xsd:restriction>
    </xsd:simpleType>

    <xsd:simpleType name="WSTypeChar3">
        <xsd:restriction base="xsd:string">
            <xsd:maxLength value="3"/>
        </xsd:restriction>
    </xsd:simpleType>

    <xsd:element name="GetExemplarResponseTypeElement" type="tns:getExemplarResponseType"/>
    <xsd:complexType name="getExemplarResponseType">
        <xsd:complexContent>
            <xsd:restriction base="xsd:anyType">
                <xsd:sequence>
                    <xsd:element name="exemplar" type="xsd:string"/>
                </xsd:sequence>
                <xsd:attributeGroup ref="tns:ResponseAttributeGroup"/>
                <xsd:attribute name="supportedMethods" type="xsd:string" use="optional"/>
            </xsd:restriction>
        </xsd:complexContent>
    </xsd:complexType>
    <xsd:attributeGroup name="ResponseAttributeGroup">
        <xsd:attribute name="responseCode" type="xsd:integer" use="optional" default="0"/>
        <xsd:attribute name="responseMessage" type="xsd:string" use="optional"/>
    </xsd:attributeGroup>

</xsd:schema>