<?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://helloworld/external" xmlns:tns="http://helloworld/external" xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:element name="getGreetings" type="tns:getGreetings"/>

  <xs:element name="getGreetingsComplex" type="tns:getGreetingsComplex"/>

  <xs:element name="getGreetingsComplexResponse" type="tns:getGreetingsComplexResponse"/>

  <xs:element name="getGreetingsResponse" type="tns:getGreetingsResponse"/>

  <xs:complexType name="getGreetings">
    <xs:sequence>
      <xs:element name="name" type="xs:string" form="qualified" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="getGreetingsResponse">
    <xs:sequence>
      <xs:element name="getGreetingsReturn" type="xs:string" form="qualified" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="getGreetingsComplex">
    <xs:sequence>
      <xs:element name="arg0" type="tns:foo" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="foo">
    <xs:sequence>
      <xs:element name="bars" type="tns:bar" nillable="true" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="bar">
    <xs:sequence>
      <xs:element name="b" type="xs:boolean" minOccurs="0"/>
      <xs:element name="s" type="xs:string" minOccurs="0"/>
      <xs:element name="x" type="xs:int"/>
      <xs:element name="y" type="xs:int" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="getGreetingsComplexResponse">
    <xs:sequence>
      <xs:element name="return" type="tns:foo" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
</xs:schema>


