<!-- ***************************************************************************
*                                                                              *
* File                                                                         *
*   Document Type Declaration (DTD) fuer das SELFHTML-Forum                    *
*                                                                              *
* Authors                                                                      *
*   Thomas J. Sebestyen <thomasj.sebestyen@meta-text.net>, 2000-09-30          *
*   Andre Malo <nd@o3media.de>, 2001-02-21                                     *
*   Frank Schoenmann <fs@tower.de>, 2001-03-17                                 *
*                                                                              *
* 2001-03-17, v2.13                                                            *
*   * style changes                                                            *
*   * renamed "Message" attribute "visitings" -> "views"                       *
*   * "Email" is now optional (not used in main forum xml)                     *
*                                                                              *
* 2001-02-21, v2.12                                                            *
*   * replaced "Message" attribute "flag" -> "invisible"                       *
*   * added "Message" attributes "archive", "ip", "unid"                       *
*                                                                              *
* 2001-01-16, v2.11                                                            *
*   * added "Message" attributes "flag"                                        *
*                                                                              *
* 2000-12-27, v2.1                                                             *
*   * added "Message" attribues "visitings", "votingUser", "votingAteam",      *
*     "votingAdmin"                                                            *
*   * added "Forum" attributes "lastThread", "lastMessage"                     *
*   * replaced "Date" attributes by "longSec"                                  *
*   * removed "Flag"                                                           *
*   * added "%boolean" type as attribute value                                 *
*                                                                              *
* 2000-09-30, v2.0                                                             *
*   * removed some "Thread" and "Message" attributes                           *
*   * added "Header", "Email", "Homepage", "Imageurl", "Category", "Subject"   *
*   * renamed "Datum" -> "Date"                                                *
*                                                                              *
* Older history:                                                               *
*   * 2000-07-29, v1.01                                                        *
*   * 2000-07-17, v1.00                                                        *
*                                                                              *
**************************************************************************** -->

<!ENTITY % boolean "(0 | 1)">
<!-- Parameterentity fuer ja (1) oder nein (0) Fragen -->


<!ELEMENT   Forum       ((Thread, ContentList) | (Thread)*)>
<!ATTLIST   Forum
    lastThread          IDREF       #IMPLIED
    lastMessage         IDREF       #IMPLIED
>
<!-- ***************************************************************************
    'Forum' ist das Root-Element und beinhaltet alle anderen Elemente.

    Das Attribut 'lastThread' hat den Typ IDREF, es bezieht sich auf die ID
    des jeweils letzten Threads im Forum
    Das Attribut 'lastMessage' hat den Typ IDREF, es bezieht sich auf die ID
    der jeweils letzten Messages im Forum
**************************************************************************** -->


<!ELEMENT   Thread          (Message)>
<!ATTLIST   Thread
    id                      ID          #REQUIRED
>
<!-- ***************************************************************************
    'Thread' stellt einen Nachrichtenbaum dar.

    Das Attribut 'id' hat den Typ ID und muss vorhanden sein.
**************************************************************************** -->


<!ELEMENT   ContentList     (MessageContent)+>
<!-- ***************************************************************************
    'ContentList' enthaelt alle Nachrichteninhalte.
**************************************************************************** -->


