<?xml version="1.0" encoding="UTF-8"?>
<!--
    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.
-->
<schema attributeFormDefault="qualified" elementFormDefault="qualified"
	targetNamespace="http://camel.apache.org/example/increment" xmlns="http://www.w3.org/2001/XMLSchema">
	<element name="incrementRequest">
		<complexType>
			<sequence>
				<element name="input" type="integer" />
			</sequence>
		</complexType>
	</element>
	<element name="incrementResponse">
		<complexType>
			<sequence>
				<element name="result" type="integer" />
			</sequence>
		</complexType>
	</element>
</schema>