alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

What this is

This file is included in the DevDaily.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Other links

The source code

<?xml encoding="UTF-8"?>

<!-- A DTD for WebMail's user model -->

<!-- CVS ID: $Id: usermodel.dtd,v 1.1.1.1 2002/10/02 18:41:45 wastl Exp $ -->

<!--
 * Copyright (C) 2000 Sebastian Schaffert
 * 
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-->

<!-- Include DTD for WebMail's system configuration -->
<!ENTITY % SYSDATA SYSTEM "sysdata.dtd">
<!-- Same for the user data DTD -->
<!ENTITY % USERDATA SYSTEM "userdata.dtd">
<!-- and some information on how environment variables should be stored -->
<!ENTITY % STATEDATA SYSTEM "statedata.dtd">
<!-- finally some description about the current state of the user's navigation -->
<!-- 


<!-- The WebMail usermodel consists of
   - the navigation data, which stores the current state of the WebMail main screen
   - the system data, the subtree which contains WebMail's system configuration, which the admin 
     may opt to display to the user
   - the userdata, representing "static" user information like name, login etc
   - the state, represented with some environment-like variables
   - optional messagelists for the different folders; These consist of messages (either header
     or header and body) and will be assembled if a user requests a message list for the first time
-->

<!ELEMENT USERMODEL (NAVDATA?,SYSDATA,USERDATA,STATEDATA?,CURRENT*,WORK?,MAILHOST_MODEL*)>

<!-- CURRENT saves information about the mailhost, folder, message that is currently used by that user -->
<!ELEMENT CURRENT EMPTY>
<!ATTLIST CURRENT
	type		(folder|message) 		#REQUIRED
	id		CDATA				#REQUIRED
	list_part	CDATA				#IMPLIED
	first_msg	CDATA				#IMPLIED
	last_msg	CDATA				#IMPLIED>

<!-- WORK saves messages that are currently edited by the user and have to be saved
	temporarily -->
<!ELEMENT WORK (MESSAGE*)>

<!-- each mailhost has its own foldertree -->
<!ELEMENT MAILHOST_MODEL (FOLDER)*>
<!ATTLIST MAILHOST_MODEL
	name		CDATA	#REQUIRED
	error		CDATA	#IMPLIED
	url		CDATA	#IMPLIED>

<!-- A folder possibly has a messagelist or subfolders or both -->
<!ELEMENT FOLDER (FOLDER|MESSAGELIST)*>
<!-- Indicate whether this folder can hold subfolders or messages -->
<!ATTLIST FOLDER
    	id		CDATA	#REQUIRED
	name		CDATA	#REQUIRED
    	holds_folders  	CDATA 	#REQUIRED
    	holds_messages 	CDATA 	#REQUIRED
	error		CDATA	#IMPLIED>

<!-- A messagelist consists of messages -->
<!ELEMENT MESSAGELIST (MESSAGE*)>
<!ATTLIST MESSAGELIST
	total		CDATA	#REQUIRED
	new		CDATA	#REQUIRED>

<!-- A message has a header and a body -->
<!ELEMENT MESSAGE (HEADER,PART?)>
<!-- A message belongs to a certain folder, has a unique message id and a number in 
    that folder. Message size will be set if possible and also some of the message flags -->
<!ATTLIST MESSAGE
   	msgid    	CDATA 		#REQUIRED
   	msgnr    	CDATA 		#REQUIRED
	size		CDATA		#IMPLIED
	recent		(true|false)	#IMPLIED
	seen		(true|false)	#IMPLIED
	answered	(true|false)	#IMPLIED
	deleted		(true|false)	#IMPLIED
	draft		(true|false)	#IMPLIED
	flagged		(true|false)	#IMPLIED
	user		(true|false)	#IMPLIED
	attachment	(true|false)	#IMPLIED>

<!-- A message header has several fields -->
<!ELEMENT HEADER (FROM, TO+, CC*, BCC*, REPLY-TO?, SUBJECT, DATE, HEADERVAR)>
<!ELEMENT TO (#PCDATA)>
<!ELEMENT FROM (#PCDATA)>
<!ELEMENT CC (#PCDATA)>
<!ELEMENT BCC (#PCDATA)>
<!ELEMENT SUBJECT (#PCDATA)>
<!ELEMENT REPLY-TO (#PCDATA)>

<!ELEMENT HEADERVAR (#PCDATA)>
<!ATTLIST HEADERVAR
	name	CDATA	#REQUIRED>

<!-- A message body consists of parts which can contain text or MIME data 
     The JavaScript section is used to filter JavaScript contents. It is no part since 
     WebMail does the filtering, not the message 
     The quotelevel attribute for CONTENT will be used to indicate that this text should 
     possibly displayed in another format because it is quoted. -->
<!ELEMENT PART (PART|JAVASCRIPT|CONTENT)*>
<!-- The part type is required so the XSL stylesheets can determine how the part should
     be displayed (usually either inlined, as an image or as an external link 
     encoding, content-type and description are just used for further description of the
     content and filename is used for images and external links.
-->
<!ATTLIST PART
	type		(image|binary|text|html|multi) #REQUIRED
	encoding	CDATA			#IMPLIED
	content-type	CDATA			#IMPLIED
	filename	CDATA			#IMPLIED
	description	CDATA			#IMPLIED
	size		CDATA			#IMPLIED>

<!ELEMENT JAVASCRIPT (#PCDATA)>

<!ELEMENT CONTENT (#PCDATA)>
<!ATTLIST CONTENT
        quotelevel		CDATA	#IMPLIED>

%SYSDATA;
%USERDATA;
%STATEDATA;
... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.