<?xml version="1.0" encoding="UTF-8"?>
<!--
  $RCSfile$
  $Revision: 36924 $
  $Date: 2006-11-06 10:52:42 -0800 (Mon, 06 Nov 2006) $
-->
<!-- ======================================================================= -->
<!-- Jive Forums 4.0 XML Schema ============================================ -->
<!-- ======================================================================= -->
<!--
    Dates are in the format of: yyyy/MM/dd HH:mm:ss.SS z,
    example: 2004/12/28 18:51:11.67 PDT
-->
<!-- Top Level Elements ==================================================== -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
    <xs:element name="Jive">
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="0" ref="JivePropertyList"/>
                <xs:element minOccurs="0" ref="UserList"/>
                <xs:element minOccurs="0" ref="GroupList"/>
                <xs:element minOccurs="0" ref="ForumList"/>
                <xs:element minOccurs="0" ref="CategoryList"/>
                <xs:element minOccurs="0" ref="UserPrivateMessageList"/>
                <xs:element minOccurs="0" ref="AnnouncementList"/>
                <xs:element minOccurs="0" ref="PollList"/>
                <xs:element minOccurs="0" ref="UserPermissionList"/>
                <xs:element minOccurs="0" ref="GroupPermissionList"/>
            </xs:sequence>
            <xs:attribute name="xmlversion" use="required"/>
            <xs:attribute name="exportDate" use="required"/>
        </xs:complexType>
    </xs:element>
    <xs:element name="JivePropertyList">
        <xs:complexType>
            <xs:sequence>
                <xs:element maxOccurs="unbounded" ref="Property"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <!-- User ================================================================== -->
    <xs:element name="User">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="Username"/>
                <xs:element ref="Password"/>
                <xs:element ref="Email"/>
                <xs:element minOccurs="0" ref="Name"/>
                <xs:element ref="CreationDate"/>
                <xs:element ref="ModifiedDate"/>
                <xs:element minOccurs="0" ref="RewardPoints"/>
                <xs:element minOccurs="0" ref="PropertyList"/>
                <xs:element minOccurs="0" ref="WatchList"/>
            </xs:sequence>
            <xs:attribute name="id"/>
        </xs:complexType>
    </xs:element>
    <xs:element name="Password" type="xs:string"/>
    <xs:element name="Email">
        <xs:complexType mixed="true">
            <xs:attributeGroup ref="attlist.Email"/>
        </xs:complexType>
    </xs:element>
    <xs:attributeGroup name="attlist.Email">
        <xs:attribute name="visible" default="true">
            <xs:simpleType>
                <xs:restriction base="xs:token">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:attributeGroup>
    <xs:element name="RewardPoints" type="xs:string"/>
    <xs:element name="PropertyList">
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="Property"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <!-- Property ============================================================== -->
    <xs:element name="UserList">
        <xs:complexType>
            <xs:sequence>
                <xs:element maxOccurs="unbounded" ref="User"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="Property">
        <xs:complexType>
            <xs:attribute name="name" use="required"/>
            <xs:attribute name="value" use="required"/>
        </xs:complexType>
    </xs:element>
    <!-- Group ================================================================= -->
    <xs:element name="GroupList">
        <xs:complexType>
            <xs:sequence>
                <xs:element maxOccurs="unbounded" ref="Group"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="Group">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="Name"/>
                <xs:element minOccurs="0" ref="Description"/>
                <xs:element ref="CreationDate"/>
                <xs:element ref="ModifiedDate"/>
                <xs:element minOccurs="0" ref="PropertyList"/>
                <xs:element minOccurs="0" ref="AdministratorList"/>
                <xs:element minOccurs="0" ref="MemberList"/>
            </xs:sequence>
            <xs:attribute name="id"/>
        </xs:complexType>
    </xs:element>
    <xs:element name="AdministratorList">
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="Username"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="MemberList">
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="Username"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <!-- Forum ================================================================= -->
    <xs:element name="ForumList">
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="Forum"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="Forum">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="Name"/>
                <xs:element minOccurs="0" ref="NNTPName"/>
                <xs:element minOccurs="0" ref="Description"/>
                <xs:element ref="CreationDate"/>
                <xs:element ref="ModifiedDate"/>
                <xs:element minOccurs="0" ref="PermissionList"/>
                <xs:element minOccurs="0" ref="PropertyList"/>
                <xs:element minOccurs="0" ref="WatchList"/>
                <xs:element minOccurs="0" ref="ThreadList"/>
                <xs:element minOccurs="0" ref="AnnouncementList"/>
                <xs:element minOccurs="0" ref="PollList"/>
            </xs:sequence>
            <xs:attribute name="id"/>
        </xs:complexType>
    </xs:element>
    <xs:element name="NNTPName" type="xs:string"/>
    <xs:element name="PermissionList">
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="0" ref="UserPermissionList"/>
                <xs:element minOccurs="0" ref="GroupPermissionList"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <!-- Category ============================================================== -->
    <xs:element name="CategoryList">
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="Category"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="Category">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="Name"/>
                <xs:element minOccurs="0" ref="Description"/>
                <xs:element ref="CreationDate"/>
                <xs:element ref="ModifiedDate"/>
                <xs:element minOccurs="0" ref="PermissionList"/>
                <xs:element minOccurs="0" ref="PropertyList"/>
                <xs:element minOccurs="0" ref="WatchList"/>
                <xs:element minOccurs="0" ref="ForumList"/>
                <xs:element minOccurs="0" ref="CategoryList"/>
                <xs:element minOccurs="0" ref="AnnouncementList"/>
                <xs:element minOccurs="0" ref="PollList"/>
            </xs:sequence>
            <xs:attribute name="id"/>
        </xs:complexType>
    </xs:element>
    <!-- Filter ================================================================ -->
    <xs:element name="Filter">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="Name"/>
                <xs:element ref="Classname"/>
                <xs:element ref="Index"/>
                <xs:element minOccurs="0" ref="PropertyList"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="Classname" type="xs:string"/>
    <xs:element name="Index" type="xs:string"/>
    <!-- Interceptor =========================================================== -->
    <xs:element name="Interceptor">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="Name"/>
                <xs:element ref="Classname"/>
                <xs:element ref="Index"/>
                <xs:element minOccurs="0" ref="PropertyList"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <!-- Permission ============================================================ -->
    <xs:element name="UserPermissionList">
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="UserPermission"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="GroupPermissionList">
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="GroupPermission"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="UserPermission">
        <xs:complexType>
            <xs:attribute name="usertype" use="required">
                <xs:simpleType>
                    <xs:restriction base="xs:token">
                        <xs:enumeration value="ANONYMOUS"/>
                        <xs:enumeration value="REGISTERED_USERS"/>
                        <xs:enumeration value="USER"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:attribute>
            <xs:attribute name="username"/>
            <xs:attribute name="permission" use="required">
                <xs:simpleType>
                    <xs:restriction base="xs:token">
                        <xs:enumeration value="NONE"/>
                        <xs:enumeration value="VIEW_ONLINE_STATUS"/>
                        <xs:enumeration value="USER_ADMIN"/>
                        <xs:enumeration value="GROUP_ADMIN"/>
                        <xs:enumeration value="SYSTEM_ADMIN"/>
                        <xs:enumeration value="CUSTOM_1"/>
                        <xs:enumeration value="CUSTOM_2"/>
                        <xs:enumeration value="CUSTOM_3"/>
                        <xs:enumeration value="CUSTOM_4"/>
                        <xs:enumeration value="READ_FORUM"/>
                        <xs:enumeration value="CREATE_MESSAGE"/>
                        <xs:enumeration value="CREATE_THREAD"/>
                        <xs:enumeration value="CREATE_MESSAGE_ATTACHMENT"/>
                        <xs:enumeration value="CREATE_POLL"/>
                        <xs:enumeration value="PRIVATE_MESSAGE"/>
                        <xs:enumeration value="RATE_MESSAGE"/>
                        <xs:enumeration value="MODERATOR"/>
                        <xs:enumeration value="FORUM_ADMIN"/>
                        <xs:enumeration value="FORUM_CATEGORY_ADMIN"/>
                        <xs:enumeration value="CREATE_PRIVATE_MESSAGE_ATTACHMENT"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:attribute>
            <xs:attribute name="permissionType" use="optional">
                <xs:simpleType>
                    <xs:restriction base="xs:token">
                        <xs:enumeration value="ADDITIVE"/>
                        <xs:enumeration value="NEGATIVE"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:attribute>
        </xs:complexType>
    </xs:element>
    <xs:element name="GroupPermission">
        <xs:complexType>
            <xs:attribute name="groupname" use="required"/>
            <xs:attribute name="permission" use="required">
                <xs:simpleType>
                    <xs:restriction base="xs:token">
                        <xs:enumeration value="NONE"/>
                        <xs:enumeration value="VIEW_ONLINE_STATUS"/>
                        <xs:enumeration value="USER_ADMIN"/>
                        <xs:enumeration value="GROUP_ADMIN"/>
                        <xs:enumeration value="SYSTEM_ADMIN"/>
                        <xs:enumeration value="CUSTOM_1"/>
                        <xs:enumeration value="CUSTOM_2"/>
                        <xs:enumeration value="CUSTOM_3"/>
                        <xs:enumeration value="CUSTOM_4"/>
                        <xs:enumeration value="READ_FORUM"/>
                        <xs:enumeration value="CREATE_MESSAGE"/>
                        <xs:enumeration value="CREATE_THREAD"/>
                        <xs:enumeration value="CREATE_MESSAGE_ATTACHMENT"/>
                        <xs:enumeration value="CREATE_POLL"/>
                        <xs:enumeration value="PRIVATE_MESSAGE"/>
                        <xs:enumeration value="RATE_MESSAGE"/>
                        <xs:enumeration value="MODERATOR"/>
                        <xs:enumeration value="FORUM_ADMIN"/>
                        <xs:enumeration value="FORUM_CATEGORY_ADMIN"/>
                        <xs:enumeration value="CREATE_PRIVATE_MESSAGE_ATTACHMENT"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:attribute>
            <xs:attribute name="permissionType" use="optional">
                <xs:simpleType>
                    <xs:restriction base="xs:token">
                        <xs:enumeration value="ADDITIVE"/>
                        <xs:enumeration value="NEGATIVE"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:attribute>
        </xs:complexType>
    </xs:element>
    <!-- Thread ================================================================ -->
    <xs:element name="ThreadList">
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="Thread"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="Thread">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="CreationDate"/>
                <xs:element ref="ModifiedDate"/>
                <xs:element ref="RewardPoints" minOccurs="0" maxOccurs="1"/>
                <xs:element ref="PropertyList" minOccurs="0" maxOccurs="1"/>
                <xs:element ref="WatchList" minOccurs="0" maxOccurs="1"/>
                <xs:element ref="PollList" minOccurs="0" maxOccurs="1"/>
                <xs:element ref="AttachmentList" minOccurs="0" maxOccurs="1"/>
            </xs:sequence>
            <xs:attribute name="id"/>
        </xs:complexType>
    </xs:element>
    <!-- Message =============================================================== -->
    <xs:element name="MessageList">
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="Message"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="Message">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="Subject"/>
                <xs:element ref="Body"/>
                <xs:element ref="Username" minOccurs="0"/>
                <xs:element ref="CreationDate"/>
                <xs:element ref="ModifiedDate"/>
                <xs:element ref="PropertyList" minOccurs="0"/>
                <xs:element ref="MessageList" minOccurs="0"/>
                <xs:element ref="AttachmentList" minOccurs="0"/>
            </xs:sequence>
            <xs:attribute name="id"/>
        </xs:complexType>
    </xs:element>
    <xs:element name="Subject" type="xs:string"/>
    <xs:element name="Body" type="xs:string"/>
    <!-- Watches =============================================================== -->
    <xs:element name="WatchList">
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="Watch"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="Watch">
        <xs:complexType>
            <xs:attribute name="type" use="required">
                <xs:simpleType>
                    <xs:restriction base="xs:token">
                        <xs:enumeration value="NORMAL_WATCH"/>
                        <xs:enumeration value="EMAIL_NOTIFY_WATCH"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:attribute>
            <xs:attribute name="username" use="required"/>
            <xs:attribute name="expirable" default="true">
                <xs:simpleType>
                    <xs:restriction base="xs:token">
                        <xs:enumeration value="true"/>
                        <xs:enumeration value="false"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:attribute>
        </xs:complexType>
    </xs:element>
    <!-- Private Messages ====================================================== -->
    <xs:element name="UserPrivateMessageList">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="FolderList" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:complexType name="FolderList">
        <xs:sequence>
            <xs:element ref="FolderList" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>
    <xs:element name="FolderList">
        <xs:complexType>
            <xs:sequence>
                <xs:element maxOccurs="unbounded" ref="Folder"/>
            </xs:sequence>
            <xs:attribute name="username" use="required"/>
        </xs:complexType>
    </xs:element>
    <xs:element name="Folder">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="Name"/>
                <xs:element minOccurs="0" ref="PrivateMessageList"/>
            </xs:sequence>
            <xs:attribute name="id"/>
        </xs:complexType>
    </xs:element>
    <xs:element name="PrivateMessageList">
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="PrivateMessage"/>
            </xs:sequence>
            <xs:attribute name="id"/>
        </xs:complexType>
    </xs:element>
    <xs:element name="PrivateMessage">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="Subject"/>
                <xs:element ref="Body" minOccurs="1" maxOccurs="1"/>
                <xs:element ref="Sender" minOccurs="0" maxOccurs="1"/>
                <xs:element ref="Recipient" minOccurs="0" maxOccurs="1"/>
                <xs:element ref="CreationDate" minOccurs="1" maxOccurs="1"/>
                <xs:element minOccurs="0" ref="PropertyList"/>
            </xs:sequence>
            <xs:attribute name="id"/>
        </xs:complexType>
    </xs:element>
    <xs:element name="Sender">
        <xs:complexType>
            <xs:attribute name="username" use="required"/>
        </xs:complexType>
    </xs:element>
    <xs:element name="Recipient">
        <xs:complexType>
            <xs:attribute name="username" use="required"/>
        </xs:complexType>
    </xs:element>
    <!-- Announcements ====================================================== -->
    <xs:element name="AnnouncementList">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="Announcement" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="Announcement">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="Username" minOccurs="1" maxOccurs="1"/>
                <xs:element ref="Subject" minOccurs="1" maxOccurs="1"/>
                <xs:element ref="Body" minOccurs="1" maxOccurs="1"/>
                <xs:element ref="StartDate" minOccurs="1" maxOccurs="1"/>
                <xs:element ref="EndDate" minOccurs="0" maxOccurs="1"/>
            </xs:sequence>
            <xs:attribute name="id"/>
        </xs:complexType>
    </xs:element>
    <!-- polls =============================================================== -->
    <xs:element name="PollList">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="Poll" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="Poll">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="Username" minOccurs="0" maxOccurs="1"/>
                <xs:element ref="Name" minOccurs="1" maxOccurs="1"/>
                <xs:element ref="Description" minOccurs="0" maxOccurs="1"/>
                <xs:element ref="CreationDate" minOccurs="1" maxOccurs="1"/>
                <xs:element ref="ModifiedDate" minOccurs="1" maxOccurs="1"/>
                <xs:element ref="StartDate" minOccurs="1" maxOccurs="1"/>
                <xs:element ref="EndDate" minOccurs="1" maxOccurs="1"/>
                <xs:element ref="ExpireDate" minOccurs="1" maxOccurs="1"/>
                <xs:element ref="PollModeList" minOccurs="1" maxOccurs="1"/>
                <xs:element ref="PollOptionList" minOccurs="0" maxOccurs="1"/>
                <xs:element ref="PollVoteList" minOccurs="0" maxOccurs="1"/>
            </xs:sequence>
            <xs:attribute name="id"/>
        </xs:complexType>
    </xs:element>
    <xs:element name="PollModeList">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="PollMode" minOccurs="1" maxOccurs="3"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="PollMode">
        <xs:complexType>
            <xs:attribute name="mode" use="required">
                <xs:simpleType>
                    <xs:restriction base="xs:token">
                        <xs:enumeration value="ALLOW_USER_VOTE_MODIFICATION"/>
                        <xs:enumeration value="ALLOW_ANONYMOUS_VOTE_MODIFICATION"/>
                        <xs:enumeration value="MULTIPLE_SELECTIONS_ALLOWED"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:attribute>
        </xs:complexType>
    </xs:element>
    <xs:element name="PollOptionList">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="PollOption" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="PollOption">
        <xs:complexType mixed="true">
            <xs:attribute name="index" type="xs:integer"/>
        </xs:complexType>
    </xs:element>
    <xs:element name="PollVoteList">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="PollVote" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="PollVote">
        <xs:complexType>
            <xs:sequence>
                <xs:choice>
                    <xs:element name="Username"/>
                    <xs:element name="Guest">
                        <xs:complexType>
                            <xs:attribute name="id" type="xs:string"/>
                        </xs:complexType>
                    </xs:element>
                </xs:choice>
                <xs:element ref="CreationDate" minOccurs="1" maxOccurs="1"/>
            </xs:sequence>
            <xs:attribute name="index" type="xs:integer"/>
        </xs:complexType>
    </xs:element>
    <xs:element name="ExpireDate" type="jive-date"/>
    <!-- global ================================================================ -->
    <xs:element name="CreationDate" type="jive-date"/>
    <xs:element name="ModifiedDate" type="jive-date"/>
    <xs:element name="StartDate" type="jive-date"/>
    <xs:element name="EndDate" type="jive-date"/>
    <xs:element name="Description" type="xs:string"/>
    <xs:element name="Username" type="xs:string"/>
    <xs:element name="Name">
        <xs:complexType mixed="true">
            <xs:attribute name="visible" default="true">
                <xs:simpleType>
                    <xs:restriction base="xs:token">
                        <xs:enumeration value="true"/>
                        <xs:enumeration value="false"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:attribute>
        </xs:complexType>
    </xs:element>
    <xs:simpleType name="jive-date">
        <xs:restriction base="xs:string">
            <xs:pattern value="\d{4,5}\/\d{2}\/\d{2}\s*\d{2}:\d{2}:\d{2}\.\d{2,3}\s*[A-Z]{3}"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:element name="AttachmentList">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="Attachment" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="Attachment">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="Name"/>
                <xs:element ref="CreationDate" minOccurs="1" maxOccurs="1"/>
                <xs:element ref="ModifiedDate" minOccurs="1" maxOccurs="1"/>
                <xs:element ref="PropertyList" minOccurs="0" maxOccurs="1"/>
            </xs:sequence>
            <xs:attribute name="id" type="xs:string"/>
            <xs:attribute name="contentType" type="xs:string"/>
        </xs:complexType>
    </xs:element>
</xs:schema>

