﻿<?xml version="1.0" encoding="utf-8"?>
<!--
   ice.NET Platform

   Copyright (c) PDTec AG. All rights reserved.
-->
<xs:schema elementFormDefault="qualified" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="D5" type="D5" />
    <xs:complexType name="D5">
        <xs:sequence>
            <xs:element name="Data" type="Data" maxOccurs="1" minOccurs="1" />
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="Data">
        <xs:sequence>
            <xs:element name="Folders" maxOccurs="unbounded" minOccurs="1">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="Folder" type="Folder" minOccurs="0" maxOccurs="unbounded" />
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="Objects" maxOccurs="1" minOccurs="1">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="Object" type="Object" maxOccurs="unbounded" minOccurs="0">
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="Relationships" minOccurs="1" maxOccurs="1">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="Relationship" type="Relationship" maxOccurs="unbounded" minOccurs="0">
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="Folder">
        <xs:sequence>
            <xs:element name="Description" type="xs:string" />
            <xs:element name="Keys" type="Keys" minOccurs="0" maxOccurs="1" />
        </xs:sequence>
        <xs:attribute name="Id" type="xs:string" use="required" />
        <xs:attribute name="Name" type="xs:string" use="required" />
        <xs:attribute name="ParentId" type="xs:string" use="optional" />
    </xs:complexType>    
    <xs:complexType name="Object">
        <xs:sequence>
            <xs:element name="Description" type="xs:string" />
            <xs:element name="Keys" type="Keys" minOccurs="0" maxOccurs="1" />
            <xs:element name="Attributes">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="Attribute" minOccurs="0" maxOccurs="unbounded">
                            <xs:complexType mixed="true">
                                <xs:attribute name="DeclaringType" type="xs:string" use="required" />
                                <xs:attribute name="AttrDefName" type="xs:string" use="required" />
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="ContentVersions" minOccurs="0" maxOccurs="1">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="ContentVersion" minOccurs="0" maxOccurs="unbounded">
                            <xs:complexType>
                                <xs:sequence>
                                    <xs:element name="Description" type="xs:string" />
                                    <xs:element name="Content" type="xs:string" minOccurs="0" maxOccurs="1"/>
                                </xs:sequence>
                                <xs:attribute name="Version" type="xs:string" use="required" />
                                <xs:attribute name="FileName" type="xs:string" use="required" />
                                <xs:attribute name="FileUuid" type="xs:string" use="required" />
                                <xs:attribute name="VaultName" type="xs:string" use="optional" />
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
        <xs:attribute name="Id" type="xs:string" use="required" />
        <xs:attribute name="Name" type="xs:string" use="required" />
        <xs:attribute name="Type" type="xs:string" use="required" />
        <xs:attribute name="FolderId" type="xs:string" use="optional" />
    </xs:complexType>
    <xs:complexType name="Relationship">
        <xs:sequence>
            <xs:element name="Description" type="xs:string" />
            <xs:element name="ObjectFrom" type="ObjRef" minOccurs="1" maxOccurs="1" />
            <xs:element name="ObjectTo" type="ObjRef" maxOccurs="1" minOccurs="1" />
            <xs:element name="Attributes">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="Attribute" minOccurs="0" maxOccurs="unbounded">
                            <xs:complexType mixed="true">
                                <xs:attribute name="AttrDefName" type="xs:string" use="required" />
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
        <xs:attribute name="Id" type="xs:string" use="required" />
        <xs:attribute name="Type" type="xs:string" use="required" />
    </xs:complexType>
    <xs:complexType name="ObjRef">
        <xs:sequence />
        <xs:attribute name="ObjRef" type="xs:string" use="required" />
    </xs:complexType>
    <xs:complexType name="Keys">
        <xs:sequence>
            <xs:element name="Key" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
        </xs:sequence>
    </xs:complexType>
</xs:schema>