WML DTD

From http://www.w3schools.com (Copyright Refsnes Data)

# The WML DTD

## The Complete WML DTD:

    <!--
    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.1//EN"
              "http://www.wapforum.org/DTD/wml_1.1.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 % HREF    "%vdata;">
      <!-- URI, 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 % coreattrs  "id    ID     #IMPLIED
                           class CDATA  #IMPLIED">

    <!ENTITY % emph
     "em | strong | b | i | u | big | small">
    <!ENTITY % layout  "br">

    <!ENTITY % text     "#PCDATA | %emph;">

    <!-- flow covers "card-level" elements,
     such as text and images -->
    <!ENTITY % flow
     "%text; | %layout; | img | anchor | a | table">

    <!-- 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
      %coreattrs;
      >

    <!-- card intrinsic events -->
    <!ENTITY % cardev
     "onenterforward  %HREF;          #IMPLIED
      onenterbackward %HREF;          #IMPLIED
      ontimer         %HREF;          #IMPLIED"
      >

    <!-- card field types -->
    <!ENTITY % fields
     "%flow; | input | select | fieldset">

    <!ELEMENT card (onevent*, timer?, (do | p)*)>
    <!ATTLIST card
      title           %vdata;       #IMPLIED
      newcontext      %boolean;     "false"
      ordered         %boolean;     "true"
      xml:lang        NMTOKEN       #IMPLIED
      %cardev;
      %coreattrs;
      >

    <!--============= Event Bindings =============-->

    <!ELEMENT do (%task;)>
    <!ATTLIST do
      type         CDATA       #REQUIRED
      label        %vdata;     #IMPLIED
      name         NMTOKEN     #IMPLIED
      optional     %boolean;   "false"
      xml:lang     NMTOKEN     #IMPLIED
      %coreattrs;
      >

    <!ELEMENT onevent (%task;)>
    <!ATTLIST onevent
      type         CDATA       #REQUIRED
      %coreattrs;
      >

    <!--======== Deck-level declarations ========-->

    <!ELEMENT head ( access | meta )+>
    <!ATTLIST head
      %coreattrs;
      >

    <!ELEMENT template (%navelmts;)*>
    <!ATTLIST template
      %cardev;
      %coreattrs;
      >

    <!ELEMENT access EMPTY>
    <!ATTLIST access
      domain       CDATA       #IMPLIED
      path         CDATA       #IMPLIED
      %coreattrs;
      >

    <!ELEMENT meta EMPTY>
    <!ATTLIST meta
      http-equiv     CDATA      #IMPLIED
      name           CDATA      #IMPLIED
      forua          %boolean;  #IMPLIED
      content        CDATA      #REQUIRED
      scheme         CDATA      #IMPLIED
      %coreattrs;
      >

    <!--================ Tasks ================-->

    <!ELEMENT go (postfield | setvar)*>
    <!ATTLIST go
      href            %HREF;           #REQUIRED
      sendreferer     %boolean;       "false"
      method          (post|get)      "get"
      accept-charset  CDATA           #IMPLIED
      %coreattrs;
      >

    <!ELEMENT prev (setvar)*>
    <!ATTLIST prev
      %coreattrs;
      >

    <!ELEMENT refresh (setvar)*>
    <!ATTLIST refresh
      %coreattrs;
      >

    <!ELEMENT noop EMPTY>
    <!ATTLIST noop
      %coreattrs;
      >

    <!--============= postfield =============-->

    <!ELEMENT postfield EMPTY>
    <!ATTLIST postfield
      name         %vdata;           #REQUIRED
      value        %vdata;           #REQUIRED
      %coreattrs;
      >

    <!--============= variables =============-->

    <!ELEMENT setvar EMPTY>
    <!ATTLIST setvar
      name         %vdata;           #REQUIRED
      value        %vdata;           #REQUIRED
      %coreattrs;
      >

    <!--============= Card Fields =============-->

    <!ELEMENT select (optgroup|option)+>
    <!ATTLIST select
      title        %vdata;           #IMPLIED
      name         NMTOKEN           #IMPLIED
      value        %vdata;           #IMPLIED
      iname        NMTOKEN           #IMPLIED
      ivalue       %vdata;           #IMPLIED
      multiple     %boolean;         "false"
      tabindex     %number;          #IMPLIED
      xml:lang     NMTOKEN           #IMPLIED
      %coreattrs;
      >

    <!ELEMENT optgroup (optgroup|option)+ >
    <!ATTLIST optgroup
      title      %vdata;    #IMPLIED
      xml:lang   NMTOKEN    #IMPLIED
      %coreattrs;
      >

    <!ELEMENT option (#PCDATA | onevent)*>
    <!ATTLIST option
      value      %vdata;    #IMPLIED
      title      %vdata;    #IMPLIED
      onpick     %HREF;     #IMPLIED
      xml:lang   NMTOKEN    #IMPLIED
      %coreattrs;
      >

    <!ELEMENT input EMPTY>
    <!ATTLIST input
      name       NMTOKEN           #REQUIRED
      type       (text|password)   "text"
      value      %vdata;           #IMPLIED
      format     CDATA             #IMPLIED
      emptyok    %boolean;         "false"
      size       %number;          #IMPLIED
      maxlength  %number;          #IMPLIED
      tabindex   %number;          #IMPLIED
      title      %vdata;           #IMPLIED
      xml:lang   NMTOKEN           #IMPLIED
      %coreattrs;
      >

    <!ELEMENT fieldset (%fields; | do)* >
    <!ATTLIST fieldset
      title           %vdata;      #IMPLIED
      xml:lang        NMTOKEN      #IMPLIED
      %coreattrs;
      >

    <!ELEMENT timer EMPTY>
    <!ATTLIST timer
      name       NMTOKEN           #IMPLIED
      value      %vdata;           #REQUIRED
      %coreattrs;
      >

    <!--============= Images =============-->

    <!ENTITY % IAlign "(top|middle|bottom)" >

    <!ELEMENT img EMPTY>
    <!ATTLIST img
      alt        %vdata;      #REQUIRED
      src        %HREF;       #REQUIRED
      localsrc   %vdata;      #IMPLIED
      vspace     %length;     "0"
      hspace     %length;     "0"
      align      %IAlign;     "bottom"
      height     %length;     #IMPLIED
      width      %length;     #IMPLIED
      xml:lang   NMTOKEN      #IMPLIED
      %coreattrs;
      >

    <!--============= Anchor =============-->

    <!ELEMENT anchor
     ( #PCDATA | br | img | go | prev | refresh )*>
    <!ATTLIST anchor
      title        %vdata;      #IMPLIED
      xml:lang     NMTOKEN      #IMPLIED
      %coreattrs;
      >

    <!ELEMENT a ( #PCDATA | br | img )*>
    <!ATTLIST a
      href         %HREF;       #REQUIRED
      title        %vdata;      #IMPLIED
      xml:lang     NMTOKEN      #IMPLIED
      %coreattrs;
      >

    <!--============= Tables =============-->

    <!ELEMENT table (tr)+>
    <!ATTLIST table
      title       %vdata;    #IMPLIED
      align       CDATA      #IMPLIED
      columns     %number;   #REQUIRED
      xml:lang    NMTOKEN    #IMPLIED
      %coreattrs;
      >

    <!ELEMENT tr (td)+>
    <!ATTLIST tr
      %coreattrs;
      >

    <!ELEMENT td
     ( %text; | %layout; | img | anchor | a )*>
    <!ATTLIST td
      xml:lang        NMTOKEN       #IMPLIED
      %coreattrs;
      >

    <!--== Text layout and line breaks ==-->

    <!ELEMENT em     (%flow;)*>
    <!ATTLIST em
      xml:lang        NMTOKEN       #IMPLIED
      %coreattrs;
      >

    <!ELEMENT strong (%flow;)*>
    <!ATTLIST strong
      xml:lang        NMTOKEN       #IMPLIED
      %coreattrs;
      >

    <!ELEMENT b      (%flow;)*>
    <!ATTLIST b
      xml:lang        NMTOKEN       #IMPLIED
      %coreattrs;
      >

    <!ELEMENT i      (%flow;)*>
    <!ATTLIST i
      xml:lang        NMTOKEN       #IMPLIED
      %coreattrs;
      >

    <!ELEMENT u      (%flow;)*>
    <!ATTLIST u
      xml:lang        NMTOKEN       #IMPLIED
      %coreattrs;
      >

    <!ELEMENT big    (%flow;)*>
    <!ATTLIST big
      xml:lang        NMTOKEN       #IMPLIED
      %coreattrs;
      >

    <!ELEMENT small  (%flow;)*>
    <!ATTLIST small
      xml:lang        NMTOKEN       #IMPLIED
      %coreattrs;
      >

    <!ENTITY % TAlign "(left|right|center)">
    <!ENTITY % WrapMode "(wrap|nowrap)" >
    <!ELEMENT p (%fields; | do)*>
    <!ATTLIST p
      align       %TAlign;     "left"
      mode        %WrapMode;   #IMPLIED
      xml:lang    NMTOKEN      #IMPLIED
      %coreattrs;
      >

    <!ELEMENT br EMPTY>
    <!ATTLIST br
      xml:lang        NMTOKEN       #IMPLIED
      %coreattrs;
      >

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

    <!--
    Copyright Wireless Application Protocol
    Forum Ltd., 1998,1999.
                          All rights reserved.
    -->

From http://www.w3schools.com (Copyright Refsnes Data)