<!-- 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 
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:ct="http://xmlbeans.apache.org/samples/catalog"
targetNamespace="http://xmlbeans.apache.org/samples/catalog"
elementFormDefault="qualified"
> 
  <xs:element name="catalog">
   <xs:complexType>
    <xs:sequence>
     <xs:element ref="ct:journal" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>    
   </xs:complexType>
  </xs:element>
  
  <xs:element name="journal">
   <xs:complexType>
    <xs:sequence>
     <xs:element ref="ct:article" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>     
   </xs:complexType>
  </xs:element>
  
  <xs:element name="article">
   <xs:complexType>
    <xs:sequence>
     <xs:element name="title" type="xs:string" minOccurs="1" maxOccurs="1" />
     <xs:element name="author" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
     <xs:element ref="ct:a-very-long-description-element" minOccurs="0" maxOccurs="1" />	
    </xs:sequence>
   </xs:complexType>
  </xs:element>
  
  <xs:element name="a-very-long-description-element">
  <xs:complexType>
    <xs:sequence>
    	<xs:element name ="forsample" type="xs:string" minOccurs="0" maxOccurs="1" />
    </xs:sequence>
   </xs:complexType>
  </xs:element>
   
  
</xs:schema>