| <?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 xmlns="http://www.w3.org/2001/XMLSchema" |
| targetNamespace="http://thrift.apache.org/xml/idl" |
| xmlns:tns="http://thrift.apache.org/xml/idl" |
| elementFormDefault="qualified"> |
| |
| <element name="idl" type="tns:IDL" /> |
| <element name="document" type="tns:Document" /> |
| |
| <complexType name="IDL"> |
| <sequence> |
| <element ref="tns:document" minOccurs="1" maxOccurs="unbounded"/> |
| </sequence> |
| </complexType> |
| |
| <complexType name="Document"> |
| <sequence> |
| <choice minOccurs="0" maxOccurs="unbounded"> |
| <element name="include" type="tns:Include" /> |
| <element name="namespace" type="tns:Namespace" /> |
| </choice> |
| <choice minOccurs="0" maxOccurs="unbounded"> |
| <element name="exception" type="tns:Exception" /> |
| <element name="typedef" type="tns:Typedef" /> |
| <element name="service" type="tns:Service" /> |
| <element name="struct" type="tns:Struct" /> |
| <element name="const" type="tns:Const" /> |
| <element name="union" type="tns:Union" /> |
| <element name="enum" type="tns:Enum" /> |
| </choice> |
| </sequence> |
| <attribute name="name" type="string" use="required" /> |
| <attribute name="targetNamespace" type="anyURI" use="optional" /> |
| <attribute name="doc" type="string" use="optional" /> |
| </complexType> |
| |
| <complexType name="Include"> |
| <attribute name="file" type="string" use="optional" /> |
| <attribute name="name" type="string" use="required" /> |
| </complexType> |
| |
| <complexType name="Namespace"> |
| <sequence> |
| <element name="annotation" type="tns:Annotation" |
| minOccurs="0" maxOccurs="unbounded" /> |
| </sequence> |
| <attribute name="name" type="string" use="required" /> |
| <attribute name="value" type="string" use="required" /> |
| <attribute name="doc" type="string" use="optional" /> |
| </complexType> |
| |
| <group name="AbstractStruct"> |
| <sequence> |
| <element name="field" type="tns:Field" |
| minOccurs="0" maxOccurs="unbounded" /> |
| <element name="annotation" type="tns:Annotation" |
| minOccurs="0" maxOccurs="unbounded" /> |
| </sequence> |
| </group> |
| |
| <attributeGroup name="StructAttributes"> |
| <attribute name="name" type="string" use="required" /> |
| <attribute name="doc" type="string" use="optional" /> |
| </attributeGroup> |
| |
| <complexType name="Exception"> |
| <group ref="tns:AbstractStruct" /> |
| <attributeGroup ref="tns:StructAttributes" /> |
| </complexType> |
| |
| <complexType name="Service"> |
| <sequence> |
| <element name="method" type="tns:Method" |
| minOccurs="0" maxOccurs="unbounded" /> |
| <element name="annotation" type="tns:Annotation" |
| minOccurs="0" maxOccurs="unbounded" /> |
| </sequence> |
| <attribute name="name" type="string" use="required" /> |
| <attribute name="targetNamespace" type="string" use="required" /> |
| <attribute name="parent-module" type="string" use="optional" /> |
| <attribute name="parent-id" type="string" use="optional" /> |
| <attribute name="doc" type="string" use="optional" /> |
| </complexType> |
| |
| <complexType name="Method"> |
| <sequence> |
| <element name="returns" type="tns:ThriftType" /> |
| <element name="arg" type="tns:Field" |
| minOccurs="0" maxOccurs="unbounded" /> |
| <element name="throws" type="tns:Field" |
| minOccurs="0" maxOccurs="unbounded" /> |
| <element name="annotation" type="tns:Annotation" |
| minOccurs="0" maxOccurs="unbounded" /> |
| </sequence> |
| <attribute name="name" type="string" use="required" /> |
| <attribute name="oneway" type="boolean" use="optional" /> |
| <attribute name="doc" type="string" use="optional" /> |
| </complexType> |
| |
| <complexType name="Typedef"> |
| <complexContent> |
| <extension base="tns:ThriftType"> |
| <sequence> |
| <element name="annotation" type="tns:Annotation" |
| minOccurs="0" maxOccurs="unbounded" /> |
| </sequence> |
| <attribute name="name" type="string" use="required" /> |
| <attribute name="doc" type="string" use="optional" /> |
| </extension> |
| </complexContent> |
| </complexType> |
| |
| <complexType name="Struct"> |
| <group ref="tns:AbstractStruct" /> |
| <attributeGroup ref="tns:StructAttributes" /> |
| </complexType> |
| |
| <complexType name="Union"> |
| <group ref="tns:AbstractStruct" /> |
| <attributeGroup ref="tns:StructAttributes" /> |
| </complexType> |
| |
| <complexType name="Enum"> |
| <sequence> |
| <element name="member" minOccurs="1" maxOccurs="unbounded"> |
| <complexType> |
| <sequence> |
| <element name="annotation" type="tns:Annotation" |
| minOccurs="0" maxOccurs="unbounded" /> |
| </sequence> |
| <attribute name="name" type="string" use="required" /> |
| <attribute name="value" type="int" /> |
| <attribute name="explicit" type="boolean" /> |
| <attribute name="doc" type="string" /> |
| </complexType> |
| </element> |
| <element name="annotation" type="tns:Annotation" |
| minOccurs="0" maxOccurs="unbounded" /> |
| </sequence> |
| <attribute name="name" type="string" use="required" /> |
| <attribute name="doc" type="string" /> |
| </complexType> |
| |
| <complexType name="Field"> |
| <complexContent> |
| <extension base="tns:ThriftType"> |
| <sequence> |
| <element name="default" minOccurs="0" maxOccurs="1"> |
| <complexType> |
| <group ref="tns:ConstValue" /> |
| </complexType> |
| </element> |
| <element name="annotation" type="tns:Annotation" |
| minOccurs="0" maxOccurs="unbounded" /> |
| </sequence> |
| <attribute name="field-id" type="long" /> |
| <attribute name="name" type="string" use="required" /> |
| <attribute name="required" type="tns:Requiredness" /> |
| <attribute name="doc" type="string" /> |
| </extension> |
| </complexContent> |
| </complexType> |
| |
| <simpleType name="Requiredness"> |
| <restriction base="string"> |
| <enumeration value="required" /> |
| <enumeration value="optional" /> |
| </restriction> |
| </simpleType> |
| |
| <complexType name="Annotation"> |
| <attribute name="key" type="string" /> |
| <attribute name="value" type="string" /> |
| </complexType> |
| |
| <complexType name="Const"> |
| <complexContent> |
| <extension base="tns:ThriftType"> |
| <sequence> |
| <group ref="tns:ConstValue" /> |
| </sequence> |
| <attribute name="name" type="string" use="required" /> |
| <attribute name="doc" type="string" /> |
| </extension> |
| </complexContent> |
| </complexType> |
| |
| <complexType name="ConstList"> |
| <sequence> |
| <element name="entry" minOccurs="0" maxOccurs="unbounded"> |
| <complexType> |
| <group ref="tns:ConstValue" /> |
| </complexType> |
| </element> |
| </sequence> |
| </complexType> |
| |
| <complexType name="ConstMap"> |
| <sequence> |
| <element name="entry" minOccurs="0" maxOccurs="unbounded"> |
| <complexType> |
| <sequence> |
| <element name="key"> |
| <complexType> |
| <group ref="tns:ConstValue" /> |
| </complexType> |
| </element> |
| <element name="value"> |
| <complexType> |
| <group ref="tns:ConstValue" /> |
| </complexType> |
| </element> |
| </sequence> |
| </complexType> |
| </element> |
| </sequence> |
| </complexType> |
| |
| <group name="ConstValue"> |
| <choice> |
| <element name="string" type="string" /> |
| <element name="double" type="double" /> |
| <element name="list" type="tns:ConstList" /> |
| <element name="map" type="tns:ConstMap" /> |
| <element name="int" type="long" /> |
| </choice> |
| </group> |
| |
| <complexType name="ThriftType"> |
| <sequence> |
| <choice minOccurs="0" maxOccurs="1"> |
| <element name="elemType" type="tns:ThriftType" /> |
| <sequence> |
| <element name="keyType" type="tns:ThriftType" |
| minOccurs="1" maxOccurs="1" /> |
| <element name="valueType" type="tns:ThriftType" |
| minOccurs="1" maxOccurs="1" /> |
| </sequence> |
| </choice> |
| </sequence> |
| <attribute name="type" type="tns:TypeIdentifier" use="required" /> |
| <attribute name="type-module" type="string" /> |
| <attribute name="type-id" type="string" /> |
| </complexType> |
| |
| <simpleType name="TypeIdentifier"> |
| <restriction base="string"> |
| <enumeration value="void" /> |
| <enumeration value="bool" /> |
| <enumeration value="byte" /> |
| <enumeration value="i8" /> |
| <enumeration value="i16" /> |
| <enumeration value="i32" /> |
| <enumeration value="i64" /> |
| <enumeration value="double" /> |
| <enumeration value="binary" /> |
| <enumeration value="string" /> |
| <enumeration value="id" /> |
| <enumeration value="map" /> |
| <enumeration value="set" /> |
| <enumeration value="list" /> |
| </restriction> |
| </simpleType> |
| |
| </schema> |