
<!-- ********************************************************************** -->
<!-- *                                                                    * -->
<!-- *                                                                    * -->
<!-- *                                                                    * -->
<!-- ********************************************************************** -->

<!--

Wireless Markup Language (WML) Document Type Definition.

Copyright Wireless Application Protocol Forum Ltd., 1998,1999.

                      All rights reserved.

WML is an XML language.  Typical usage:

   <?xml version="1.0"?>
   <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.0//EN"
          "http://www.wapforum.org/DTD/wml.xml">
   <wml>
   ...
   </wml>

Terms and conditions of use are available from the Wireless

Application Protocol Forum Ltd. web site at

http://www.wapforum.org/docs/copyright.htm.

-->

<!-- ********************************************************************** -->
<!-- *                                                                    * -->
<!-- *                                                                    * -->
<!-- *                                                                    * -->
<!-- ********************************************************************** -->

<!ENTITY % length  "CDATA">     <!-- [0-9]+ for pixels or [0-9]+"%" for
                                     percentage length -->

<!ENTITY % vdata   "CDATA">     <!-- attribute value possibly containing
                                     variable references -->

<!ENTITY % URL     "%vdata;">   <!-- URL or URN designating a hypertext
                                     node. May contain variable references -->

<!ENTITY % boolean "(TRUE|FALSE)">

<!ENTITY % number  "NMTOKEN">   <!-- a number, with format [0-9]+ -->

<!ENTITY % emph    "EM | STRONG | B | I | U | BIG | SMALL">

<!ENTITY % tab     "TAB">

<!ENTITY % layout  "BR">

<!ENTITY % text     "#PCDATA | %emph; | %tab;">

<!ENTITY % inline   "%text; | %layout;">

<!-- flow covers "card-level" elements, such as text and images -->

<!ENTITY % flow     "%inline; | IMG | A">

<!-- Task types -->

<!ENTITY % task   "GO | PREV | NOOP | REFRESH">

<!-- Navigation and event elements -->

<!ENTITY % navelmts "DO | ONEVENT">

<!--================ Decks and Cards ================-->

<!ELEMENT WML ( HEAD?, TEMPLATE?, CARD+ )>

<!ATTLIST WML
  xml:lang        NMTOKEN        #IMPLIED
  >

<!-- card intrinsic events -->

<!ENTITY % cardev
 "ONENTERFORWARD  %URL;          #IMPLIED
  ONENTERBACKWARD %URL;          #IMPLIED
  ONTIMER         %URL;          #IMPLIED"
  >

<!-- CARD field types -->

<!ENTITY % fields  "%flow; | INPUT | SELECT | FIELDSET">

<!ELEMENT CARD (%fields; | %navelmts; | TIMER)*>

<!ATTLIST CARD
  NAME            NMTOKEN       #IMPLIED
  TITLE           %vdata;       #IMPLIED
  NEWCONTEXT      %boolean;     "FALSE"
  STYLE           (LIST|SET)    "LIST"
  %cardev;
  >

<!--================ Event Bindings ================-->

<!ELEMENT DO (%task;)>

<!ATTLIST DO
  TYPE         CDATA       #REQUIRED
  LABEL        %vdata;     #IMPLIED
  NAME         NMTOKEN     #IMPLIED
  OPTIONAL     %boolean;   "FALSE"
  >

<!ELEMENT ONEVENT (%task;)>

<!ATTLIST ONEVENT
  TYPE         CDATA       #REQUIRED
  >

<!--================ Deck-level declarations ================-->

<!ELEMENT HEAD ( ACCESS | META )+>

<!ELEMENT TEMPLATE (%navelmts;)*>

<!ATTLIST TEMPLATE
  %cardev;
  >

<!ELEMENT ACCESS EMPTY>

<!ATTLIST ACCESS
  DOMAIN       CDATA       #IMPLIED
  PATH         CDATA       #IMPLIED
  PUBLIC       %boolean;   "FALSE"
  >

<!ELEMENT META EMPTY>

<!ATTLIST META
  HTTP-EQUIV     CDATA      #IMPLIED
  NAME           CDATA      #IMPLIED
  USER-AGENT     CDATA      #IMPLIED
  CONTENT        CDATA      #REQUIRED
  SCHEME         CDATA      #IMPLIED
  >

<!--================ Tasks ================-->

<!ELEMENT GO (VAR)*>

<!ATTLIST GO
  URL             %URL;           #REQUIRED
  SENDREFERER     %boolean;       "FALSE"
  METHOD          (POST|GET)      "GET"
  ACCEPT-CHARSET  CDATA           #IMPLIED
  POSTDATA        %vdata;         #IMPLIED
  >

