<?xml encoding="UTF-8"?>

<!-- 
WIG WML Version 4
Document Type Definition (DTD)
SmartTrust Delivery Platform 

Typical WIG WML document:

   <?xml version="1.0" encoding="ISO-8859-1" ?>
   <!DOCTYPE wml PUBLIC "-//SmartTrust//DTD WIG-WML 4.1//EN"
     "http://www.smarttrust.com/DTD/WIG-WML4.1.dtd">  
  <wml>
  ...
  </wml>
-->

<!ENTITY % type.vdata "CDATA">
<!ENTITY % type.sdata "CDATA">
<!ENTITY % type.href "CDATA">
<!ENTITY % type.varName "CDATA">
<!ENTITY % type.boolean "NMTOKEN">
<!ENTITY % type.enterwait "true|false|mode-dependent">
<!ENTITY % type.dialstring "CDATA">
<!ENTITY % type.unsignedByte "CDATA">
<!ENTITY % type.recordNum "CDATA">
<!ENTITY % type.index "CDATA">
<!ENTITY % type.hexBinary "NMTOKEN">
<!ENTITY % type.hexBinaryIVR "CDATA">
<!ENTITY % type.duration "CDATA">
<!ENTITY % att.addrFormatSpec "
  wibenc (UCS2|SMS-DEFAULT|GSMDefault|ADN) #IMPLIED">
<!ENTITY % dataenc "hex-binary|base64-binary|text">
<!ENTITY % icon "
  iconid %type.recordNum; #IMPLIED
  iconusage (replace|adjacent) #IMPLIED">

<!ELEMENT wml (card|wigplugin|head|bytecode)+>
<!ATTLIST wml
  wibletenc (UCS2|SMS-DEFAULT|GSMDefault) #IMPLIED
  clearonentry %type.boolean; #IMPLIED>

<!ELEMENT head (meta)*>

<!ELEMENT meta EMPTY>
<!ATTLIST meta
  name ID #REQUIRED
  content CDATA #REQUIRED>

<!ELEMENT card (p|go|do|noop|plugin|providelocalinfo|playtone
                |setupidlemodetext|refresh|setupcall|getbrowserinfo
                |getbuffersize|setreturntarvalue|sendussd|sendsm
                |conditionaljump|launchbrowser|checkterminalprofile
                |substring|add|sub|convert|groupvar|ungroupvar
                |swapnibbles|transcode|timer|bytecode)*>
<!ATTLIST card
  id ID #IMPLIED
  newcontext %type.boolean; #IMPLIED
  clear (none|local|global|all) #IMPLIED>

<!ELEMENT p (#PCDATA|br|input|select|setvar|do|go|noop|plugin
             |providelocalinfo|playtone|setupidlemodetext|refresh
             |setupcall|getbrowserinfo|getbuffersize|setreturntarvalue
             |sendussd|sendsm|conditionaljump|launchbrowser
             |checkterminalprofile|substring|add|sub|convert|groupvar
             |ungroupvar|swapnibbles|transcode|timer|bytecode)*>
<!ATTLIST p
  %icon;
  class (user|delay) #IMPLIED
  priority (normal|high) #IMPLIED
  continue %type.boolean; #IMPLIED>

<!ELEMENT br EMPTY>

<!ELEMENT setvar EMPTY>
<!ATTLIST setvar
  name %type.varName; #REQUIRED
  value %type.vdata; #REQUIRED
  class (UCS2|SMS-DEFAULT|GSMDefault|binary|Binary|base64-binary
         |Binary.base64.binary|hex-binary|Binary.hex.binary) #IMPLIED>

<!ELEMENT input EMPTY>
<!ATTLIST input
  name %type.varName; #REQUIRED
  type (text|password) #IMPLIED
  value %type.vdata; #IMPLIED
  format CDATA #IMPLIED
  emptyok %type.boolean; #IMPLIED
  maxlength %type.unsignedByte; #IMPLIED
  minlength %type.unsignedByte; #IMPLIED
  class (UCS2|SMS-DEFAULT|GSMDefault) #IMPLIED
  title %type.vdata; #IMPLIED
  %icon;>

