<?xml version="1.0"?>
<!--
/*   Copyright 2004 The Apache Software Foundation
 *
 *   Licensed 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.
 */
-->

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:redefine schemaLocation="enum2.xsd_">
    <xs:simpleType name="orderTypeCodedType">
      <xs:restriction base="orderTypeCodedType">
        <xs:enumeration value="newConnect"/>
      </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="requestTypeType">
      <xs:complexContent>
        <xs:restriction base="requestTypeType">
          <xs:sequence>
            <xs:element name="orderTypeCoded" type="orderTypeCodedType"/>
          </xs:sequence>
        </xs:restriction>
      </xs:complexContent>
    </xs:complexType>
  </xs:redefine>
</xs:schema>
