<?xml version="1.0" encoding="UTF-8"?>
<!--
#################################
WIG-WML example using this schema
#################################
<?xml version="1.0" encoding="UTF-8"?>

<wml xmlns="http://www.smarttrust.com/WIG-WML/5.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://www.smarttrust.com/WIG-WML/5.0
                         http://www.smarttrust.com/xsd/wigwml-5.0.xsd">
	<card>
		<p>
			Hello World!
		</p>
	</card>
</wml>

-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
 targetNamespace="http://www.smarttrust.com/WIG-WML/5.0"
 xmlns="http://www.smarttrust.com/WIG-WML/5.0">
  <!-- Data with variable references -->
  <xs:simpleType name="type.vdata">
    <xs:restriction base="xs:string"/>
  </xs:simpleType>
  <!-- Data without variable references -->
  <xs:simpleType name="type.sdata">
    <xs:restriction base="xs:string"/>
  </xs:simpleType>
  <!-- href is an attribute containing an absolute URL or a card reference, may contain variable references at certain positions -->
  <xs:simpleType name="type.href">
    <xs:restriction base="xs:string">
      <xs:minLength value="1"/>
    </xs:restriction>
  </xs:simpleType>
  <!-- A variable name -->
  <xs:simpleType name="type.varName">
    <xs:restriction base="xs:string"/>
  </xs:simpleType>
  <!-- boolean -->
  <xs:simpleType name="type.boolean">
    <xs:restriction base="xs:boolean"/>
  </xs:simpleType>
  <!-- Transfer encoding attribute -->
  <xs:simpleType name="type.enterwait">
    <xs:restriction base="xs:token">
      <xs:enumeration value="true"/>
      <xs:enumeration value="false"/>
      <xs:enumeration value="mode-dependent"/>
	  <xs:enumeration value="false-block-resp"/>
    </xs:restriction>
  </xs:simpleType>
  <!-- A dialling number string -->
  <xs:simpleType name="type.dialstring">
    <xs:restriction base="xs:string"/>
  </xs:simpleType>
  <!-- An unsigned number in the range 0 to 255 -->
  <xs:simpleType name="type.unsignedByte">
    <xs:restriction base="xs:unsignedByte"/>
  </xs:simpleType>
  <!-- An unsigned number in the range 1 to 254 -->
  <xs:simpleType name="type.recordNum">
    <xs:restriction base="xs:unsignedByte">
      <xs:minInclusive value="1"/>
      <xs:maxInclusive value="254"/>
    </xs:restriction>
  </xs:simpleType>
  <!-- An unsigned number in the range 1 to 255 -->
  <xs:simpleType name="type.index">
    <xs:restriction base="xs:unsignedByte">
      <xs:minInclusive value="1"/>
    </xs:restriction>
  </xs:simpleType>
  <!-- Hex-coded binary -->
  <xs:simpleType name="type.hexBinary">
    <xs:restriction base="xs:hexBinary"/>
  </xs:simpleType>
  <xs:simpleType name="type.hexBinaryIVR">
    <xs:restriction base="xs:string"/>
  </xs:simpleType>
  <!-- An floating point number -->
  <xs:simpleType name="type.duration">
    <xs:restriction base="xs:float">
      <xs:minInclusive value="0.1"/>
      <xs:maxInclusive value="15300.0"/>
    </xs:restriction>
  </xs:simpleType>
  <!-- Integer -->
  <xs:simpleType name="type.integer">
    <xs:restriction base="xs:integer"/>
  </xs:simpleType>  
  <!-- Address format specifier attribute -->
  <xs:attributeGroup name="att.addrFormatSpec">
    <xs:attribute name="wibenc">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="UCS2"/>
          <xs:enumeration value="SMS-DEFAULT"/>
          <xs:enumeration value="GSMDefault"/>
          <xs:enumeration value="ADN"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>
  <!-- Transfer encoding attribute -->
  <xs:simpleType name="dataenc">
    <xs:restriction base="xs:token">
      <xs:enumeration value="hex-binary"/>
      <xs:enumeration value="base64-binary"/>
      <xs:enumeration value="text"/>
    </xs:restriction>
  </xs:simpleType>
  <!-- Icon attributes -->
  <xs:attributeGroup name="icon">
    <xs:attribute name="iconid" type="type.recordNum"/>
    <xs:attribute name="iconusage">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="replace"/>
          <xs:enumeration value="adjacent"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>
  <!-- dcs -->
  <xs:simpleType name="type.dcs">
    <xs:restriction base="xs:token">
	   <xs:enumeration value="SMS-DEFAULT"/>
		  <xs:enumeration value="UCS2"/>
		  <xs:enumeration value="binary"/>
		</xs:restriction>
  </xs:simpleType>
  <!-- Location info-->
  <xs:simpleType name="type.locinfo">
    <xs:restriction base="xs:token">
      <xs:enumeration value="force"/>
      <xs:enumeration value="config"/>
    </xs:restriction>
  </xs:simpleType>
  <!-- Language info-->
  <xs:simpleType name="type.langinfo">
    <xs:restriction base="xs:token">
      <xs:enumeration value="force"/>
      <xs:enumeration value="config"/>
    </xs:restriction>
  </xs:simpleType>
  <!-- IMEI/IMEISV info-->
  <xs:simpleType name="type.imeiinfo">
    <xs:restriction base="xs:token">
      <xs:enumeration value="force"/>
      <xs:enumeration value="config"/>
    </xs:restriction>
  </xs:simpleType>
  <!-- ################## WIG WML ################### -->
  <xs:element name="wml">
    <xs:complexType>
      <xs:choice maxOccurs="unbounded">
        <xs:element ref="card"/>
        <xs:element ref="wigplugin"/>
        <xs:element ref="head"/>
        <xs:element ref="bytecode"/>
      </xs:choice>
      <xs:attributeGroup ref="attlist.wml"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.wml">
    <xs:attribute name="wibletenc">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="UCS2"/>
          <xs:enumeration value="SMS-DEFAULT"/>
          <xs:enumeration value="GSMDefault"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="clearonentry" type="type.boolean"/>
  </xs:attributeGroup>
  <xs:element name="head">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="meta"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="meta">
    <xs:complexType>
      <xs:attribute name="name" use="required" type="xs:ID"/>
      <xs:attribute name="content" use="required" type="xs:string"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="card">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="p"/>
        <xs:element ref="go"/>
        <xs:element ref="do"/>
        <xs:element ref="noop"/>
        <xs:element ref="plugin"/>
        <xs:element ref="providelocalinfo"/>
        <xs:element ref="playtone"/>
        <xs:element ref="setupidlemodetext"/>
        <xs:element ref="refresh"/>
        <xs:element ref="setupcall"/>
        <xs:element ref="getbrowserinfo"/>
        <xs:element ref="getbuffersize"/>
        <xs:element ref="setreturntarvalue"/>
        <xs:element ref="sendussd"/>
        <xs:element ref="sendsm"/>
        <xs:element ref="conditionaljump"/>
        <xs:element ref="launchbrowser"/>
        <xs:element ref="checkterminalprofile"/>
        <xs:element ref="substring"/>
        <xs:element ref="add"/>
        <xs:element ref="sub"/>
        <xs:element ref="convert"/>
        <xs:element ref="groupvar"/>
        <xs:element ref="ungroupvar"/>
        <xs:element ref="swapnibbles"/>
        <xs:element ref="transcode"/>
        <xs:element ref="timer"/>
        <xs:element ref="bytecode"/>
        <xs:element ref="createtlv"/>
        <xs:element ref="extracttlv"/>
        <xs:element ref="terminalprofile"/>
        <xs:element ref="geticcid"/>
        <xs:element ref="executewiblet"/>
        <xs:element ref="executestk"/>
        <xs:element ref="sendss"/>
        <xs:element ref="handleexit"/>
      </xs:choice>
      <xs:attributeGroup ref="attlist.card"/>
    </xs:complexType>
  	 <!-- xs:unique name="uniqueCard">
       <xs:selector xpath="*:self::card"/>
		 <xs:field xpath="@id"/>
	 </xs:unique-->
  </xs:element>
  <xs:attributeGroup name="attlist.card">
    <xs:attribute name="id" type="xs:ID"/>
    <xs:attribute name="newcontext" type="type.boolean"/>
    <xs:attribute name="clear">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="none"/>
          <xs:enumeration value="local"/>
          <xs:enumeration value="global"/>
          <xs:enumeration value="all"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:element name="p">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="br"/>
        <xs:element ref="input"/>
        <xs:element ref="select"/>
        <xs:element ref="setvar"/>
        <xs:element ref="do"/>
        <xs:element ref="go"/>
        <xs:element ref="noop"/>
        <xs:element ref="plugin"/>
        <xs:element ref="providelocalinfo"/>
        <xs:element ref="playtone"/>
        <xs:element ref="setupidlemodetext"/>
        <xs:element ref="refresh"/>
        <xs:element ref="setupcall"/>
        <xs:element ref="getbrowserinfo"/>
        <xs:element ref="getbuffersize"/>
        <xs:element ref="setreturntarvalue"/>
        <xs:element ref="sendussd"/>
        <xs:element ref="sendsm"/>
        <xs:element ref="conditionaljump"/>
        <xs:element ref="launchbrowser"/>
        <xs:element ref="checkterminalprofile"/>
        <xs:element ref="substring"/>
        <xs:element ref="add"/>
        <xs:element ref="sub"/>
        <xs:element ref="convert"/>
        <xs:element ref="groupvar"/>
        <xs:element ref="ungroupvar"/>
        <xs:element ref="swapnibbles"/>
        <xs:element ref="transcode"/>
        <xs:element ref="timer"/>
        <xs:element ref="bytecode"/>
        <xs:element ref="createtlv"/>
        <xs:element ref="extracttlv"/>
        <xs:element ref="terminalprofile"/>
        <xs:element ref="geticcid"/>
        <xs:element ref="executewiblet"/>
        <xs:element ref="executestk"/>
        <xs:element ref="sendss"/>
        <xs:element ref="handleexit"/>
      </xs:choice>
      <xs:attributeGroup ref="attlist.p"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.p">
    <xs:attributeGroup ref="icon"/>
    <xs:attribute name="class">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="user"/>
          <xs:enumeration value="delay"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="priority">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="normal"/>
          <xs:enumeration value="high"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="continue" type="type.boolean"/>
  </xs:attributeGroup>
  <xs:element name="br">
    <xs:complexType/>
  </xs:element>
  <xs:element name="setvar">
    <xs:complexType>
      <xs:attributeGroup ref="attlist.setvar"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.setvar">
    <xs:attribute name="name" use="required" type="type.varName"/>
    <xs:attribute name="value" use="required" type="type.vdata"/>
    <xs:attribute name="class">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="UCS2"/>
          <xs:enumeration value="SMS-DEFAULT"/>
          <xs:enumeration value="GSMDefault"/>
          <xs:enumeration value="binary"/>
          <xs:enumeration value="Binary"/>
          <xs:enumeration value="base64-binary"/>
          <xs:enumeration value="Binary.base64.binary"/>
          <xs:enumeration value="hex-binary"/>
          <xs:enumeration value="Binary.hex.binary"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:element name="input">
    <xs:complexType>
      <xs:attributeGroup ref="attlist.input"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.input">
    <xs:attribute name="name" use="required" type="type.varName"/>
    <xs:attribute name="type">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="text"/>
          <xs:enumeration value="password"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="value" type="type.vdata"/>
    <xs:attribute name="format">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="*N"/>
          <xs:enumeration value="*M"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="emptyok" type="type.boolean"/>
    <xs:attribute name="maxlength" type="type.unsignedByte"/>
    <xs:attribute name="minlength" type="type.unsignedByte"/>
    <xs:attribute name="class">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="UCS2"/>
          <xs:enumeration value="SMS-DEFAULT"/>
          <xs:enumeration value="GSMDefault"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="title" type="type.vdata"/>
    <xs:attributeGroup ref="icon"/>
  </xs:attributeGroup>
  <xs:element name="select">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="option" maxOccurs="unbounded"/>
        <xs:element ref="catcherror" minOccurs="0"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.select"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.select">
    <xs:attribute name="title" type="type.vdata"/>
    <xs:attribute name="name" type="type.varName"/>
    <xs:attribute name="iname" type="type.varName"/>
    <xs:attribute name="locinfo" type="type.locinfo"/>
    <xs:attribute name="langinfo" type="type.langinfo"/>
    <xs:attribute name="imeiinfo" type="type.imeiinfo"/>
    <xs:attribute name="class">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="UCS2"/>
          <xs:enumeration value="SMS-DEFAULT"/>
          <xs:enumeration value="GSMDefault"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attributeGroup ref="icon"/>
  </xs:attributeGroup>
  <xs:element name="option">
    <xs:complexType mixed="true">
      <xs:attributeGroup ref="attlist.option"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.option">
    <xs:attribute name="value" type="type.vdata"/>
    <xs:attribute name="onpick" type="type.href"/>
    <xs:attributeGroup ref="icon"/>
  </xs:attributeGroup>
  <xs:element name="do">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="go"/>
        <xs:element ref="noop"/>
      </xs:choice>
      <xs:attributeGroup ref="attlist.do"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.do">
    <xs:attribute name="type">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="accept"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:element name="go">
    <xs:complexType>
      <xs:sequence>
         <xs:choice minOccurs="0" maxOccurs="unbounded">
           <xs:element ref="postfield"/>
           <xs:element ref="progressinfo"/>
           <xs:element ref="bookmarkinfo"/>
         </xs:choice>
         <xs:element ref="catcherror" minOccurs="0"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.go"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.go">
    <xs:attribute name="href" use="required" type="type.href"/>
    <xs:attribute name="locinfo" type="type.locinfo"/>
    <xs:attribute name="langinfo" type="type.langinfo"/>
    <xs:attribute name="imeiinfo" type="type.imeiinfo"/>
    <xs:attribute name="method">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="post"/>
          <xs:enumeration value="get"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="enterwait" type="type.enterwait"/>
  </xs:attributeGroup>
  <xs:element name="postfield">
    <xs:complexType>
      <xs:attributeGroup ref="attlist.postfield"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.postfield">
    <xs:attribute name="name" use="required" type="type.sdata"/>
    <xs:attribute name="value" use="required" type="type.vdata"/>
  </xs:attributeGroup>
  <xs:element name="progressinfo">
    <xs:complexType mixed="true">
      <xs:attributeGroup ref="attlist.progressinfo"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.progressinfo">
    <xs:attribute name="type" use="required">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="receiving"/>
          <xs:enumeration value="sending"/>
          <xs:enumeration value="intermediate"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="onempty">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="fallback"/>
          <xs:enumeration value="none"/>
          <xs:enumeration value="suppress"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attributeGroup ref="icon"/>
  </xs:attributeGroup>
  <xs:element name="bookmarkinfo">
    <xs:complexType mixed="true">
      <xs:attributeGroup ref="attlist.bookmarkinfo"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.bookmarkinfo">
    <xs:attributeGroup ref="icon"/>
  </xs:attributeGroup>
  <xs:element name="noop">
    <xs:complexType/>
  </xs:element>
  <!-- ################################################## -->
  <!-- Here comes to old WML Script callable commands -->
  <!-- ################################################## -->
  <!-- ################# PLUGIN ##################### -->
  <xs:element name="plugin">
    <xs:complexType>
      <xs:attributeGroup ref="attlist.plugin"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.plugin">
    <xs:attribute name="name" use="required" type="type.sdata"/>
    <xs:attribute name="params" use="required" type="type.vdata"/>
    <xs:attribute name="destvar" use="required" type="type.varName"/>
    <xs:attribute name="class" type="type.varName"/>
  </xs:attributeGroup>
  <!-- ############# PROVIDE LOCAL INFO ############# -->
  <xs:element name="providelocalinfo">
    <xs:complexType>
      <xs:attributeGroup ref="attlist.providelocalinfo"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.providelocalinfo">
    <xs:attribute name="cmdqualifier" use="required">
      <xs:simpleType>
        <xs:union memberTypes="type.unsignedByte">
          <xs:simpleType>
            <xs:restriction base="xs:token">
              <xs:enumeration value="location"/>
              <xs:enumeration value="imei"/>
              <xs:enumeration value="dtz"/>
              <xs:enumeration value="nmr"/>
              <xs:enumeration value="language"/>
              <xs:enumeration value="timing"/>
              <!-- WIB 2.0 enums -->
              <xs:enumeration value="accesstech"/>
              <xs:enumeration value="esn"/>
              <xs:enumeration value="imeisv"/>
              <xs:enumeration value="searchmode"/>
              <xs:enumeration value="battery"/>
              <xs:enumeration value="meid"/>
              <xs:enumeration value="wsid"/>
            </xs:restriction>
          </xs:simpleType>		  
        </xs:union>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="destvar" use="required" type="type.varName"/>
  </xs:attributeGroup>
  <!-- ################## PLAY TONE *################ -->
  <xs:element name="playtone">
    <xs:complexType>
      <xs:attributeGroup ref="attlist.playtone"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.playtone">
    <xs:attribute name="toneid" use="required">
      <xs:simpleType>
        <xs:union memberTypes="type.unsignedByte">
          <xs:simpleType>
            <xs:restriction base="xs:token">
              <xs:enumeration value="dial"/>
            </xs:restriction>
          </xs:simpleType>
          <xs:simpleType>
            <xs:restriction base="xs:token">
              <xs:enumeration value="busy"/>
            </xs:restriction>
          </xs:simpleType>
          <xs:simpleType>
            <xs:restriction base="xs:token">
              <xs:enumeration value="congestion"/>
            </xs:restriction>
          </xs:simpleType>
          <xs:simpleType>
            <xs:restriction base="xs:token">
              <xs:enumeration value="radio-path-ack"/>
            </xs:restriction>
          </xs:simpleType>
          <xs:simpleType>
            <xs:restriction base="xs:token">
              <xs:enumeration value="radio-path-nack"/>
            </xs:restriction>
          </xs:simpleType>
          <xs:simpleType>
            <xs:restriction base="xs:token">
              <xs:enumeration value="error"/>
            </xs:restriction>
          </xs:simpleType>
          <xs:simpleType>
            <xs:restriction base="xs:token">
              <xs:enumeration value="waiting"/>
            </xs:restriction>
          </xs:simpleType>
          <xs:simpleType>
            <xs:restriction base="xs:token">
              <xs:enumeration value="ringing"/>
            </xs:restriction>
          </xs:simpleType>
          <xs:simpleType>
            <xs:restriction base="xs:token">
              <xs:enumeration value="general-beep"/>
            </xs:restriction>
          </xs:simpleType>
          <xs:simpleType>
            <xs:restriction base="xs:token">
              <xs:enumeration value="ack-tone"/>
            </xs:restriction>
          </xs:simpleType>
          <xs:simpleType>
            <xs:restriction base="xs:token">
              <xs:enumeration value="nack-tone"/>
            </xs:restriction>
          </xs:simpleType>
          <xs:simpleType>
            <xs:restriction base="xs:token">
              <xs:enumeration value="user-ringing"/>
            </xs:restriction>
          </xs:simpleType>
          <xs:simpleType>
            <xs:restriction base="xs:token">
              <xs:enumeration value="user-sms"/>
            </xs:restriction>
          </xs:simpleType>
          <xs:simpleType>
            <xs:restriction base="xs:token">
              <xs:enumeration value="critical-alert"/>
            </xs:restriction>
          </xs:simpleType>
          <xs:simpleType>
            <xs:restriction base="xs:token">
              <xs:enumeration value="vibrate-only"/>
            </xs:restriction>
          </xs:simpleType>
          <xs:simpleType>
            <xs:restriction base="xs:token">
              <xs:enumeration value="happy"/>
            </xs:restriction>
          </xs:simpleType>
          <xs:simpleType>
            <xs:restriction base="xs:token">
              <xs:enumeration value="sad"/>
            </xs:restriction>
          </xs:simpleType>
          <xs:simpleType>
            <xs:restriction base="xs:token">
              <xs:enumeration value="urgent-action"/>
            </xs:restriction>
          </xs:simpleType>
          <xs:simpleType>
            <xs:restriction base="xs:token">
              <xs:enumeration value="question"/>
            </xs:restriction>
          </xs:simpleType>
          <xs:simpleType>
            <xs:restriction base="xs:token">
              <xs:enumeration value="message-received"/>
            </xs:restriction>
          </xs:simpleType>
          <xs:simpleType>
            <xs:restriction base="xs:token">
              <xs:enumeration value="melody1"/>
            </xs:restriction>
          </xs:simpleType>
          <xs:simpleType>
            <xs:restriction base="xs:token">
              <xs:enumeration value="melody2"/>
            </xs:restriction>
          </xs:simpleType>
          <xs:simpleType>
            <xs:restriction base="xs:token">
              <xs:enumeration value="melody3"/>
            </xs:restriction>
          </xs:simpleType>
          <xs:simpleType>
            <xs:restriction base="xs:token">
              <xs:enumeration value="melody4"/>
            </xs:restriction>
          </xs:simpleType>
          <xs:simpleType>
            <xs:restriction base="xs:token">
              <xs:enumeration value="melody5"/>
            </xs:restriction>
          </xs:simpleType>
          <xs:simpleType>
            <xs:restriction base="xs:token">
              <xs:enumeration value="melody6"/>
            </xs:restriction>
          </xs:simpleType>
          <xs:simpleType>
            <xs:restriction base="xs:token">
              <xs:enumeration value="melody7"/>
            </xs:restriction>
          </xs:simpleType>
          <xs:simpleType>
            <xs:restriction base="xs:token">
              <xs:enumeration value="melody8"/>
            </xs:restriction>
          </xs:simpleType>          
        </xs:union>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="duration" use="required" type="type.duration"/>
    <xs:attribute name="title" type="type.vdata"/>
    <xs:attributeGroup ref="icon"/>
  </xs:attributeGroup>
  <!-- ########### SET UP IDLE MODE TEXT ############ -->
  <xs:element name="setupidlemodetext">
    <xs:complexType mixed="true">
      <xs:attributeGroup ref="attlist.setupidlemodetext"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.setupidlemodetext">
    <xs:attributeGroup ref="icon"/>
  </xs:attributeGroup>
  <!-- ################## REFRESH ################### -->
  <xs:element name="refresh" type="attlist.refresh"/>
  <xs:complexType name="attlist.refresh">
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:element ref="file"/>
      <xs:element ref="network"/>
    </xs:choice>
    <xs:attribute name="cmdqualifier">
      <xs:simpleType>
        <xs:union memberTypes="type.unsignedByte">
          <xs:simpleType>
            <xs:restriction base="xs:token">
              <xs:enumeration value="sim-init-full-file-change"/>
              <xs:enumeration value="file-change"/>
              <xs:enumeration value="sim-init-file-change"/>
              <xs:enumeration value="sim-init"/>
              <xs:enumeration value="sim-reset"/>
              <!-- WIB 2.0 -->
              <xs:enumeration value="roaming"/>
            </xs:restriction>
          </xs:simpleType>
        </xs:union>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>
  <xs:element name="file" type="type.hexBinary"/>
  <xs:element name="network">
    <xs:complexType>
      <xs:attributeGroup ref="attlist.network"/>
    </xs:complexType>
  </xs:element>
  <xs:simpleType name="enums.technology">
    <xs:restriction base="xs:token">
      <xs:enumeration value="gsm"/>
      <xs:enumeration value="gsm-compact"/>
      <xs:enumeration value="utran"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="technology.list">
   <xs:list itemType="enums.technology"/>
  </xs:simpleType>
  <xs:simpleType name="type.technology">
    <xs:union memberTypes="type.hexBinary technology.list"/>
  </xs:simpleType>
  <xs:attributeGroup name="attlist.network">
    <xs:attribute name="mcc" use="required" type="type.integer"/>
    <xs:attribute name="mnc" use="required" type="type.integer"/>
    <xs:attribute name="technology" use="required" type="type.technology"/>
  </xs:attributeGroup>
  <!-- ################ SET UP CALL ################# -->
  <xs:element name="setupcall">
    <xs:complexType>
      <xs:sequence>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element ref="destaddress"/>
          <xs:element ref="setupinfo"/>
          <xs:element ref="confirminfo"/>
        </xs:choice>
        <xs:element ref="catcherror" minOccurs="0"/>		  
      </xs:sequence>
      <xs:attributeGroup ref="attlist.setupcall"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="setupinfo">
    <xs:complexType mixed="true">
      <xs:attributeGroup ref="icon"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="confirminfo">
    <xs:complexType mixed="true">
      <xs:attributeGroup ref="icon"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.setupcall">
    <xs:attribute name="cmdqualifier">
      <xs:simpleType>
        <xs:union memberTypes="type.unsignedByte">
          <xs:simpleType>
            <xs:restriction base="xs:token">
              <xs:enumeration value="if-not-busy"/>
            </xs:restriction>
          </xs:simpleType>
          <xs:simpleType>
            <xs:restriction base="xs:token">
              <xs:enumeration value="if-not-busy-with-redial"/>
            </xs:restriction>
          </xs:simpleType>
          <xs:simpleType>
            <xs:restriction base="xs:token">
              <xs:enumeration value="put-on-hold"/>
            </xs:restriction>
          </xs:simpleType>
          <xs:simpleType>
            <xs:restriction base="xs:token">
              <xs:enumeration value="put-on-hold-with-redial"/>
            </xs:restriction>
          </xs:simpleType>
          <xs:simpleType>
            <xs:restriction base="xs:token">
              <xs:enumeration value="disconnect-other"/>
            </xs:restriction>
          </xs:simpleType>
          <xs:simpleType>
            <xs:restriction base="xs:token">
              <xs:enumeration value="disconnect-other-with-redial"/>
            </xs:restriction>
          </xs:simpleType>
        </xs:union>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="duration" type="type.duration"/>
    <xs:attribute name="capability" type="type.sdata"/>
  </xs:attributeGroup>
  <!-- ##### ASSIGN VERSION INFO TO VARIABLE ######## -->
  <xs:element name="getbrowserinfo">
    <xs:complexType>
      <xs:attributeGroup ref="attlist.getbrowserinfo"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.getbrowserinfo">
    <xs:attribute name="destvar" use="required" type="type.varName"/>
  </xs:attributeGroup>
  <!-- # ASSIGN WIB RECEIVE BUFFER SIZE TO VARIABLE # -->
  <xs:element name="getbuffersize">
    <xs:complexType>
      <xs:attributeGroup ref="attlist.getbuffersize"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.getbuffersize">
    <xs:attribute name="destvar" use="required" type="type.varName"/>
  </xs:attributeGroup>
  <!-- ########### SET RETURN TAR VALUE ############# -->
  <xs:element name="setreturntarvalue">
    <xs:complexType>
      <xs:attributeGroup ref="attlist.setreturntarvalue"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.setreturntarvalue">
    <xs:attribute name="recordid" use="required" type="type.recordNum"/>
  </xs:attributeGroup>
  <!-- ################# SEND USSD ################## -->
  <xs:element name="sendussd">
    <xs:complexType>
		<xs:sequence>
		  <xs:element ref="catcherror" minOccurs="0"/>
		</xs:sequence>
      <xs:attributeGroup ref="attlist.sendussd"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.sendussd">
    <xs:attribute name="ussd" use="required" type="type.vdata"/>
    <xs:attribute name="destvar" type="type.varName"/>
    <xs:attribute name="title" type="type.vdata"/>
    <xs:attribute name="class" type="type.dcs"/>
    <xs:attribute name="dcs">
     <xs:simpleType>
       <xs:union memberTypes="type.unsignedByte type.dcs"/>
     </xs:simpleType>
	 </xs:attribute>
  <xs:attributeGroup ref="icon"/>
  </xs:attributeGroup>
  <!-- ################# SEND SM #################### -->
  <xs:element name="sendsm">
    <xs:complexType>
      <xs:sequence>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element ref="destaddress"/>
          <xs:element ref="userdata"/>
          <xs:element ref="servicecentreaddress"/>
        </xs:choice>
        <xs:element ref="catcherror" minOccurs="0"/>	  
      </xs:sequence>
      <xs:attributeGroup ref="attlist.sendsm"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="servicecentreaddress">
    <xs:complexType>
      <xs:attributeGroup ref="att.addrFormatSpec"/>
      <xs:attribute name="value" use="required" type="type.dialstring"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="destaddress">
    <xs:complexType>
      <xs:attributeGroup ref="att.addrFormatSpec"/>
      <xs:attribute name="value" use="required" type="type.dialstring"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="userdata">
    <xs:complexType mixed="true">
      <xs:attribute name="dcs">
        <xs:simpleType>
          <xs:union memberTypes="type.unsignedByte">
            <xs:simpleType>
              <xs:restriction base="xs:token">
                <xs:enumeration value="UCS2"/>
              </xs:restriction>
            </xs:simpleType>
            <xs:simpleType>
              <xs:restriction base="xs:token">
                <xs:enumeration value="SMS-DEFAULT"/>
              </xs:restriction>
            </xs:simpleType>
            <xs:simpleType>
              <xs:restriction base="xs:token">
                <xs:enumeration value="GSMDefault"/>
              </xs:restriction>
            </xs:simpleType>
            <xs:simpleType>
              <xs:restriction base="xs:token">
                <xs:enumeration value="SMS-DEFAULT-FLASH"/>
              </xs:restriction>
            </xs:simpleType>
            <xs:simpleType>
              <xs:restriction base="xs:token">
                <xs:enumeration value="UCS2-FLASH"/>
              </xs:restriction>
            </xs:simpleType>
          </xs:union>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="smtextenc">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="UCS2"/>
            <xs:enumeration value="SMS-DEFAULT"/>
            <xs:enumeration value="GSMDefault"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="docudenc" type="dataenc"/>
      <xs:attribute name="udh" type="type.hexBinaryIVR"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.sendsm">
    <xs:attribute name="pid" type="type.unsignedByte"/>
    <xs:attribute name="title" type="type.vdata"/>
    <xs:attributeGroup ref="icon"/>
  </xs:attributeGroup>
  <!-- ############### CONDITIONAL JUMP ############# -->
  <xs:element name="conditionaljump">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="test" maxOccurs="unbounded"/>
        <xs:element ref="catcherror" minOccurs="0"/>
      </xs:sequence>
      <xs:attribute name="compare" use="required" type="type.vdata"/>
      <xs:attribute name="locinfo" type="type.locinfo"/>
      <xs:attribute name="langinfo" type="type.langinfo"/>
      <xs:attribute name="imeiinfo" type="type.imeiinfo"/>
      <xs:attribute name="class">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="UCS2"/>
            <xs:enumeration value="SMS-DEFAULT"/>
            <xs:enumeration value="GSMDefault"/>
            <xs:enumeration value="binary"/>
            <xs:enumeration value="Binary"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <xs:element name="test">
    <xs:complexType>
      <xs:attribute name="href" use="required" type="type.href"/>
      <xs:attribute name="value" use="required" type="type.vdata"/>
    </xs:complexType>
  </xs:element>
  <!-- ############### LAUNCH BROWSER ############### -->
  <xs:element name="launchbrowser">
		<xs:complexType>
		  <xs:sequence>
          <xs:element ref="bearer" minOccurs="0" maxOccurs="unbounded"/>
          <xs:element ref="catcherror" minOccurs="0"/>	  
        </xs:sequence>
        <xs:attributeGroup ref="attlist.launchbrowser"/>
		</xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.launchbrowser">
    <xs:attribute name="url" type="type.href"/>
    <xs:attribute name="cmdqualifier">
      <xs:simpleType>
        <xs:union memberTypes="type.unsignedByte">
          <xs:simpleType>
            <xs:restriction base="xs:token">
              <xs:enumeration value="launch-if-not-launched"/>
              <xs:enumeration value="use-existing"/>
              <xs:enumeration value="relaunch"/>
            </xs:restriction>
          </xs:simpleType>
        </xs:union>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="provfileref" type="type.vdata"/>
    <xs:attribute name="browserid">
      <xs:simpleType>
        <xs:union memberTypes="type.unsignedByte">
          <xs:simpleType>
            <xs:restriction base="xs:token">
              <xs:enumeration value="default"/>
            </xs:restriction>
          </xs:simpleType>
        </xs:union>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="title" type="type.vdata"/>
    <xs:attribute name="gatewayid" type="type.vdata"/>
    <xs:attributeGroup ref="icon"/>
  </xs:attributeGroup>
	<!-- ==== BEARER ==== -->
  <xs:element name="bearer">
    <xs:simpleType>
      <xs:restriction base="xs:token">
        <xs:enumeration value="sms"/>
        <xs:enumeration value="csd"/>
        <xs:enumeration value="ussd"/>
        <xs:enumeration value="gprs"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <!-- ############ CHECK TERMINAL PROFILE ########## -->
  <xs:element name="checkterminalprofile">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="check" maxOccurs="unbounded"/>
        <xs:element ref="catcherror" minOccurs="0"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.checkterminalprofile"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="check">
    <xs:complexType mixed="true">
      <xs:attributeGroup ref="attlist.check"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.checkterminalprofile">
    <xs:attribute name="text" type="type.vdata"/>
    <xs:attribute name="locinfo" type="type.locinfo"/>
    <xs:attribute name="langinfo" type="type.langinfo"/>
    <xs:attribute name="imeiinfo" type="type.imeiinfo"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="attlist.check">
    <xs:attribute name="bitmask" type="type.unsignedByte"/>
    <xs:attribute name="bitmaskext" type="type.vdata"/>
    <xs:attribute name="index" use="required" type="type.index"/>
    <xs:attribute name="href" type="type.href"/>
    
  </xs:attributeGroup>
  <!-- ################### SUBSTRING ################ -->
  <xs:element name="substring">
    <xs:complexType>
      <xs:attributeGroup ref="attlist.substring"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.substring">
    <xs:attribute name="srcvar" use="required" type="type.varName"/>
    <xs:attribute name="destvar" use="required" type="type.varName"/>
    <xs:attribute name="start" type="type.vdata"/>
    <xs:attribute name="span" type="type.vdata"/>
  </xs:attributeGroup>
  <!-- ############# ADD/SUB ######################## -->
  <xs:element name="add">
    <xs:complexType>
      <xs:attribute name="srcvar" type="type.varName"/>
      <xs:attribute name="destvar" use="required" type="type.varName"/>
      <xs:attribute name="class">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="SMS-DEFAULT"/>
          <xs:enumeration value="hex-binary"/>
          <xs:enumeration value="ber-length-encoded"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    </xs:complexType>
  </xs:element>
  <xs:element name="sub">
    <xs:complexType>
      <xs:attribute name="srcvar" type="type.varName"/>
      <xs:attribute name="destvar" use="required" type="type.varName"/>
      <xs:attribute name="class">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="SMS-DEFAULT"/>
          <xs:enumeration value="hex-binary"/>
          <xs:enumeration value="ber-length-encoded"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    </xs:complexType>
  </xs:element>
  <!-- #################### CONVERT ################# -->
  <xs:element name="convert">
    <xs:complexType>
      <xs:attribute name="srcvar" use="required" type="type.varName"/>
      <xs:attribute name="destvar" use="required" type="type.varName"/>
      <xs:attribute name="outputdcs" type="type.varName"/>
      <xs:attribute name="type" use="required">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="bin-to-decimal-groups"/>
            <xs:enumeration value="bin-to-hexbin"/>
            <xs:enumeration value="bin-to-int"/>
            <xs:enumeration value="bcd-to-sms"/>
            <xs:enumeration value="sms-to-bcd"/>
            <xs:enumeration value="unpacked-to-alpha"/>
	    <xs:enumeration value="packed-to-alpha"/>
            <xs:enumeration value="ucs2-to-alpha"/>
            <xs:enumeration value="alpha-to-text"/>
            <xs:enumeration value="packed-to-unpacked"/>
            <xs:enumeration value="unpacked-to-packed"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="details">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="ext-type-1"/>
            <xs:enumeration value="ignore-ext"/>
            <xs:enumeration value="ext-type-2"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <!-- ################ GROUP/UNGROUP ############### -->
   <xs:attributeGroup name="attlist.lengthenc">
      <xs:attribute name="lengthenc">
         <xs:simpleType>
            <xs:restriction base="xs:token">
               <xs:enumeration value="one-byte"/>
               <xs:enumeration value="two-byte"/>
            </xs:restriction>
         </xs:simpleType>
      </xs:attribute>
   </xs:attributeGroup>
  <xs:element name="groupvar">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="varlist">
          <xs:attribute name="destvar" use="required" type="type.varName"/>
          <xs:attributeGroup ref="attlist.lengthenc"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="ungroupvar">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="varlist">
          <xs:attribute name="srcvar" use="required" type="type.varName"/>
          <xs:attributeGroup ref="attlist.lengthenc"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="varlist">
    <xs:sequence>
      <xs:element maxOccurs="unbounded" ref="var"/>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="var">
    <xs:complexType>
      <xs:attribute name="name" use="required" type="type.varName"/>
    </xs:complexType>
  </xs:element>
  <!-- ################ SWAP NIBBLES ################ -->
  <xs:element name="swapnibbles">
    <xs:complexType>
      <xs:attribute name="destvar" use="required" type="type.varName"/>
    </xs:complexType>
  </xs:element>
  <!-- ################# TRANSCODE ################## -->
  <xs:element name="transcode">
    <xs:complexType>
      <xs:attribute name="dir" use="required">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="sms-to-ucs2"/>
            <xs:enumeration value="ucs2-to-sms"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="srcvar" use="required" type="type.varName"/>
      <xs:attribute name="destvar" use="required" type="type.varName"/>
    </xs:complexType>
  </xs:element>
  <!-- #################### TIMER ################### -->
  <xs:element name="timer">
    <xs:complexType>
      <xs:attribute name="var" use="required" type="type.varName"/>
      <xs:attribute name="operation" use="required">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="start"/>
            <xs:enumeration value="deactivate"/>
            <xs:enumeration value="get"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="href" use="required" type="type.href"/>
    </xs:complexType>
  </xs:element>
  <!-- ################### BYTECODE ################# -->
  <xs:element name="bytecode">
    <xs:complexType mixed="true">
      <xs:attribute name="docenc" type="dataenc"/>
    </xs:complexType>
  </xs:element>
  <!-- ################ WIGPLUGIN ############## -->
  <xs:element name="wigplugin">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="param"/>
      </xs:sequence>
      <xs:attribute name="name" use="required" type="type.sdata"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="param">
    <xs:complexType>
      <xs:attribute name="name" use="required" type="type.sdata"/>
      <xs:attribute name="value" use="required" type="type.sdata"/>
    </xs:complexType>
  </xs:element>
  <!-- ################################################## -->
  <!-- WIB 2.0 elements                                   -->
  <!-- ################################################## -->
  <!-- ################ TERMINAL PROFILE ############## -->
  <xs:element name="terminalprofile">
    <xs:complexType>
      <xs:attributeGroup ref="attlist.terminalprofile"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.terminalprofile">
    <xs:attribute name="destvar" use="required" type="type.varName"/>
  </xs:attributeGroup>
  <!-- ################ GET ICCID ############## -->
  <xs:element name="geticcid">
    <xs:complexType>
      <xs:attributeGroup ref="attlist.geticcid"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.geticcid">
    <xs:attribute name="destvar" use="required" type="type.varName"/>
  </xs:attributeGroup>
  <!-- ################ EXECUTE WIBLET ############## -->
  <xs:element name="executewiblet">
    <xs:complexType>
      <xs:attributeGroup ref="attlist.executewiblet"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.executewiblet">
    <xs:attribute name="srcvar" use="required" type="type.varName"/>
    <xs:attribute name="verifymac" type="type.boolean"/>
  </xs:attributeGroup>  
  <!-- ################ CREATE TLV ############## -->
  <xs:element name="createtlv">
    <xs:complexType>
      <xs:attributeGroup ref="attlist.createtlv"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.createtlv">
    <xs:attribute name="tagvariable" type="type.vdata"/>
    <xs:attribute name="tagliteral" type="type.vdata"/>
    <xs:attribute name="destvar" use="required" type="type.varName"/>
    <xs:attribute name="value" use="required" type="type.vdata"/>
    <xs:attribute name="class">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="UCS2"/>
          <xs:enumeration value="SMS-DEFAULT"/>
          <xs:enumeration value="binary"/>
          <xs:enumeration value="base64-binary"/>
          <xs:enumeration value="hex-binary"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>
  <!-- ################ EXTRACT TLV ############## -->
  <xs:element name="extracttlv">
    <xs:complexType>
      <xs:attributeGroup ref="attlist.extracttlv"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.extracttlv">
    <xs:attribute name="tagvariable" type="type.vdata"/>
    <xs:attribute name="tagliteral" type="type.vdata"/>
    <xs:attribute name="inputlist" use="required" type="type.vdata"/>
    <xs:attribute name="outputtag" use="required" type="type.varName"/>
    <xs:attribute name="outputlength" use="required" type="type.varName"/>
    <xs:attribute name="outputvalue" use="required" type="type.varName"/>
    <xs:attribute name="remaininglist" use="required" type="type.varName"/>
  </xs:attributeGroup>
  <!-- ################ EXECUTE STK ############## -->
  <xs:element name="executestk">
    <xs:complexType>
      <xs:choice minOccurs="1" maxOccurs="unbounded">
        <xs:element ref="tlv"/>
      </xs:choice>
      <xs:attributeGroup ref="attlist.executestk"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.executestk">
    <xs:attribute name="typeofcmd" use="required">
      <xs:simpleType>
        <xs:union memberTypes="type.unsignedByte">
          <xs:simpleType>
            <xs:restriction base="xs:token">
               <xs:enumeration value="refresh"/>
               <xs:enumeration value="more-time"/>
               <xs:enumeration value="poll-interval"/>
               <xs:enumeration value="polling-off"/>
               <xs:enumeration value="set-up-event-list"/>
               <xs:enumeration value="set-up-call"/>
               <xs:enumeration value="send-ss"/>
               <xs:enumeration value="send-ussd"/>
               <xs:enumeration value="send-short-message"/>
               <xs:enumeration value="send-dtmf"/>
               <xs:enumeration value="launch-browser"/>
               <xs:enumeration value="play-tone"/>
               <xs:enumeration value="display-text"/>
               <xs:enumeration value="get-inkey"/>
               <xs:enumeration value="get-input"/>
               <xs:enumeration value="select-item"/>
               <xs:enumeration value="set-up-menu"/>
               <xs:enumeration value="provide-local-information"/>
               <xs:enumeration value="timer-management"/>
               <xs:enumeration value="set-up-idle-mode-text"/>
               <xs:enumeration value="perform-card-apdu"/>
               <xs:enumeration value="power-on-card"/>
               <xs:enumeration value="power-off-card"/>
               <xs:enumeration value="get-reader-status"/>
               <xs:enumeration value="run-at-command"/>
               <xs:enumeration value="language-notification"/>
               <xs:enumeration value="open-channel"/>
               <xs:enumeration value="close-channel"/>
               <xs:enumeration value="receive-data"/>
               <xs:enumeration value="send-data"/>
               <xs:enumeration value="get-channel-status"/>
               <xs:enumeration value="service-search"/>
               <xs:enumeration value="get-service-information"/>
               <xs:enumeration value="declare-service"/>
               <xs:enumeration value="set-frames"/>
               <xs:enumeration value="get-frames-status"/>
               <xs:enumeration value="retrieve-multimedia-message"/>
               <xs:enumeration value="submit-multimedia-message"/>
               <xs:enumeration value="display-multimedia-message"/>
               <xs:enumeration value="activate"/>
            </xs:restriction>
          </xs:simpleType>		  
        </xs:union>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="cmdqualifier" type="type.hexBinary"/>
    <xs:attribute name="generalresult" use="required" type="type.varName"/>
    <xs:attribute name="additionalinfo" use="required" type="type.varName"/>
    <xs:attribute name="destvar" use="required" type="type.varName"/>
  </xs:attributeGroup>
  <!-- ################ TLV ############## -->
  <xs:element name="tlv" type="type.vdata"/>
  <!-- ################ CATCH ERROR ############## -->
  <xs:element name="catcherror">
		<xs:complexType>
			<xs:attribute name="result" use="required" type="type.varName"/>
			<xs:attribute name="resultdetails" type="type.varName"/>
		</xs:complexType>
	</xs:element>
  <!-- ################# SEND SS ################## -->
  <xs:element name="sendss">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="catcherror" minOccurs="0"/>	  
	   </xs:sequence>
      <xs:attributeGroup ref="attlist.sendss"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.sendss">
    <xs:attribute name="ss" use="required" type="type.vdata"/>
    <xs:attribute name="title" type="type.vdata"/>
    <xs:attribute name="destvar" type="type.varName"/>
    <xs:attributeGroup ref="icon"/>
    <xs:attribute name="wibenc">
      <xs:simpleType>
        <xs:restriction base="xs:token">
         <xs:enumeration value="SMS-DEFAULT"/>
         <xs:enumeration value="UCS2"/>
         <xs:enumeration value="TN-BCD"/>        
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>  
  </xs:attributeGroup>
  <!-- ############## HANDLE EXIT ################# -->
  <xs:element name="handleexit">
    <xs:complexType>
      <xs:attributeGroup ref="attlist.handleexit"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="attlist.handleexit">
    <xs:attribute name="error" type="type.href"/>
    <xs:attribute name="normal" type="type.href"/>
  </xs:attributeGroup>
</xs:schema>
