| Acknowledgments | p. xiii |
| Introduction | p. xv |
| Introducing WAP | p. 1 |
| What Is WAP? | p. 2 |
| Why is WAP Important? | p. 3 |
| WAP's Benefits for Consumers | p. 5 |
| A History of WAP | p. 6 |
| A Time Before WAP | p. 6 |
| The WAP Forum | p. 7 |
| The Idea of WAP | p. 7 |
| WAP Architecture | p. 8 |
| The WAP Model | p. 9 |
| Wireless Markup Language (WML) | p. 10 |
| Evolution of WAP | p. 10 |
| Adapting to the Restrictions of the Wireless Network | p. 10 |
| The Business Case for WAP | p. 15 |
| WAP Services | p. 15 |
| Why WAP? | p. 20 |
| The Future of WAP | p. 21 |
| What Makes a Good WAP Application? | p. 23 |
| The User's Point of View | p. 24 |
| Ease of Use | p. 25 |
| Designing for Users | p. 25 |
| What Are the WAP Micro-Browser Issues Today? | p. 27 |
| Writing a Genetic WML Interface | p. 28 |
| Targeting Your Market Micro-Browser | p. 29 |
| How to Design a Good WAP Application | p. 30 |
| The Application-Design Process | p. 32 |
| Common Design Mistakes | p. 37 |
| The User Interface | p. 39 |
| User Interface Basic | p. 40 |
| Low Bandwidth | p. 42 |
| Small Screen Size | p. 42 |
| Text Entry | p. 43 |
| Number of Keystrokes | p. 43 |
| Password Text Entry | p. 44 |
| Application Personalization | p. 44 |
| Data Field Entry | p. 45 |
| Using the Cache | p. 45 |
| Types of WML Cards | p. 47 |
| Choice Cards | p. 47 |
| Entry Cards | p. 49 |
| Display Cards | p. 49 |
| The "Back" Button | p. 50 |
| Graphics | p. 51 |
| WAP Development Tools and Software | p. 53 |
| Editors and Emulators | p. 55 |
| WAP Editors | p. 55 |
| WAP Emulators | p. 58 |
| Software Developer Kits (SDKs) and Integrated Development Environments (IDEs) | p. 60 |
| Converting Images | p. 62 |
| Specification of Well-Defined WBMP Types | p. 62 |
| Summary | p. 63 |
| Working with WML | p. 65 |
| WML Basics | p. 66 |
| WAP and the Web | p. 67 |
| Writing WML Code | p. 68 |
| The "Hello World" Example | p. 70 |
| The Document Prologue | p. 70 |
| The Deck Header | p. 72 |
| The First Card | p. 72 |
| The Second Card | p. 72 |
| The Deck Footer | p. 73 |
| A Services Site Example | p. 73 |
| Using Multiple Decks | p. 73 |
| Building the Services Site | p. 74 |
| What's in a Card | p. 75 |
| Graphics | p. 76 |
| The Services Site with Graphics | p. 78 |
| Creating Links | p. 80 |
| The WML Site with Links | p. 81 |
| Templates | p. 83 |
| Interactivity: Forms and User Input | p. 85 |
| The Options Menu (Select) | p. 86 |
| Selection on the Nokia | p. 87 |
| Selection on Phone.com | p. 88 |
| Option Groups | p. 88 |
| Templates Revisited | p. 92 |
| The Do Element | p. 94 |
| Events | p. 98 |
| Onenterbackward | p. 98 |
| Onenterforward | p. 101 |
| Onpick | p. 102 |
| Ontimer | p. 103 |
| Variables | p. 104 |
| Using Variables | p. 105 |
| Other Ways of Setting Variables | p. 108 |
| The Input Tag | p. 110 |
| Data Formatting | p. 112 |
| Summary | p. 116 |
| Adding Functionality with WMLScript | p. 117 |
| What is WMLScript? | p. 118 |
| The Rules of WMLScript | p. 119 |
| Case Sensitivity | p. 120 |
| Whitespace and Line Breaks | p. 120 |
| Comments | p. 120 |
| Statements | p. 122 |
| Code Blocks | p. 122 |
| Variables | p. 123 |
| Variable Scope | p. 124 |
| Operators | p. 124 |
| Assignment Operator | p. 125 |
| Arithmetic Operators | p. 125 |
| Bitwise Operators | p. 126 |
| Increment and Decrement Operators | p. 126 |
| Logical Operators | p. 128 |
| Comparison Operators | p. 129 |
| String Concatenation | p. 131 |
| The Comma | p. 131 |
| The typeof Operator | p. 132 |
| The isvalid Operator | p. 133 |
| The Conditional Operator | p. 133 |
| Operator Precedence | p. 134 |
| Control Constructs | p. 135 |
| If Statements | p. 135 |
| While Statements | p. 137 |
| For Statements | p. 137 |
| Stopping Loops or Skipping Unnecessary Loop Statements | p. 138 |
| Reserved Words | p. 140 |
| Functions | p. 141 |
| Parameters | p. 141 |
| Calling Functions | p. 142 |
| The Standard Libraries | p. 145 |
| The Dialogs Library | p. 146 |
| The Float Library | p. 146 |
| The Lang Library | p. 147 |
| The String Library | p. 149 |
| The URL Library | p. 150 |
| The WML Browser Library | p. 152 |
| Arrays | p. 152 |
| Pragmas | p. 154 |
| External Files | p. 155 |
| Access Control | p. 156 |
| Metadata | p. 157 |
| General Coding Principles | p. 157 |
| Database-Driven WAP | p. 159 |
| Active Server Pages | p. 161 |
| ASP and WAP | p. 162 |
| The ASP Object Model | p. 164 |
| ActiveX Data Objects (ADO) | p. 168 |
| Physically Connecting to the Database | p. 168 |
| Querying the Database | p. 169 |
| Using the Returned Data | p. 169 |
| Tidying Up | p. 170 |
| Some Additional Notes about Connections | p. 170 |
| A Dynamic WAP Application | p. 171 |
| Worldwide-Dance-Web for WAP | p. 172 |
| Data Flow | p. 172 |
| Building the Database | p. 173 |
| Writing the Code | p. 176 |
| Summary | p. 193 |
| Converting Existing Web Sites | p. 195 |
| Why Convert an Existing HTML Web Site to WAP? | p. 196 |
| What Should You Convert? | p. 196 |
| Methods of Conversion | p. 197 |
| A Demonstration HTML Conversion | p. 202 |
| Summary | p. 210 |
| M-Commerce and Security | p. 213 |
| Types of Security and Why It Is Necessary | p. 214 |
| What Is an Acceptable Level of Security? | p. 215 |
| How Secure Is WAP? | p. 215 |
| A Brief History of Encryption | p. 216 |
| Cryptography | p. 216 |
| Wireless Transport Layer Security | p. 219 |
| The Handshake | p. 220 |
| Summary | p. 221 |
| Push Technology and Telematics | p. 223 |
| Push Technology | p. 224 |
| The Push Framework | p. 224 |
| Telematics | p. 228 |
| Location-Sensitive Information | p. 228 |
| Applications for Telematics | p. 229 |
| Push and Telematics Together | p. 230 |
| User Privacy | p. 231 |
| Summary | p. 231 |
| What the Future Holds | p. 233 |
| Technology with Users in Mind | p. 234 |
| Bluetooth--Cutting the Cords | p. 235 |
| Voice XML--a New Slant on "Walkie/Talkie" | p. 237 |
| Telematics--We Know Where You Are | p. 238 |
| Bringing It All Together | p. 239 |
| WMLScript Reference | p. 241 |
| Case Sensitivity | p. 242 |
| Whitespace and Line Breaks | p. 242 |
| Comments | p. 243 |
| Constants | p. 244 |
| Integer Constants | p. 244 |
| Floating-point Constants | p. 244 |
| String Constants | p. 245 |
| Boolean Variables | p. 246 |
| Invalid Variables | p. 246 |
| Reserved Words | p. 247 |
| Variables | p. 248 |
| Variable Declaration | p. 248 |
| Variable Scope and Lifetime | p. 248 |
| Data Types | p. 249 |
| Pragmas | p. 250 |
| External Files | p. 250 |
| Access Control | p. 251 |
| Metadata | p. 252 |
| Operators | p. 253 |
| Assignment Operators | p. 253 |
| Arithmetic Operators | p. 254 |
| Logical Operators | p. 255 |
| String Operators | p. 256 |
| Comparison Operators | p. 256 |
| Comma Operator | p. 257 |
| Conditional Operator | p. 258 |
| typeof Operator | p. 258 |
| isvalid Operator | p. 259 |
| Expressions | p. 259 |
| Functions | p. 260 |
| Function Declarations | p. 260 |
| Function Calls | p. 260 |
| Statements | p. 262 |
| Empty Statements | p. 262 |
| Expression Statements | p. 262 |
| Block Statements | p. 262 |
| Variable Statements | p. 263 |
| If Statements | p. 263 |
| While Statements | p. 264 |
| For Statements | p. 264 |
| Break Statements | p. 265 |
| Continue Statements | p. 265 |
| Return Statements | p. 266 |
| Libraries | p. 266 |
| Notational Conventions | p. 266 |
| Lang Library | p. 267 |
| Float Library | p. 272 |
| String Library | p. 275 |
| URL Library | p. 284 |
| WML Browser Library | p. 290 |
| Dialogs Library | p. 293 |
| Console Library | p. 295 |
| Glossary | p. 297 |
| Index | p. 307 |
| Table of Contents provided by Syndetics. All Rights Reserved. |