Acknowledgments | p. xix |
Introduction | p. xxi |
Getting Started on the Wireless Web | p. 1 |
What You Need to Access the Wireless Web | p. 2 |
Previewing the Wireless Web | p. 4 |
Wireless Search Engines | p. 4 |
Wireless News and Information Sites | p. 5 |
Wireless Sports Information Sites | p. 6 |
Wireless Financial Sites | p. 7 |
Wireless Mobile Commerce (M-Commerce) Sites | p. 8 |
Surfing the Wireless Web | p. 9 |
Typing on a Phone's Numeric Keypad | p. 10 |
Accessing the Wireless Web via a Web-Enabled Phone | p. 11 |
Traversing Wireless Links | p. 11 |
Downloading a Phone Simulator | p. 12 |
Downloading the Phone.com Software Development Kit | p. 12 |
Downloading the Nokia Software Development Kit | p. 14 |
Downloading the Ericsson Software Development Kit | p. 14 |
Understanding WML--the Wireless Markup Language | p. 18 |
Where to Place Your Wireless Site | p. 19 |
Creating Your First Wireless Site | p. 20 |
Surfing the Wireless Web | p. 23 |
Mastery Check | p. 24 |
Creating Your First WML Application | p. 25 |
Selecting a Text Editor | p. 26 |
Organizing Your WML Applications | p. 28 |
Building Your First WML Application: Hello, Wireless World! | p. 29 |
Using the Phone Simulator's Console Window | p. 34 |
Taking a Closer Look at Hello, Wireless World! | p. 35 |
Building an Automated Phone Book | p. 45 |
WML and Arithmetic Operations | p. 50 |
Understanding Whitespace | p. 51 |
Correcting Logic Errors | p. 54 |
Using the Personal Web Server to Launch Your Wireless Application | p. 54 |
Creating a Virtual Grocery List | p. 56 |
Mastery Check | p. 58 |
Formatting Output | p. 61 |
Aligning Paragraph Text | p. 62 |
Controlling Line Wrapping | p. 65 |
Using Styles to Format Text | p. 66 |
Displaying Simple Images | p. 68 |
Creating a WBMP File | p. 68 |
Placing a WBMP Image in a WML Application | p. 70 |
Using Your Phone's Built-In Images | p. 73 |
Organizing Data in Tables | p. 79 |
Formatting Table Data | p. 83 |
Creating a Virtual Cookbook | p. 91 |
Taking Advantage of Special Characters | p. 93 |
Mastery Check | p. 96 |
Working with Multiple Cards and Variables | p. 99 |
Using Two or More Cards | p. 100 |
Understanding the [left angle bracket]do type="accept" label="text"[right angle bracket] Tag | p. 104 |
Displaying a Week's Weather Report | p. 109 |
Moving Back to the Previous Card | p. 113 |
Putting Your Favorite Recipes on the Wireless Web | p. 117 |
Accessing Cards That Reside Outside of the Current Deck | p. 119 |
Using an Anchor to Create a Link | p. 123 |
Creating a Link to a Card Within an External Deck | p. 125 |
Storing Information in Variables | p. 130 |
Naming Your Variables | p. 132 |
WML Variables Store Character Strings | p. 133 |
Using the Value a Variable Contains | p. 133 |
Using [left angle bracket]setvar[right angle bracket] to Assign a Value to a Variable | p. 134 |
Changing a Variable's Value | p. 135 |
Understanding the Variable Context | p. 139 |
Viewing Variables with the Phone Simulator's Console Window | p. 140 |
Using Comments to Explain Your Application's Processing | p. 141 |
Mastery Check | p. 144 |
Performing User Input Operations | p. 147 |
Performing Input Operations | p. 148 |
Restricting the Number of Characters the User Can Input | p. 150 |
Using a Microbrowser-Specific Input Field | p. 153 |
Specifying a Title for the Input Field | p. 154 |
Prompting the User for a Password | p. 154 |
Providing a Default Input Value | p. 156 |
Controlling Input Format | p. 158 |
Controlling Empty Strings | p. 160 |
Structuring Input Format | p. 162 |
Repeating a Formatting Code a Specific Number of Times | p. 163 |
Using the [left angle bracket]select[right angle bracket] Tag to Create a Menu of Choices | p. 165 |
Assigning an Index Value that Corresponds to a User's Selection | p. 168 |
Letting the User Choose Multiple [left angle bracket]select[right angle bracket] Tag Options | p. 170 |
Checking Off Grocery List Items as You Shop | p. 172 |
Grouping Options Within a [left angle bracket]select[right angle bracket] Tag | p. 174 |
Understanding Field Sets | p. 176 |
Understanding Events | p. 179 |
WML Events Can Trigger Specific Tasks | p. 180 |
Reviewing the [left angle bracket]go[right angle bracket] and [left angle bracket]prev/[right angle bracket] Events | p. 180 |
Understanding the [left angle bracket]noop[right angle bracket] Tag | p. 182 |
Understanding the [left angle bracket]refresh[right angle bracket] Tag | p. 183 |
Using the [left angle bracket]do[right angle bracket] Tag to Respond to Events | p. 184 |
Responding to Other Events | p. 186 |
Using Templates | p. 195 |
Using the [left angle bracket]meta[right angle bracket] Tag | p. 196 |
Mastery Check | p. 198 |
Building Real-World WML Applications | p. 201 |
Creating Your Own Wireless Site | p. 202 |
Taking a Closer Look at MyInfo.wml | p. 204 |
Adding a Photo to Your Wireless Web Site | p. 206 |
Creating a Wireless Site for Family Information | p. 207 |
Taking a Closer Look at FamilyInfo.wml | p. 210 |
Creating a Wireless Company Locator | p. 212 |
Taking a Closer Look at Locator.wml | p. 217 |
Creating a News Feed | p. 218 |
Mastery Check | p. 224 |
Automating WML Applications Using WMLScript | p. 225 |
Place WMLScript Statements Within a.wmls File | p. 226 |
Understanding WMLScript Functions | p. 229 |
Understanding WMLScript Reserved Words | p. 230 |
Looking at a Simple Example | p. 231 |
Revisiting Hello, Wireless World! | p. 232 |
Using Comments to Explain Your Script's Processing | p. 234 |
Storing Information in WMLScript Variables | p. 236 |
Declaring Variables Within Your Script | p. 237 |
Assigning a Value to a Variable | p. 238 |
Using the Value a Variable Contains | p. 239 |
Understanding Floating-Point Precision | p. 240 |
Performing Arithmetic Operations | p. 242 |
Incrementing a Variable's Value by 1 | p. 244 |
Using Prefix (Before) and Postfix (After) Increment Operators | p. 246 |
Other WMLScript Operators | p. 247 |
Understanding Operator Precedence | p. 248 |
Controlling the Order in Which WMLScript Performs Arithmetic Operations | p. 250 |
Calling a WMLScript Function from Another Function | p. 251 |
Passing WML Variables and Other Values as Parameters to a WMLScript Function | p. 255 |
Using Conditional Processing to Make Decisions | p. 257 |
Using Relational Operators to Compare Two Values | p. 257 |
Using the if Statement to Test a Condition | p. 258 |
Understanding Simple and Compound Statements | p. 259 |
Using the Else Statement for False Conditions | p. 260 |
Using Logical Operators to Test Two or More Conditions | p. 262 |
Understanding How WMLScript Represents True and False | p. 263 |
Using the WMLScript Not Operator | p. 263 |
Performing If-Else Processing | p. 264 |
Using Iterative Processing to Repeat Specific Statements | p. 265 |
Using the for Statement to Repeat Statements a Specific Number of Times | p. 265 |
Using a While Loop to Repeat Statements While a Condition is True | p. 268 |
Accessing WML Variables From Within WMLScript | p. 270 |
Using the use access Pragma to Restrict Access to a WMLScript File | p. 272 |
Using the use Pragma to Simplify Access to External Functions | p. 273 |
Mastery Check | p. 274 |
Using the WMLScript Libraries | p. 275 |
Understanding Libraries, Functions, and Parameters | p. 276 |
Using the WMLScript Dialogs Library | p. 277 |
Alerting the User of a Problem or Event | p. 277 |
Confirming an Operation with the User | p. 279 |
Prompting the User for Input | p. 282 |
Using the WMLScript Float Library | p. 286 |
Checking a Phone for Floating-Point Support | p. 287 |
Determining the Range of Values Your Device Supports | p. 289 |
Rounding and Truncating Values | p. 291 |
Raising One Value to the Power of Another | p. 295 |
Calculating a Value's Square Root | p. 297 |
Using the WMLScript Lang Library | p. 298 |
Aborting the Current Application | p. 299 |
Determining a Value's Absolute Value | p. 301 |
Determining the Current Character Set | p. 303 |
Testing for a Valid Integer or Floating-Point Number | p. 304 |
Determining Maximum and Minimum Values | p. 306 |
Parsing a String for an Integer or Floating-Point Value | p. 308 |
Generating a Random Number | p. 310 |
Using the WMLScript String Library | p. 314 |
Determining the Character at a Specific Location in a String | p. 316 |
Comparing Two Character Strings | p. 318 |
Formatting a String's Contents | p. 320 |
Working with Delimited Strings | p. 322 |
Testing for an Empty String | p. 328 |
Determining a String's Length | p. 329 |
Removing Whitespace from Within a String | p. 330 |
Extracting a Substring from Within a String | p. 332 |
Converting a Result to a String | p. 332 |
Using the WMLScript URL Library | p. 333 |
Parsing a URL | p. 335 |
Determining a URL's Base Address | p. 336 |
Extracting a Fragment from a URL | p. 336 |
Extracting a Host Name from a URL | p. 336 |
Extracting Parameters from a URL | p. 337 |
Extracting a Directory Path from a URL | p. 337 |
Extracting a Port Number from a URL | p. 337 |
Determining the URL of the Referring Source | p. 338 |
Building an Absolute URL | p. 338 |
Extracting the Schema from a URL | p. 340 |
Testing for a Valid URL | p. 341 |
Loading the Content That Resides at a URL | p. 341 |
Escaping URL Strings | p. 341 |
Using the WMLScript WMLBrowser Library | p. 342 |
Determining the Current Card | p. 343 |
Performing a WML Go Operation to Branch to a URL | p. 344 |
Performing a WML Prev Operation to Return to the Previous URL | p. 346 |
Performing a WML Refresh Operation | p. 346 |
Setting and Retrieving Variable Values | p. 346 |
Mastery Check | p. 348 |
Building Real-World WMLScript Applications | p. 351 |
Using the Console Window | p. 352 |
Processing User Input | p. 354 |
Playing Tic-Tac-Toe | p. 357 |
Reducing the TicTacToe.wmls Script's Size | p. 364 |
Mastery Check | p. 367 |
Advanced Concepts | p. 369 |
Interacting with a Server | p. 370 |
Using a Perl Script to Store Address Information | p. 375 |
Searching the Address List | p. 378 |
Using a Perl Script to Retrieve Information from a Database | p. 381 |
Interacting with an Active Server Page | p. 385 |
Building a To Do List | p. 388 |
Adding an Event to the To Do List | p. 391 |
Viewing a To Do List Entry | p. 393 |
Displaying Multiple Events One Page at a Time | p. 394 |
Mastery Check | p. 398 |
Answers to Mastery Checks | p. 399 |
Getting Started on the Wireless Web | p. 400 |
Creating Your First WML Application | p. 401 |
Formatting Output | p. 404 |
Working with Multiple Cards and Variables | p. 407 |
Performing User Input Operations | p. 410 |
Building Real-World WML Applications | p. 415 |
Automating WML Applications Using WMLScript | p. 417 |
Using the WMLScript Libraries | p. 418 |
Building Real-World WMLScript Applications | p. 420 |
Advanced Concepts | p. 421 |
WML Language Reference | p. 425 |
[left angle bracket]a[right angle bracket] | p. 426 |
Description | p. 426 |
Format | p. 426 |
Attributes | p. 426 |
[left angle bracket]access[right angle bracket] | p. 426 |
Description | p. 426 |
Format | p. 427 |
Attributes | p. 427 |
[left angle bracket]anchor[right angle bracket] | p. 427 |
Description | p. 427 |
Format | p. 427 |
Attributes | p. 427 |
[left angle bracket]b[right angle bracket] | p. 428 |
Description | p. 428 |
Format | p. 428 |
Attributes | p. 428 |
[left angle bracket]big[right angle bracket] | p. 428 |
Description | p. 428 |
Format | p. 429 |
Attributes | p. 429 |
[left angle bracket]br/[right angle bracket] | p. 429 |
Description | p. 429 |
Format | p. 429 |
[left angle bracket]card[right angle bracket] | p. 429 |
Description | p. 429 |
Format | p. 429 |
Attributes | p. 430 |
[left angle bracket]do[right angle bracket] | p. 431 |
Description | p. 431 |
Format | p. 431 |
Attributes | p. 431 |
[left angle bracket]em[right angle bracket] | p. 432 |
Description | p. 432 |
Format | p. 432 |
Attributes | p. 432 |
[left angle bracket]fieldset[right angle bracket] | p. 432 |
Description | p. 432 |
Format | p. 432 |
Attributes | p. 432 |
[left angle bracket]go[right angle bracket] | p. 433 |
Description | p. 433 |
Format | p. 433 |
Attributes | p. 433 |
[left angle bracket]head[right angle bracket] | p. 434 |
Description | p. 434 |
Format | p. 434 |
Attributes | p. 434 |
[left angle bracket]i[right angle bracket] | p. 434 |
Description | p. 434 |
Format | p. 434 |
Attributes | p. 435 |
[left angle bracket]img[right angle bracket] | p. 435 |
Description | p. 435 |
Format | p. 435 |
Attributes | p. 435 |
[left angle bracket]input[right angle bracket] | p. 436 |
Description | p. 436 |
Format | p. 436 |
Attributes | p. 436 |
[left angle bracket]meta[right angle bracket] | p. 438 |
Description | p. 438 |
Format | p. 438 |
Attributes | p. 438 |
[left angle bracket]noop[right angle bracket] | p. 439 |
Description | p. 439 |
Format | p. 439 |
[left angle bracket]onevent[right angle bracket] | p. 439 |
Description | p. 439 |
Format | p. 439 |
Attributes | p. 439 |
[left angle bracket]optgroup[right angle bracket] | p. 440 |
Description | p. 440 |
Format | p. 440 |
Attributes | p. 440 |
[left angle bracket]option[right angle bracket] | p. 440 |
Description | p. 440 |
Format | p. 440 |
Attributes | p. 441 |
[left angle bracket]p[right angle bracket] | p. 441 |
Description | p. 441 |
Format | p. 441 |
Attributes | p. 441 |
[left angle bracket]postfield[right angle bracket] | p. 442 |
Description | p. 442 |
Format | p. 442 |
Attributes | p. 442 |
[left angle bracket]pre[right angle bracket] | p. 442 |
Description | p. 442 |
Format | p. 443 |
Attributes | p. 443 |
[left angle bracket]prev[right angle bracket] | p. 443 |
Description | p. 443 |
Format | p. 443 |
Attributes | p. 443 |
[left angle bracket]refresh[right angle bracket] | p. 443 |
Description | p. 443 |
Format | p. 444 |
Attributes | p. 444 |
[left angle bracket]select[right angle bracket] | p. 444 |
Description | p. 444 |
Format | p. 444 |
Attributes | p. 444 |
[left angle bracket]setvar[right angle bracket] | p. 445 |
Description | p. 445 |
Format | p. 445 |
Attributes | p. 445 |
[left angle bracket]small[right angle bracket] | p. 446 |
Description | p. 446 |
Format | p. 446 |
Attributes | p. 446 |
[left angle bracket]strong[right angle bracket] | p. 446 |
Description | p. 446 |
Format | p. 446 |
Attributes | p. 446 |
[left angle bracket]table[right angle bracket] | p. 446 |
Description | p. 446 |
Format | p. 447 |
Attributes | p. 447 |
[left angle bracket]td[right angle bracket] | p. 447 |
Description | p. 447 |
Format | p. 447 |
Attributes | p. 447 |
[left angle bracket]template[right angle bracket] | p. 448 |
Description | p. 448 |
Format | p. 448 |
Attributes | p. 448 |
[left angle bracket]timer[right angle bracket] | p. 448 |
Description | p. 448 |
Format | p. 449 |
Attributes | p. 449 |
[left angle bracket]tr[right angle bracket] | p. 449 |
Description | p. 449 |
Format | p. 449 |
Attributes | p. 449 |
[left angle bracket]u[right angle bracket] | p. 450 |
Description | p. 450 |
Format | p. 450 |
Attributes | p. 450 |
[left angle bracket]wml[right angle bracket] | p. 450 |
Description | p. 450 |
Format | p. 450 |
Attributes | p. 450 |
Wireless References on the World Wide Web | p. 451 |
Index | p. 453 |
Table of Contents provided by Syndetics. All Rights Reserved. |