WML DTD

完整的 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.
-->