<!ELEMENT PREV (VAR)*>

<!ELEMENT REFRESH (VAR)+>

<!ELEMENT NOOP EMPTY>

<!--================ VAR ================-->

<!ELEMENT VAR EMPTY>

<!ATTLIST VAR
  NAME         %vdata;           #REQUIRED
  VALUE        %vdata;           #REQUIRED
  >

<!--================ CARD Fields ================-->

<!ELEMENT SELECT (OPTGROUP|OPTION)+>

<!ATTLIST SELECT
  TITLE        %vdata;           #IMPLIED
  KEY          NMTOKEN           #IMPLIED
  DEFAULT      %vdata;           #IMPLIED
  IKEY         NMTOKEN           #IMPLIED
  IDEFAULT     %vdata;           #IMPLIED
  MULTIPLE     %boolean;         "FALSE"
  TABINDEX     %number;          #IMPLIED
  >

<!ELEMENT OPTGROUP (OPTGROUP|OPTION)+ >

<!ATTLIST OPTGROUP
  TITLE      %vdata;    #IMPLIED
  >

<!ELEMENT OPTION (%text; | ONEVENT)*>

<!ATTLIST OPTION
  VALUE      %vdata;    #IMPLIED
  TITLE      %vdata;    #IMPLIED
  ONCLICK    %URL;      #IMPLIED
  >

<!ELEMENT INPUT EMPTY>

<!ATTLIST INPUT
  KEY        NMTOKEN           #REQUIRED
  TYPE       (TEXT|PASSWORD)   "TEXT"
  VALUE      %vdata;           #IMPLIED
  DEFAULT    %vdata;           #IMPLIED
  FORMAT     CDATA             #IMPLIED
  EMPTYOK    %boolean;         "FALSE"
  SIZE       %number;          #IMPLIED
  MAXLENGTH  %number;          #IMPLIED
  TABINDEX   %number;          #IMPLIED
  TITLE      %vdata;           #IMPLIED
  >

<!ELEMENT FIELDSET (%fields;)* >

<!ATTLIST FIELDSET
  TITLE           %vdata;      #IMPLIED
  >

<!ELEMENT TIMER EMPTY>

<!ATTLIST TIMER
  KEY        NMTOKEN           #IMPLIED
  DEFAULT    %vdata;           #REQUIRED
  >

<!--================ Images ================-->

<!ENTITY % IAlign "(TOP|MIDDLE|BOTTOM)" >

<!ELEMENT IMG EMPTY>

<!ATTLIST IMG
  ALT        %vdata;      #IMPLIED
  SRC        %URL;        #IMPLIED
  LOCALSRC   %vdata;      #IMPLIED
  VSPACE     %length;     "0"
  HSPACE     %length;     "0"
  ALIGN      %IAlign;     "BOTTOM"
  HEIGHT     %length;     #IMPLIED
  WIDTH      %length;     #IMPLIED
  >

<!--================ Anchor ================-->

<!ELEMENT A ( %inline; | GO | PREV | REFRESH )*>

<!ATTLIST A
  TITLE        %vdata;      #IMPLIED
  >

<!--================ Text layout and line breaks ================-->

<!-- Text alignment attributes -->

<!ENTITY % TAlign   "(LEFT|RIGHT|CENTER)" >

<!ELEMENT TAB EMPTY>

<!ATTLIST TAB
  ALIGN   %TAlign;   "LEFT"
  >

<!ELEMENT EM     (%flow;)*>

<!ELEMENT STRONG (%flow;)*>

<!ELEMENT B      (%flow;)*>

<!ELEMENT I      (%flow;)*>

<!ELEMENT U      (%flow;)*>

<!ELEMENT BIG    (%flow;)*>

<!ELEMENT SMALL  (%flow;)*>

<!ENTITY % BRMode    "(WRAP|NOWRAP)" >

<!ELEMENT BR EMPTY>

<!ATTLIST BR
  ALIGN   %TAlign;   "LEFT"
  MODE    %BRMode;   #IMPLIED
  >

<!ENTITY quot  "&#34;">     <!-- quotation mark -->
<!ENTITY amp   "&#38;#38;"> <!-- ampersand -->
<!ENTITY apos  "&#39;">     <!-- apostrophe -->
<!ENTITY lt    "&#38;#60;"> <!-- less than -->
<!ENTITY gt    "&#62;">     <!-- greater than -->
<!ENTITY nbsp  "&#160;">    <!-- non-breaking space -->
<!ENTITY shy   "&#173;">    <!-- soft hyphen (discretionary hyphen) -->


