<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<!--
  ~ 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.
  -->

<xs:schema version="1.0" targetNamespace="http://serverPartial1.checkexception.webfault.annotations/" xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:element name="AddNegativeNumbersException" nillable="true" type="xs:string"/>

  <xs:element name="addTwoNumbers" type="ns1:addTwoNumbers" xmlns:ns1="http://serverPartial1.checkexception.webfault.annotations/"/>

  <xs:complexType name="addTwoNumbers">
    <xs:sequence>
      <xs:element name="arg0" type="xs:int"/>
      <xs:element name="arg1" type="xs:int"/>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="addTwoNumbersResponse" type="ns2:addTwoNumbersResponse" xmlns:ns2="http://serverPartial1.checkexception.webfault.annotations/"/>

  <xs:complexType name="addTwoNumbersResponse">
    <xs:sequence>
      <xs:element name="return" type="xs:int"/>
    </xs:sequence>
  </xs:complexType>
</xs:schema>

