<?xml version='1.0' encoding='ISO-8859-1' ?>

<!--
Name:      requirement.dtd
Project:   xmlBlaster.org
Copyright: xmlBlaster.org, see xmlBlaster-LICENSE file
Comment:   Validates xml requirements
-->

<!ELEMENT requirement (
   topic,
   description,
   serverDeveloperDescription,
   example*,
   configuration*,
   todo*,
   done*,
   see*,
   author,
   hacker*,
   effort?,
   date,
   revision,
   log?,
   testcase*,
   changerequest*
   )>

<!ENTITY % text "#PCDATA">

<!ELEMENT topic  (%text;)>
<!ELEMENT description  (%text;)>
<!ELEMENT serverDeveloperDescription (%text;)> <!-- some description for the server programmer -->
<!ELEMENT example  (%text;)> <!-- a nice example for the users -->
<!ELEMENT configuration (%text;)> <!-- which parameters are how configurable -->
<!ELEMENT todo  (%text;)>    <!-- even in CLOSED mode, is there something left to do? -->
<!ELEMENT done  (%text;)>    <!-- change the 'todo' element to 'done' if it is implemented -->
<!ELEMENT see  (%text;)>     <!-- a link to related topics -->
<!ELEMENT author  (%text;)>  <!-- who wrote the requirement -->
<!ELEMENT hacker  (%text;)>  <!-- who coded it -->
<!ELEMENT effort  (%text;)>  <!-- how many days you expect / you needed to implement -->
<!ELEMENT date  (%text;)>    <!-- date you setup this requirement -->
<!ELEMENT revision  (%text;)> <!-- the subversion revision number -->
<!ELEMENT log  (%text;)>     <!-- the svn log informations (optional) -->

<!-- if the requirement needs to be changed (optional) -->
<!ELEMENT changerequest (
   name,
   comment
   )>

<!ATTLIST changerequest
          prio  (LOW | MEDIUM | HIGH) "LOW"
          type (NEW | BUG) "NEW"
          status (OPEN | INWORK | CLOSED | DEPRECATED) "OPEN">

<!ELEMENT testcase (
   name,
   comment,
   test*
   )>

<!ELEMENT name  (%text;)>
<!ELEMENT comment  (%text;)>
<!ELEMENT test  (%text;)>

<!ATTLIST requirement
          id ID #REQUIRED
          prio  (LOW | MEDIUM | HIGH) "LOW"
          type (NEW | BUG) "NEW"
          status (OPEN | INWORK | CLOSED | DEPRECATED) "OPEN">

<!--
   Examples are surrounded by a <pre></pre> in RAW mode
-->
<!ATTLIST example lang (any | XML | Java | C | CPP | Perl | Python | TCL | Javascript | XmlRpc | Csharp | VisualBasic| Flash | ActionScript ) "Java"
          type (HTML | RAW) "RAW">

<!ATTLIST todo type (HTML | RAW) "RAW">

<!ATTLIST configuration where (server | client) "server">

<!--
   The type API allows the XSL to create a link into the xmlBlaster javadoc
   the type REQ creates a link to another requirement file
   The INTERNET opens a link in a new window
   Example: (don't give any extensions)
   <see type="API">org.xmlBlaster.client.qos.PublishQos</see>
 -->
<!ATTLIST see type (API | REQ | OTHER | INTERNET | LOCAL | CODE) "API"
              lang (any | XML | Java | C | CPP | Perl | Python | TCL | Javascript | XmlRpc | Csharp | VisualBasic| Flash | ActionScript ) "Java"
				  label NMTOKEN #IMPLIED>

<!ATTLIST testcase status (OPEN | INWORK | CLOSED) "OPEN">

<!-- The type SUITE allows the XSL to create a link into the xmlBlaster testsuite -->
<!ATTLIST test tool (SUITE | MANUAL) "SUITE"
               lang (any | XML | Java | C | CPP | Perl | Python | TCL | Javascript | XmlRpc | Csharp | VisualBasic| Flash | ActionScript ) "Java">
