<?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.

-->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns="http://www.macromedia.com/2005/amfx"
    targetNamespace="http://www.macromedia.com/2005/amfx"
    elementFormDefault="qualified">


    <xsd:element name="amfx" type="amfx-type" />

    <xsd:complexType name="amfx-type">
        <xsd:sequence>
            <xsd:element name="header" type="header-type" minOccurs="0" maxOccurs="unbounded"/>
            <xsd:element name="body" type="body-type" minOccurs="1" maxOccurs="1" />
        </xsd:sequence>
        <xsd:attribute name="ver" type="xsd:unsignedShort" use="required" />
        <xsd:attribute name="xmlns" type="xsd:string" use="optional" default="http://www.macromedia.com/2005/amfx" />
    </xsd:complexType>

    <xsd:complexType name="header-type">
        <xsd:sequence>
            <xsd:group ref="as-types" minOccurs="0" maxOccurs="1" />
        </xsd:sequence>
        <xsd:attribute name="name" type="xsd:string" use="required" />
        <xsd:attribute name="mustUnderstand" type="xsd:boolean" use="optional" default="false" />
    </xsd:complexType>

    <xsd:complexType name="body-type">
        <xsd:sequence>
            <xsd:group ref="as-types" minOccurs="1" maxOccurs="1" />
        </xsd:sequence>
        <xsd:attribute name="targetURI" type="xsd:string" use="optional" />
        <xsd:attribute name="responseURI" type="xsd:string" use="optional" />
    </xsd:complexType>

    <!--

        ActionScript 3 Types

    -->

    <xsd:complexType name="array-type">
        <xsd:sequence>
            <xsd:element name="item" type="ecma-item-type" minOccurs="0" maxOccurs="unbounded" />
            <xsd:group ref="as-types" minOccurs="0" maxOccurs="unbounded" />
        </xsd:sequence>
        <xsd:attribute name="length" type="xsd:unsignedInt" use="optional" />
        <xsd:attribute name="ecma" type="xsd:boolean" use="optional" default="false" />
    </xsd:complexType>

    <xsd:complexType name="date-type">
        <xsd:simpleContent>
            <xsd:extension base="xsd:long" />
        </xsd:simpleContent>
    </xsd:complexType>

    <xsd:complexType name="double-type">
        <xsd:simpleContent>
            <xsd:extension base="xsd:double" />
        </xsd:simpleContent>
    </xsd:complexType>

    <xsd:complexType name="ecma-item-type">
        <xsd:sequence>
            <xsd:group ref="as-types" minOccurs="1" maxOccurs="1" />
        </xsd:sequence>
        <xsd:attribute name="name" type="xsd:string" use="required" />
    </xsd:complexType>

    <xsd:complexType name="empty-type" />

    <xsd:complexType name="int-type">
        <xsd:simpleContent>
            <xsd:extension base="xsd:int" />
        </xsd:simpleContent>
    </xsd:complexType>

    <xsd:complexType name="object-type">
        <xsd:sequence>
            <xsd:element name="traits" type="traits-type" minOccurs="1" maxOccurs="1" />
            <xsd:group ref="as-types" minOccurs="0" maxOccurs="unbounded" />
        </xsd:sequence>
        <xsd:attribute name="type" type="xsd:string" use="optional" />
    </xsd:complexType>

    <xsd:complexType name="ref-type">
        <xsd:attribute name="id" type="xsd:unsignedInt" use="required" />
    </xsd:complexType>

    <xsd:complexType name="string-type">
        <xsd:simpleContent>
            <xsd:extension base="xsd:string">
                <xsd:attribute name="id" type="xsd:unsignedInt" use="optional" />
            </xsd:extension>
        </xsd:simpleContent>
    </xsd:complexType>

    <xsd:complexType name="traits-type">
        <xsd:sequence>
            <xsd:element name="string" type="string-type" minOccurs="0" maxOccurs="unbounded" />
        </xsd:sequence>
        <xsd:attribute name="id" type="xsd:unsignedInt" use="optional" />
        <xsd:attribute name="dynamic" type="xsd:boolean" use="optional" default="false"/>
    </xsd:complexType>

    <xsd:group name="as-types">
        <xsd:choice>
            <xsd:element name="array" type="array-type" minOccurs="0" maxOccurs="unbounded" />
            <xsd:element name="date" type="date-type" minOccurs="0" maxOccurs="unbounded" />
            <xsd:element name="double" type="double-type" minOccurs="0" maxOccurs="unbounded" />
            <xsd:element name="false" type="empty-type" minOccurs="0" maxOccurs="unbounded" />
            <xsd:element name="int" type="int-type" minOccurs="0" maxOccurs="unbounded" />
            <xsd:element name="null" type="empty-type" minOccurs="0" maxOccurs="unbounded" />
            <xsd:element name="object" type="object-type" minOccurs="0" maxOccurs="unbounded" />
            <xsd:element name="ref" type="ref-type" minOccurs="0" maxOccurs="unbounded" />
            <xsd:element name="string" type="string-type" minOccurs="0" maxOccurs="unbounded" />
            <xsd:element name="true" type="empty-type" minOccurs="0" maxOccurs="unbounded" />
            <xsd:element name="undefined" type="empty-type" minOccurs="0" maxOccurs="unbounded" />
            <xsd:element name="xml" type="string-type" minOccurs="0" maxOccurs="unbounded" />
        </xsd:choice>
    </xsd:group>
</xsd:schema>