<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns="http://schemas.cybozu.co.jp/bulletin/2008"
            xmlns:base="http://schemas.cybozu.co.jp/base/2008"
            targetNamespace="http://schemas.cybozu.co.jp/bulletin/2008"
            elementFormDefault="qualified">
  
  <xsd:import namespace="http://schemas.cybozu.co.jp/base/2008" schemaLocation="base.xsd" />

  <xsd:complexType name="CategoryInformationType">
    <xsd:sequence>
      <xsd:element name="root" type="CategoryType" minOccurs="1" maxOccurs="1"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="CategoryType">
    <xsd:sequence>
      <xsd:element name="name" type="xsd:string" minOccurs="1" maxOccurs="1" />
      <xsd:element name="description" type="xsd:string" minOccurs="1" maxOccurs="1" />
      <xsd:element name="creator_id" type="xsd:string"  minOccurs="1" maxOccurs="1" />
      <xsd:element name="creator_login_name" type="xsd:string"  minOccurs="1" maxOccurs="1" />
      <xsd:element name="creator_display_name" type="xsd:string" minOccurs="1" maxOccurs="1" />
      <xsd:element name="create_time" type="xsd:date" minOccurs="1" maxOccurs="1" />
      <xsd:element name="modifier_id" type="xsd:string" minOccurs="1" maxOccurs="1" />
      <xsd:element name="modifier_login_name" type="xsd:string" minOccurs="1" maxOccurs="1" />
      <xsd:element name="modifier_display_name" type="xsd:string" minOccurs="1" maxOccurs="1" />
      <xsd:element name="modify_time" type="xsd:date" minOccurs="1" maxOccurs="1" />
      <xsd:element name="categories" type="CategoriesType" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
    <xsd:attribute name="id" type="base:IDType" use="required"/>
    <xsd:attribute name="code" type="xsd:string" use="required"/>
    <xsd:attribute name="list_index" type="xsd:unsignedInt" use="required"/>
  </xsd:complexType>
  
  
  <xsd:complexType name="CategoriesType">
    <xsd:sequence>
      <xsd:element name="category" type="CategoryType" minOccurs="0" maxOccurs="unbounded" />
    </xsd:sequence>
    <xsd:attribute name="parent_id" type="base:IDType" use="required" />
    <xsd:attribute name="parent_code" type="xsd:string" use="required" />
  </xsd:complexType>
  
  <xsd:complexType name="TopicsList">
    <xsd:sequence>
        <xsd:element name="topic" minOccurs="0" maxOccurs="unbounded">
            <xsd:complexType>
            <xsd:attribute name="id" type="base:IDType" use="required" />
            </xsd:complexType>
        </xsd:element>
    </xsd:sequence>
    <xsd:attribute name="category_id" type="base:IDType" use="required" />
  </xsd:complexType>
  
  <xsd:complexType name="TopicType">
    <xsd:sequence>
      <xsd:element ref="content" minOccurs="1" maxOccurs="1" />
      <xsd:element name="follow" minOccurs="0" maxOccurs="unbounded">
        <xsd:complexType>
          <xsd:attribute name="id" type="base:IDType" use="required" />
          <xsd:attribute name="number" type="base:NonBlankStringType" use="required" />
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="creator" type="base:ChangeLogType" />
      <xsd:element name="modifier" type="base:ChangeLogType" />
    </xsd:sequence>

    <xsd:attribute name="id" type="base:IDType" use="required" />
    <xsd:attribute name="creator_group_id" type="base:IDType" use="optional" />
    <xsd:attribute name="version" type="base:VersionType" use="required" />
    <xsd:attribute name="manually_enter_sender" type="xsd:string" use="optional" />
    <xsd:attribute name="subject" type="xsd:string" use="required" />
    <xsd:attribute name="is_draft" type="xsd:boolean" use="optional" />
    <xsd:attribute name="start_datetime" type="xsd:dateTime" use="optional" />
    <xsd:attribute name="end_datetime" type="xsd:dateTime" use="optional" />
    <xsd:attribute name="start_is_datetime" type="xsd:boolean" use="optional" />
    <xsd:attribute name="end_is_datetime" type="xsd:boolean" use="optional" />
    <xsd:attribute name="can_follow" type="xsd:boolean" use="required" />
    <xsd:attribute name="published" type="xsd:boolean" use="optional" />
    <xsd:attribute name="unread" type="xsd:boolean" use="optional" />
    <xsd:attribute name="expired" type="xsd:boolean" use="optional" />
    <xsd:attribute name="category_id" type="base:IDType" use="required" />
    <xsd:anyAttribute processContents="lax" />
  </xsd:complexType>

  <xsd:element name="content">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="file" minOccurs="0" maxOccurs="unbounded">
          <xsd:complexType>
            <xsd:attribute name="id" type="base:IDType" use="required" />
            <xsd:attribute name="name" type="base:NonBlankStringType" use="required" />
            <xsd:attribute name="size" type="xsd:unsignedLong" use="optional" />
            <xsd:attribute name="mime_type" type="xsd:string" use="optional" />
          </xsd:complexType>
        </xsd:element>
      </xsd:sequence>
      <xsd:attribute name="body" type="xsd:string" use="required" />
      <xsd:attribute name="html_body" type="xsd:string" use="optional" />
    </xsd:complexType>
  </xsd:element>
  
  <xsd:complexType name="FollowsList">
    <xsd:sequence>
        <xsd:element name="follow" minOccurs="0" maxOccurs="unbounded">
            <xsd:complexType>
            <xsd:attribute name="id" type="base:IDType" use="required" />
            <xsd:attribute name="number" type="base:NonBlankStringType" use="required" />
            </xsd:complexType>
        </xsd:element>
    </xsd:sequence>
    <xsd:attribute name="topic_id" type="base:IDType" use="required" />
  </xsd:complexType>
  
  <xsd:element name="follows">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="follow" type="FollowType" minOccurs="0" maxOccurs="unbounded" />
      </xsd:sequence>
    </xsd:complexType>
    <xsd:key name="follow_key">
      <xsd:selector xpath="follow" />
      <xsd:field xpath="@id" />
    </xsd:key>
  </xsd:element>

  <xsd:complexType name="FollowType">
    <xsd:sequence>
      <xsd:element name="file" minOccurs="0" maxOccurs="unbounded">
        <xsd:complexType>
          <xsd:attribute name="id" type="base:IDType" use="required" />
          <xsd:attribute name="name" type="base:NonBlankStringType" use="required" />
          <xsd:attribute name="size" type="xsd:unsignedLong" use="optional" />
          <xsd:attribute name="mime_type" type="xsd:string" use="optional" />
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="creator" type="base:ChangeLogType" />
    </xsd:sequence>
    <xsd:attribute name="id" type="base:IDType" use="required" />
    <xsd:attribute name="number" type="base:NonBlankStringType" use="required" />
    <xsd:attribute name="text" type="xsd:string" use="required" />
    <xsd:attribute name="html_text" type="xsd:string" use="optional" />
  </xsd:complexType>
  
  
</xsd:schema>