<!ELEMENT   MessageContent  (#PCDATA)>
<!ATTLIST   MessageContent
    mid                     IDREF       #REQUIRED
>
<!-- ***************************************************************************
    'MessageContent' beinhaltet den Nachrichtentext einer Nachricht.

    Das Attribut 'mid' hat den Typ IDREF. Es bezieht sich auf die ID der
    entsprechenden Nachricht.
**************************************************************************** -->


<!ELEMENT   Message         (Header, Message*)>
<!ATTLIST   Message
    id                      ID          #REQUIRED
    views                   NMTOKEN     #IMPLIED
    votingUser              NMTOKEN     #IMPLIED
    votingAteam             %boolean;   #IMPLIED
    votingAdmin             %boolean;   #IMPLIED
    invisible               %boolean;   #IMPLIED
    archive                 %boolean;   #IMPLIED
    ip                      CDATA       #IMPLIED
    unid                    CDATA       #IMPLIED
>
<!-- ***************************************************************************
    'Message' stellt eine Nachricht im Thread dar und darf andere 'Message'-
    Elemente enthalten, um so Teilbaeume im Thread zu bilden.

    Das Attribut 'id' hat den Typ ID und muss vorhanden sein.
    Das Attribut 'views' zaehlt die Anzahl der Aufrufe einer Nachricht.
    Das Attribut 'votingUser' zaehlt, wie oft User die Nachricht fuer das
    Archiv vorgeschlagen haben.
    Das Attribut 'votingAteam' speichert die Meinung des Auslese-Teams zu
    dieser Nachricht (0 - nicht archivieren, 1 - archivieren).
    Das Attribut 'votingAdmin" speichert die Meinung des Administrators zu
    dieser Nachricht (0 - nicht archivieren, 1 - archivieren).
    Das Attribut 'invisible' bestimmt, ob eine Nachricht angezeigt wird (0
    oder nicht vorhanden) oder nicht (1).
    Das Attribut 'archive' speichert den aktuellen Status, ob eine Nachricht
    archiviert wird (1) oder nicht (0), basierend auf den Votings.
    Das Attribut 'ip' speicher die IP-Adresse des Senders der Nachricht.
    Das Attribute 'unid' enthaelt eine eindeutige Nummer fuer die Nachricht.
**************************************************************************** -->


<!ELEMENT   Header          (Author, Category, Subject, Date)>
<!-- ***************************************************************************
    'Header' beinhaltet die Header-Informationen der Nachricht in Form von
    Elementen.
**************************************************************************** -->


<!ELEMENT   Author          (Name, Email?, HomepageUrl?, ImageUrl?)>
<!-- ***************************************************************************
    'Author' enthaelt alle benoetigten und optionalen Daten zum Autor einer
    Nachricht.
**************************************************************************** -->


<!ELEMENT   Category        (#PCDATA)>
<!-- ***************************************************************************
    'Category' enthaelt das Thema der Nachricht.
**************************************************************************** -->


<!ELEMENT   Subject         (#PCDATA)>
<!-- ***************************************************************************
    'Subject' beinhaltet den Titel der Nachricht.
**************************************************************************** -->


<!ELEMENT   Date            EMPTY>
<!ATTLIST   Date
    longSec                 NMTOKEN     #REQUIRED
>
<!--
    year                    NMTOKEN     #REQUIRED
    mon                     NMTOKEN     #REQUIRED
    day                     NMTOKEN     #REQUIRED
    hour                    NMTOKEN     #REQUIRED
    min                     NMTOKEN     #REQUIRED
    sec                     NMTOKEN     #REQUIRED
    isoDate                 NMTOKEN     #REQUIRED
-->
<!-- ***************************************************************************
    'Date' enthaelt die Erstellungszeit der Nachricht.

    Das Attribut 'longSec' speichert die Erstellungszeit als Sekunden seit
    1970.
**************************************************************************** -->


<!ELEMENT   Name            (#PCDATA)>
<!-- ***************************************************************************
    'Name' enthaelt den Namen des Autors.
**************************************************************************** -->


<!ELEMENT   Email           (#PCDATA)>
<!-- ***************************************************************************
    'Email' enthaelt die eMail-Adresse des Autors.
**************************************************************************** -->


<!ELEMENT   HomepageUrl     (#PCDATA)>
<!-- ***************************************************************************
    'HomepageUrl' enthaelt die Homepage-Adresse des Autors.
**************************************************************************** -->


<!ELEMENT   ImageUrl        (#PCDATA)>
<!-- ***************************************************************************
    'ImageUrl' enthaelt die Adresse eines beliebigen Bildes des Autors.
**************************************************************************** -->
