<?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.
  
-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
  <xs:element name="presentation">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="originalDocument"/>
        <xs:element ref="swfDocument"/>
        <xs:element ref="thumbs"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="originalDocument">
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:NCName">
          <xs:attribute name="lastmod" use="required" type="xs:integer"/>
          <xs:attribute name="size" use="required" type="xs:integer"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="swfDocument">
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:NCName">
          <xs:attribute name="lastmod" use="required" type="xs:integer"/>
          <xs:attribute name="size" use="required" type="xs:integer"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="thumbs">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="thumb"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="thumb">
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:NCName">
          <xs:attribute name="lastmod" use="required" type="xs:integer"/>
          <xs:attribute name="size" use="required" type="xs:integer"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
</xs:schema>
