<HDML VERSION=version_num
    TTL=cach_time
    MARKABLE=boolean
    PUBLIC=boolean
    ACCESSDOMAIN=domain
    ACCESSPATH=path>

    actions
    cards

</HDML>

The HDML tag defines a deck. Decks are used to transport and cache sets of HDML cards. A deck is the smallest unit of HDML a service can transmit to the UP.Link, and the only HDML unit for which you can specify a Time To Live (TTL)-the period during which the phone caches the deck.

You can also use a deck to group cards for which you want to set the same bookmarking and access settings.

To define a deck, you use an <HDML> statement. The statement must include one or more statements defining display, choice, or entry cards. It can also specify options and actions that apply to the entire deck.

Syntax

VERSION=version_num   The version of the HDML language used for the deck. The syntax is maj.min.lex, where maj is the major version, min is the minor version, and lex is the lexical version. The lexical version number is optional. Valid version numbers are 0.1 and 2.0. The current version, documented in this manual, is 2.0. You must specify a version number. If you do not, the HDML compiler generates an error message.  
TTL=cache_time   The number of seconds the UP.Phone should cache the deck after it receives it. If you do not specify a value, the UP.Phone caches the deck for 30 days. If cache_time is 0, the UP.Phone does not cache the deck at all.  
MARKABLE=boolean   Flag specifying whether the cards in the deck can be marked. To allow the cards to be marked, specify TRUE. The default value is FALSE. If you set the MARKABLE option to TRUE, it implicitly sets the PUBLIC option to TRUE, allowing other URLs to link directly to cards within the deck. If the statement for a card within the deck specifies the MARKABLE option, it overrides the deck's MARKABLE option.  
PUBLIC=boolean   Specifies whether deck access control is enabled. If you specify TRUE, any deck can link to cards within the deck. If you specify FALSE, only decks that have domains and paths specified by the ACCESSDOMAIN and ACCESSPATH options can link to cards within the deck. The default is FALSE.  
ACCESSDOMAIN=domain   Specifies the domain of URLs that are allowed to request cards in the deck if PUBLIC is set to FALSE. The default value is the current deck's domain. For a detailed explanation and examples of how the ACCESSPATH and ACCESSDOMAIN options work together, see the UP.SDK Developer's Guide.  
ACCESSPATH=path   Specifies the base path of URLs that are allowed to request cards within the deck when PUBLIC is set to FALSE. The default value is / (the root of the current deck's path); this means that any deck with the domain specified by ACESSDOMAIN can request the deck. For a detailed explanation and examples of how the ACCESSPATH and ACCESSDOMAIN options work together, see the UP.SDK Developer's Guide.  
actions   Actions that apply to the entire deck.  
cards   One or more cards. A deck must contain at least one card. For more information on defining cards see <CHOICE> and <DISPLAY>.  

The UP.Link cannot transmit compiled HDML decks or digests larger then 1492 bytes to UP.Phones. If you send a deck larger than 1492 bytes to the UP.Link, the UP.Link generates an error. Because compiling a deck can increase or decrease its size slightly, uncompiled decks slightly smaller than 1492 bytes may also fail. To be safe, you should attempt to keep all uncompiled decks smaller than 1200 bytes.

Destinations (DEST=)

A destination identifies the deck or card to display when you specify an action. You can identify a deck with a full, partial, or relative path. You identify a card with its name.

Syntax

HDML 2.0 uses the same destination syntax as conventional URLs (as specified in RFC 1808 and RFC 1738).

The 2.0 UP.Browser understands both HTTP and HTTPS addressing schemes (and the httpurl syntax specified in RFC 1738). If no scheme is specified, the UP.Browser assumes the HTTP addressing scheme.

The following symbols still have special meanings when you use them in a path.

Symbol   Meaning  
?   The URL of the current deck, but with no arguments  
?arg1=value arg2=value...   The URL of the current deck with the specified arguments  

The UP.Phone converts all relative URLs to absolute URLs before transmitting them to the UP.Link.