<!ELEMENT select (option)+>
<!ATTLIST select
  title %type.vdata; #IMPLIED
  name %type.varName; #IMPLIED
  iname %type.varName; #IMPLIED
  class (UCS2|SMS-DEFAULT|GSMDefault) #IMPLIED
  %icon;>

<!ELEMENT option (#PCDATA)*>
<!ATTLIST option
  value %type.vdata; #IMPLIED
  onpick %type.href; #IMPLIED
  %icon;>

<!ELEMENT do (go|noop)*>
<!ATTLIST do
  type (accept) #IMPLIED>

<!ELEMENT go (postfield|progressinfo|bookmarkinfo)*>
<!ATTLIST go
  href %type.href; #REQUIRED
  method (post|get) #IMPLIED
  enterwait (%type.enterwait;) #IMPLIED>

<!ELEMENT postfield EMPTY>
<!ATTLIST postfield
  name %type.sdata; #REQUIRED
  value %type.vdata; #REQUIRED>

<!ELEMENT progressinfo (#PCDATA)>
<!ATTLIST progressinfo
  type (receiving|sending|intermediate) #REQUIRED
  onempty (fallback|none|suppress) #IMPLIED
  %icon;>

<!ELEMENT bookmarkinfo (#PCDATA)>
<!ATTLIST bookmarkinfo
  %icon;>

<!ELEMENT noop EMPTY>

<!ELEMENT plugin EMPTY>
<!ATTLIST plugin
  name %type.sdata; #REQUIRED
  params %type.vdata; #REQUIRED
  destvar %type.varName; #REQUIRED
  class %type.varName; #IMPLIED>

<!ELEMENT providelocalinfo EMPTY>
<!ATTLIST providelocalinfo
  cmdqualifier CDATA #REQUIRED
  destvar %type.varName; #REQUIRED>

<!ELEMENT playtone EMPTY>
<!ATTLIST playtone
  toneid CDATA #REQUIRED
  duration %type.duration; #REQUIRED
  title %type.vdata; #IMPLIED
  %icon;>

<!ELEMENT setupidlemodetext (#PCDATA)>
<!ATTLIST setupidlemodetext
  %icon;>

<!ENTITY % attlist.refresh "file*">

<!ELEMENT refresh (%attlist.refresh;)>
<!ATTLIST refresh
  cmdqualifier CDATA #IMPLIED>

<!ELEMENT file (#PCDATA)>

<!ELEMENT setupinfo (#PCDATA)>
<!ATTLIST setupinfo
  %icon;>

<!ELEMENT confirminfo (#PCDATA)>
<!ATTLIST confirminfo
  %icon;>

<!ELEMENT setupcall (destaddress,setupinfo?,confirminfo?)>
<!ATTLIST setupcall
  cmdqualifier CDATA #IMPLIED
  duration %type.duration; #IMPLIED
  capability %type.sdata; #IMPLIED>

<!ELEMENT getbrowserinfo EMPTY>
<!ATTLIST getbrowserinfo
  destvar %type.varName; #REQUIRED>

<!ELEMENT getbuffersize EMPTY>
<!ATTLIST getbuffersize
  destvar %type.varName; #REQUIRED>

<!ELEMENT setreturntarvalue EMPTY>
<!ATTLIST setreturntarvalue
  recordid %type.recordNum; #REQUIRED>

<!ELEMENT sendussd EMPTY>
<!ATTLIST sendussd
  ussd %type.vdata; #REQUIRED
  destvar %type.varName; #IMPLIED
  title %type.vdata; #IMPLIED
  %icon;>

<!ELEMENT sendsm (destaddress,userdata,servicecentreaddress?)>
<!ATTLIST sendsm
  pid %type.unsignedByte; #IMPLIED
  title %type.vdata; #IMPLIED
  %icon;>

<!ELEMENT servicecentreaddress EMPTY>
<!ATTLIST servicecentreaddress
  %att.addrFormatSpec;
  value %type.dialstring; #REQUIRED>

<!ELEMENT destaddress EMPTY>
<!ATTLIST destaddress
  %att.addrFormatSpec;
  value %type.dialstring; #REQUIRED>

<!ELEMENT userdata (#PCDATA)>
<!ATTLIST userdata
  dcs CDATA #IMPLIED
  smtextenc (UCS2|SMS-DEFAULT|GSMDefault) #IMPLIED
  docudenc (%dataenc;) #IMPLIED
  udh %type.hexBinaryIVR; #IMPLIED>

<!ELEMENT conditionaljump (test)+>
<!ATTLIST conditionaljump
  compare %type.vdata; #REQUIRED
  class (UCS2|SMS-DEFAULT|GSMDefault|binary|Binary) #IMPLIED>

<!ELEMENT test EMPTY>
<!ATTLIST test
  href %type.href; #REQUIRED
  value %type.vdata; #REQUIRED>

<!ELEMENT launchbrowser (bearer)*>
<!ATTLIST launchbrowser
  url %type.href; #IMPLIED
  cmdqualifier CDATA #IMPLIED
  provfileref %type.vdata; #IMPLIED
  browserid CDATA #IMPLIED
  title %type.vdata; #IMPLIED
  gatewayid %type.vdata; #IMPLIED
  %icon;>

<!ELEMENT bearer (#PCDATA)>

<!ELEMENT checkterminalprofile (check)+>
<!ATTLIST checkterminalprofile
  text %type.vdata; #IMPLIED>

<!ELEMENT check (#PCDATA)>
<!ATTLIST check
  bitmask %type.unsignedByte; #IMPLIED
  index %type.index; #REQUIRED
  href %type.href; #IMPLIED>

<!ELEMENT substring EMPTY>
<!ATTLIST substring
  srcvar %type.varName; #REQUIRED
  destvar %type.varName; #REQUIRED
  start CDATA #IMPLIED
  span CDATA #IMPLIED>

<!ELEMENT add EMPTY>
<!ATTLIST add
  srcvar %type.varName; #IMPLIED
  destvar %type.varName; #REQUIRED>

<!ELEMENT sub EMPTY>
<!ATTLIST sub
  srcvar %type.varName; #IMPLIED
  destvar %type.varName; #REQUIRED>

<!ELEMENT convert EMPTY>
<!ATTLIST convert
  srcvar %type.varName; #REQUIRED
  destvar %type.varName; #REQUIRED
  type (bin-to-decimal-groups|bin-to-hexbin|bin-to-int|bcd-to-sms
        |sms-to-bcd) #REQUIRED
  details (ext-type-1|ignore-ext|ext-type-2) #IMPLIED>

<!ENTITY % varlist "var+">

<!ELEMENT groupvar (%varlist;)>
<!ATTLIST groupvar
  destvar %type.varName; #REQUIRED>

<!ELEMENT var EMPTY>
<!ATTLIST var
  name %type.varName; #REQUIRED>

<!ELEMENT ungroupvar (%varlist;)>
<!ATTLIST ungroupvar
  srcvar %type.varName; #REQUIRED>

<!ELEMENT swapnibbles EMPTY>
<!ATTLIST swapnibbles
  destvar %type.varName; #REQUIRED>

<!ELEMENT transcode EMPTY>
<!ATTLIST transcode
  dir (sms-to-ucs2|ucs2-to-sms) #REQUIRED
  srcvar %type.varName; #REQUIRED
  destvar %type.varName; #REQUIRED>

<!ELEMENT timer EMPTY>
<!ATTLIST timer
  var %type.varName; #REQUIRED
  operation (start|deactivate|get) #REQUIRED
  href %type.href; #REQUIRED>

<!ELEMENT bytecode (#PCDATA)>
<!ATTLIST bytecode
  docenc (%dataenc;) #IMPLIED>

<!ELEMENT wigplugin (param)*>
<!ATTLIST wigplugin
  name %type.sdata; #REQUIRED>

<!ELEMENT param EMPTY>
<!ATTLIST param
  name %type.sdata; #REQUIRED
  value %type.sdata; #REQUIRED>

