<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content="text/html; charset=iso-8859-1" http-equiv=Content-Type>
<META content="MSHTML 5.00.2314.1000" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT size=2>Well, here's a target. Open season!</FONT></DIV>
<DIV> </DIV>
<DIV><FONT size=2>Client to server only. This DTD is sufficient to
validate the "client2server.txt" file from jabber.org.</FONT></DIV>
<DIV> </DIV>
<DIV><FONT size=2>Particular issues:</FONT></DIV>
<DIV><FONT size=2>Is "nick" required for a login packet, or
optional?</FONT></DIV>
<DIV> </DIV>
<DIV><FONT size=2>Which, if any, fields in a message packet are required?
Right now, this shows only "to" and "say" as required.</FONT></DIV>
<DIV> </DIV>
<DIV><FONT size=2>Notice how many elements have #PCDATA for content and no
attributes. This usually indicates that the DTD cannot capture complete
knowledge about the data. (Typically resulting in extra work for the XML
application.) For instance, my instinct tells me that there are only
certain allowed values for "icon" tags. This might better be captured as
</FONT></DIV>
<DIV> </DIV>
<DIV><FONT size=2><!ENTITY %iconTypes
"(online|away|happy|sad|hungry)"></FONT></DIV>
<DIV><FONT size=2><!ELEMENT icon EMPTY></FONT></DIV>
<DIV><FONT size=2><!ATTLIST icon</FONT></DIV>
<DIV><FONT size=2> type %iconTypes #REQUIRED</FONT></DIV>
<DIV><FONT size=2>></FONT></DIV>
<DIV> </DIV>
<DIV><FONT size=2>This would require the icon type to be one of those in the
list. (Priorities might be another good example of this.)</FONT></DIV>
<DIV> </DIV>
<DIV><FONT size=2>Is a "say" required for a status packet? (Currently
shows as required.)</FONT></DIV>
<DIV> </DIV>
<DIV><FONT size=2>Can a roster packet include multiple "get" elements? Can
they be mixed with multiple "del" and "add" elements?</FONT></DIV>
<DIV> </DIV>
<DIV><FONT size=2>
<DIV><FONT size=2>jabber.dtd</FONT></DIV>
<DIV>
<DIV><FONT size=2>----------Cut here-----------</FONT></DIV></DIV>
<DIV></FONT><FONT size=2><?xml version="1.0"
encoding="UTF-8"?></FONT></DIV>
<DIV> </DIV>
<DIV><FONT size=2><!ENTITY % knownProtocolVersions
"19990324"><BR><!ENTITY % currentProtocolVersion
"19990324"></FONT></DIV>
<DIV> </DIV>
<DIV><FONT size=2><!ELEMENT jabber
(login|message|status|roster)*><BR><!ATTLIST jabber<BR> version
CDATA #REQUIRED<BR> protocol (%knownProtocolVersions;)
"%currentProtocolVersion;"<BR>></FONT></DIV>
<DIV> </DIV>
<DIV><FONT size=2><!ELEMENT login (user, pass, (nick)?)><BR><!ATTLIST
login ></FONT></DIV>
<DIV> </DIV>
<DIV><FONT size=2><!ELEMENT user (#PCDATA)><BR><!ATTLIST user
></FONT></DIV>
<DIV> </DIV>
<DIV><FONT size=2><!ELEMENT pass (#PCDATA)><BR><!ATTLIST pass
></FONT></DIV>
<DIV> </DIV>
<DIV><FONT size=2><!ELEMENT nick (#PCDATA)><BR><!ATTLIST nick
></FONT></DIV>
<DIV> </DIV>
<DIV><FONT size=2><!ELEMENT message ((to)+, (thread)?, (priority)?,
(subject)?, say)><BR><!ATTLIST message ></FONT></DIV>
<DIV> </DIV>
<DIV><FONT size=2><!ELEMENT to (#PCDATA)><BR><!ATTLIST to<BR>
name CDATA #IMPLIED<BR>></FONT></DIV>
<DIV> </DIV>
<DIV><FONT size=2><!ELEMENT thread (#PCDATA)><BR><!ATTLIST thread
></FONT></DIV>
<DIV> </DIV>
<DIV><FONT size=2><!ELEMENT priority (#PCDATA)><BR><!ATTLIST priority
></FONT></DIV>
<DIV> </DIV>
<DIV><FONT size=2><!ELEMENT subject (#PCDATA)><BR><!ATTLIST subject
></FONT></DIV>
<DIV> </DIV>
<DIV><FONT size=2><!ELEMENT say (#PCDATA)><BR><!ATTLIST say<BR>
type CDATA #IMPLIED<BR>></FONT></DIV>
<DIV> </DIV>
<DIV><FONT size=2><!ELEMENT status (say, (priority)?,
(icon)?)><BR><!ATTLIST status ></FONT></DIV>
<DIV> </DIV>
<DIV><FONT size=2><!ELEMENT icon (#PCDATA)><BR><!ATTLIST icon
></FONT></DIV>
<DIV> </DIV>
<DIV><FONT size=2><!ELEMENT roster ((add)*, (del)*,
(get)*)><BR><!ATTLIST roster ></FONT></DIV>
<DIV> </DIV>
<DIV><FONT size=2><!ELEMENT add (#PCDATA)><BR><!ATTLIST add<BR>
group CDATA #REQUIRED<BR>></FONT></DIV>
<DIV> </DIV>
<DIV><FONT size=2><!ELEMENT del (#PCDATA)><BR><!ATTLIST del<BR>
group CDATA #REQUIRED<BR>></FONT></DIV>
<DIV> </DIV>
<DIV><FONT size=2><!ELEMENT get (#PCDATA)><BR><!ATTLIST get<BR>
group CDATA #REQUIRED<BR>><BR></FONT></DIV></DIV>
<DIV> </DIV></BODY></HTML>