<?xml version="1.0" encoding="UTF-8"?>
<!-- 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 attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="comments" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="a" type="com:aType" xmlns:com="comments">
    <xs:annotation>
      <xs:documentation>final comment</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="aType">
    <xs:sequence>
      <xs:element type="xs:string" name="b">
        <xs:annotation>
          <xs:documentation>this is a comment 1</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element type="xs:int" name="c">
        <xs:annotation>
          <xs:documentation>this is a comment 2</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element type="xs:string" name="d">
        <xs:annotation>
          <xs:documentation>this is a comment 4  this is a comment 5</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element type="xs:short" name="e">
        <xs:annotation>
          <xs:documentation>this is a comment 6</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element type="xs:string" name="f">
        <xs:annotation>
          <xs:documentation>this is a comment 7  this is a comment 8</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
</xs:schema>