<!--

Wireless Markup Language (WML) Document Type Definition.

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>

-->



<!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) -->

