Designing Web Sites for the Internet Explorer for Pocket PC

 

White Paper

Applies to:
   Microsoft Windows Powered Pocket PC 2000
   Microsoft Pocket Internet Explorer

Abstract

One of the best new features of the Pocket PC is the new Internet Explorer Web brower for Pocket PC ( hereafter called Pocket Internet Explorer) . For the first time in any hand-held device, Pocket Internet Explorer allows the Pocket PC owner not only to browse online Web content but also to synchronize Web pages for offline viewing.

The intent of this white paper is to help Web designers and developers create Web sites that are compatible and optimized for viewing via Pocket Internet Explorer on the Pocket PC.

Introduction to Pocket Internet Explorer

Welcome to the World of Pocket Internet Explorer!

With the release of the Pocket PC, Microsoft Pocket Internet Explorer offers the richest Web experience of all comparable pocket-sized devices.

Pocket PCs can display rich content. Various Pocket PC models are offered with 4,096 or 65,535 color displays as well as 4 and 16 levels of gray scale.

Pocket Internet Explorer has implemented key Internet technology standards: HTML 3.2; Secure Sockets Layer (SSL) versions 2.0 and 3.0 for secure transactions; Microsoft JScript for scripting Web page behavior; cookies for visitor tracking and a user's easier return to sites that require user authentication; and frames for formatting.

Pocket Internet Explorer even supports ActiveX controls that already reside on the Pocket PC.

Pocket Internet Explorer supports the key technology XML (Extensible Markup Language), which will enable people to more easily deploy business Internet applications to the Pocket PC.

Some of the innovative ways that Pocket Internet Explorer for the Pocket PC delivers the Web to the small screen include:

  • The Shrink-to-fit capability, which dynamically resizes a Web site to maximize viewing on the smaller, vertically oriented screens of Pocket PCs.
  • The auto-state detection determines automatically if the device is connected to the Internet and, if not, seamlessly diverts the browser to a cached version of the Web page.

Due to its unique design and the optimized mixture of Internet Explorer 3.02 (HTML Engine), Internet Explorer 4.0 (Scripting Engine) and Internet Explorer 5.0 (XML engine) we wrote this white paper to help Web site designers optimize their sites for Pocket Internet Explorer.

Sniffing for Pocket Internet Explorer on Your Server

Before we get into designing Web pages for Pocket Internet Explorer we have to cover one very important aspect...

If you are using Microsoft Internet Information Services 4.0 or later you will find a file named BROWSCAP.INI in the directory \WINNT\system32\inetsrv. This file contains descriptions of all known browsers at the time you installed the latest service pack.

Here is the description of the Pocket Internet Explorer you have to add to the BROWSCAP.INI:

; Pocket PC (aka Rapier)
[Mozilla/2.0 (compatible; MSIE 3.02; Windows CE; 240x320)]
browser=Pocket IE
version=4.0
majorver=#4
minorver=#0
platform=Windows CE
width=240
height=320
cookies=TRUE
frames=TRUE
backgroundsounds=TRUE
javaapplets=FALSE
javascript=TRUE
vbscript=FALSE
tables=TRUE
activexcontrols=TRUE

Pocket Internet Explorer is actually a mixture of Internet Explorer 3.02 (HTML), Internet Explorer 4.0 (Scripting) and Internet Explorer 5.0 (XML) components. That is why it will be identified as Microsoft Internet Explorer 3.02 while it uses version 4.0 inside the properties.

When Pocket Internet Explorer sends a request to your HTTP server, the following specific information is included in the HTTP request header:

UA-pixels: {i.e. 240x320}
UA-color: {mono2 | mono4 | color8 | color16 | color24 | color32}
UA-OS: {Windows CE (POCKET PC) - Version 3.0}
UA-CPU = {i.e. MIPS R4111}

Using the following server side script (ASP) lines you can now create special optimized pages as soon as a Pocket Internet Explorer enters your site:

'Check for Windows CE (Pocket PC, Palm-size PC, Handheld PC, Handheld PC Pro)
if (InStr(Request.ServerVariables("HTTP_USER_AGENT"), "Windows CE")) then
        { add Windows CE specific code }
else
        { add code for other platforms }
end if
 
'Check for Pocket PC
if (InStr(Request.ServerVariables("HTTP_UA_OS"), "POCKET PC")) then
        { add Pocket PC specific code }
else
        { add code for other platforms }
end if

To identify the Pocket Internet Explorer using client-side scripting (JScript) you can use the following code:

        var strNav = navigator.userAgent;
// Check for Windows CE (Pocket PC, Palm-size PC, Handheld PC, Handheld PC Pro)
        var isCE = strNav.indexOf("Windows CE");
        if(isCE > -1) {
               //add Windows CE specific code 
        }
        else {
               //add code for other platforms 
        }
 
// Check for Pocket PC
        var isPPC = strNav.indexOf("240x320");
               if(isPPC > -1) {
                // add Pocket PC specific code
        }
        else {
               // add code for other platforms
        }

Supported HTML Tags

Pocket Internet Explorer is HTML 3.2 compliant, with some minor exceptions. Therefore all HTML Tags that are defined by this standard can be displayed in Pocket Internet Explorer. There are some limitations and issues of Pocket PC that a Web designer should be aware of:

  • DHTML not supported
  • Frames always have a border and can always be resized
  • CSS are not supported

Here are some general guidelines for using HTML tags targeting Pocket Internet Explorer:

General Tag Issues

Issues with the TARGET Attribute of <A> tag

Pocket Internet Explorer cannot spawn multiple windows. Therefore if you use "target=_new" with the <A> tag it does not open a second window as your browser on the desktop would do. You can use the "target" attribute to point to a named frame Th &ltAREA>, &ltBASE> and &ltFORM> tags also support this attribute. Using any other specified target (i.e. "Target=_new", "Target=foo") will cause Pocket Internet Explorer to behave the same as if you have not specified a target at all.

While Pocket Internet Explorer does support _top and _parent, it does not support _self, _blank. If the target is something other than a named frame that already exists or a supported special value, it's the same as if the TARGET attribute were omitted completely. In this case the browser will navigate the frame/window where the link was tapped.

The browser supports the TARGET attribute on AREA, BASE, and FORM tags as well.

Fonts

Pocket PC includes four fonts:

  • Tahoma (default font for variable width fonts)
  • Bookdings
  • Frutiger Linotype
  • Courier (default fixed width font)

All other font faces are converted to the closer of those four fonts defined by their font description. Using the <PRE> tag for any fixed width content will ensure that Pocket Internet Explorer chooses the correct fixed width font.

Frames

Frames consume a lot of space on the screen just for the borders and the margins and therefore are generally not recommended for Pocket Internet Explorer. If you really must use frames, limit them to no more than two per screen.

Match up tags

Design your pages in a way that the HTML tags match up correctly.

In example:

Wrong: <TABLE><FORM>....</TABLE></FORM>
Correct: <TABLE><FORM>....</FORM></TABLE>

Incorrect matching can lead to unpredictable results in Pocket Internet Explorer.

BGSOUND Attribute

Background sounds are supported by Pocket Internet Explorer and can provide cool special effects. However only WAV files are supported and they usually take up a lot of space. Use sounds sparingly and limit your effects to a minimum. Since the LOOP attribute is not supported, you cannot create or use permanent background sounds.

Form Fields and Buttons

Text Fields and Text Areas

Pocket Internet Explorer renders text fields and text areas no wider than the width of the Pocket PC screen. The user might have to scroll horizontally to get to the field but it will always fit on the screen. If you have to use text fields and you want to achieve a clean look and good feel, design them from the beginning in a way that they do not exceed the width of the Pocket PC screen. Position long fields and other areas at the beginning of line.

Buttons

A button is a rectangular graphical object and is named with text that describes the action performed when tapped. Oftentimes buttons are named "submit" or "cancel." Buttons will follow the flow of the text and will scroll with the page. Ideally, buttons should be designed and placed in such a way that they are consistent, both within a particular page and across other pages. There is a limited amount of screen space for the placement of buttons, so use your judgment when deciding how many buttons to include on the screen. Buttons cannot submit any forms offline except when AvantGo synchronization is used.

They can be used to fire off events that a custom event handler can catch. These event handlers will work offline. As mentioned before with text fields, buttons and text areas are not rendered wider than the screen width of the Pocket PC.

Tables

The use of tables to display information can greatly enhance the way users view certain data. Use the WIDTH attribute to set the size of the table in the window. The best way to control the table size is to use the pixel values for the WIDTH attribute. Nested tables are supported.

If you choose to leave out the WIDTH attribute, the table renders according the following rules:

  • If the Fit to Screen option is selected, the table will perfectly for to the screen width.
  • If Fit to Screen is not selected, Pocket Internet Explorer uses a virtual 640x480 screen and renders the table to a width of 640 pixels.

Thus, unless there is a specific reason for having table or cell widths, it is recommended that width values be omitted. The ALIGN attribute is supported on the <TR> and <TD> tags, but not on the <TABLE> tag.

Graphics and Images

Graphics and images make any user experience more appealing and should be used, but sparingly, when they add value to the user.

If you wish to display an image that is larger than the working area, Pocket Internet Explorer will follow these rules:

  • If "Fit to screen" is OFF, Pocket Internet Explorer displays the image as specified with the <IMG> tags, honoring the "height" and "width" attributes or the original image size, if the attributes are not specified.
  • If "Fit to screen" is ON and...
    • The image is smaller then the screen width, the image displays as specified in the <IMG> tag.
    • The image is wider then the screen width, the image shrinks to fit to the screen, but never smaller than one-half of its original width.

Scaling reduces the quality of many images, so you might consider avoiding images wider than the smallest supported viewing area.

Image Detail

It's good practice to avoid large, detailed images because the scaling operation may obscure critical information. If there is a convenient way to convey the same information without using an image, you are probably better off dispensing with the image altogether. If you must use detailed images, however, you should tailor them especially for mobile devices in order to achieve a predictable result.

Image Color

Pocket Internet Explorer will display color images on color displays. On gray scale or monochrome devices, Pocket Internet Explorer converts the color images to black and white. The original color scheme of an image plays an important role in the way Pocket Internet Explorer renders it on gray scale and monochrome devices. The process works best on images that have a high contrast ratio between colors and that have crisp edges in the details of the picture.

Designing Images

The easiest and most predictable way to use images for mobile devices is to make your own custom, small bitmapped images that take into account the reduced screen size. Design your images with clean lines and simple shapes, since more complicated elements tend to appear ragged. The best practice is to use an image that is deliberately simple, rather than a complex image that looks confusing.

Alt Tags

Users may choose not to load images, so it is extremely important to place meaningful alternate text tags in each of your embedded images. Keep in mind that you are trying to convey the message of the missing picture, not describe it.

Image Maps

Pocket Internet Explorer does support image maps. Remember to keep your images small and simple. Also, your image should convey to the user some indication of its function.

Animated GIFs

Pocket Internet Explorer does not support animated GIFs. The first frame of the animated GIF appears to the user, and the rest of the frames composing the animation are stored on the device, taking up valuable space.

General Guidelines, Tips and Tricks

Here are some general guidelines on how to design for Pocket Internet Explorer.

Remember: Screen size is limited on Pocket PCs

You should design your applications keeping the small screen size in mind. Though both a vertical and a horizontal scroll bar are available, try to fit all your information onto one page.

Resolution of Pocket Internet Explorer Is and Is NOT 240x320

All Pocket PCs have a screen resolution of 240x320. Although the user interface of Pocket PC defines two areas that cannot be used for content in the browser:

  • the Menu bar on the bottom of the screen
  • the Caption bar on the top of the screen

Both bars take 26 pixels space off the vertical resolution. Therefore, if you design pages for Pocket PC that fit on one page, your page must not exceed 240x268. Once your page exceeds 268 vertical pixels the vertical scroll bar will appear and reduces your screen width to 229 pixels. The user can decide to switch off the address bar giving you additional 23 pixels. Since there is no way for a page to determine the state of the address bar, you should not count on it.

When utilizing the full 240 pixels, the horizontal scroll bar will appear, too, because Pocket Internet Explorer needs to provide a way to reveal the remaining 11 pixels with the vertical scroll bar.

If you design your page in a way that does not require a horizontal scroll bar you gain 11 additional vertical pixels. The following Figure shows the pixel extensions of the Pocket Internet Explorer screen components:

Offline Browsing: Important Scenario for Pocket Internet Explorer

Hyperlinks are not available offline except when the user specifies a link-depth greater than one in a Mobile Favorites. Therefore use remote hyperlinks sparingly and present only the most important information to the user. You should design your pages to work well in disconnected mode. A link depth of n means "download the selected page and any page I can get to in n links from that page."

Pages Cannot Be Changed Dynamically

There is no support for DHTML in Pocket Internet Explorer and therefore all of the content on the page is static. You can use XML and XSL as well as JScript and the document.write method to do some dynamic updating of pages.

More Features are Not Always Better

Implement only those features that are absolutely necessary. More can overload the device unnecessarily.

Adding Space with GIF Files

Sometimes you will find that you cannot get the amount of space you want between elements on your page. If this concerns you, you can use a transparent image to wedge extra space between them. Simply build a 1x1 pixel transparent GIF and embed it into the document within an <IMG> tag. Use the "width" and "height" attributes to give it the required dimensions.

One reason to use a "spacer" GIF is to force a line break after a heading. If you have, for example, an article headline immediately followed by an attribution line, you may not want the extra space that heading tags or a <BR> tag adds. You can force a line break and add a couple of pixels of space by simply inserting the same transparent GIF as mentioned above in the text. Also, specify a width of 240 pixels and a height of 1 pixel.

Text in Images

Text in images is a handy way to decorate a page with a title in a font that Pocket Internet Explorer HTML does not support.

If you do choose to place text in an image, you will generally want to use a typeface that was designed specifically for computer screens. There are several excellent one-bit friendly fonts from which to choose. Verdana was designed to render well on bitmapped displays at all resolutions. This naturally makes it quite suitable for use on mobile devices.

But remember, any text you put in bitmaps will not be indexed by any of the current search engines like AltaVista or Yahoo.

Office 2000 as Web Authoring Tool

Of the four Office applications: Access 2000, Excel 2000, PowerPoint 2000, and Word 2000 only PowerPoint 2000 does a browser version check prior to displaying the page. It delivers up a page that tells the user that this may not correctly display in their browser. In most cases the simplest documents generated by these programs will display correctly, however, implementing slightly more complex features will typically generate issues.

In short, it's wisest not use Office 2000 to author pages for Pocket Internet Explorer.

Best Practices for E-Commerce

Personalization Pages

Personalization of content has had a dramatic impact on the way people use the Web. Allowing users to choose the content they wish to include in their page from your Web site will greatly enhance your visitors' experiences. It is likely that you already offer this feature on your Web site. Obvious uses include a portfolio of stocks, a table of cities for basic weather information, etc. Plus, since the offline content is originally stored on the user's desktop, cookies are supported.

For Pocket Internet Explorer personalization to enhance the user experience, add special Pocket Internet Explorer profiles to your offering. But remember, a user might want two profiles: one for the Pocket PC and on for the desktop.

Advertisements

It is now accepted practice to place advertisements on Web pages. For some companies, the sale of such space is the principal revenue source for the Web site. However, because the content may be viewed offline in Pocket Internet Explorer, there is no completely accurate way for a Web site owner to track the number of advertisement impressions made.

Many times banner advertisements are also link to a company's home page. This is usually not helpful to the user because the company's home page is not viewable offline except when the Pocket PC user has opted for a link-depth greater than one during synchronization and "Follow links outside of this page's Web site" is selected. Remember, the important part of your page should be the valuable content for the user, not the advertisement.

A Western reader's eye tends to move from the upper left-hand corner of a screen to the lower right. Thus, you should place the most important information such as a heading or company icon in the upper left hand corner. Place all the relevant information and links toward the bottom of the page.

Typically the first two or three lines of a page may include some informative text about the company or content provider. This area can be used very effectively to communicate to the customer regarding the company and further build brand loyalty. This area can also include a small advertisement.

Design Forms with a 240 Pixels Width in Mind

As I mentioned in the HTML tags section above, the maximum width of a Pocket Internet Explorer page should be 240 pixels. Form elements like <INPUT TYPE="TEXT"> or <INPUT TYPE="BUTTON"> are not shrunken by the Fit to window option of Pocket Internet Explorer and will never be rendered wider than the width of the screen. For your e-commerce customers it is especially annoying if they have to scroll horizontally to enter their credit card information or deal with your shopping cart.

Designing E-commerce Forms

Always have the 240-pixel width in mind when you are designing forms. Place the input controls in separate lines instead of going horizontally. Limit your fields to the small screen area. If you want to show a picture of the product selected by the customer, choose to put the description below the picture not next to it.

Best Practices for Information Sites

Beside the best practices for e-commerce sites there are some additional points you should think about as you are designing your information site:

Information sites are perfect for Offline Browsing

Avoid everything that is not supported offline, like form fields, large bitmaps, animated GIFs or excessive advertisements. Many news sites or information sites ask for a short feedback on a given article. Since this requires a post back to the server an offline viewer will not get the same experience. You can add a mailto link on the page since Pocket PC supports sending e-mail messages offline.

Concentrate on the essential content

Do not show any links that Pocket Internet Explorer user are not likely to view anyway like videos, audio links or large picture slide shows.

Use Table ofContent Pages Over Continuously-Linked Pages

Many news and information sites create short pages of the articles and point to the continuation of the article with a "click here to read more…" link at the bottom of the page. This practice is not very useful for Pocket Internet Explorer in an offline scenario. Most users do not change their link-depth in the Mobile Favorites very often. In fact they keep the default (zero). Later on the road they try to click on such a link to read on the article but get a "page not available" error. Even if he or she would like to read the full article it is very hard for some users to figure out what link-depth they actually should use.

To avoid this scenario create a short introductory page containing the links to all pages of the article. This still requires the user to change to a link-depth of "one" but makes it more obvious for him. You can even add a hint on that page, telling the user what link-depth he should enter in their synchronization options.

Scripting

With the increasing importance of rich Web applications, client-side scripting is becoming more and more popular.

Pocket Internet Explorer supports client side JavaScript 1.1 (ECMA-262). VBScript is not supported. As a general rule of thumb, Pocket Internet Explorer supports the Internet Explorer 3.02 DOM (Document Object Model).

There are some issues with scripting in Pocket Internet Explorer that I want to point out:

Scripting Errors are Off by Default

Syntax errors in JScript, missing objects, or other causes of JScript errors are ignored on Pocket Internet Explorer. The script terminates without a message. Switch on the error messages by adding the following registry key:

[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main]
"ShowScriptErrors"=dword:00000001

JScript in Pocket Internet Explorer is Not Case Sensitive

JScript in Internet Explorer versioins 4.0 and 5.0 is case sensitive. You may find yourself wondering why one script runs fine on Pocket Internet Explorer but causes errors with Internet Explorer on the desktop, the script might be written accessing object properties, methods, events or collections with the incorrect case. Authors are strongly encouraged to use the correct case when writing any JScripting to ensure compatibility with a wider range of browsers, and to facilitate debugging.

No window.open Function

Pocket Internet Explorer does not support multiple windows. Calls to window.open will fail silently (if script errors are off). Attempts to use <A HREF="…" TARGET="_new"(or any other non-existent frame)> will not invoke a new browser window.

Find the Complete Document Object Model Specification

You can download the very detailed Pocket Internet Explorer DOM specification at:

http://www.microsoft.com/mobile/developer/default.asp

For documentation on the JScript engine that's included in Pocket Internet Explorer, see the JScript documentation at: http://msdn.microsoft.com/scripting/

There's also a good chart about what's not supported at:

Pocket Internet Explorer Scripting Engine Has Same Capabilities as JScript Engine 3.0

For more details on the capabilities of the scripting engine check out the chart at:

http://msdn.microsoft.com/scripting/default.htm?/scripting/jscript/doc/jsoriversioninformation.htm

<OBJECT> Tag Limitations

Pocket Internet Explorer supports Active X controls and allows the methods and properties to be scripted. However there are a few limitations compared to the desktop implementation:

Controls Cannot Be Installed On-the-Fly

Internet Explorer for the desktop supports downloading and installing ActiveX controls. This is not supported on Pocket PC. However, ActiveX controls that already reside on the Pocket PC can be referenced with the <OBJECT> tag in pages.

ActiveX Controls Not Affected by Fit to Screen Option

Even if Fit to screen is selected and the ActiveX control is resized to fit into the screen area, the content of the control will not be resized. If you are creating ActiveX controls to be used in Web pages in Pocket Internet Explorer, design the client area no wider than 240 pixels.

Java Applets Are Not Supported

There is no Java Virtual Machine on Pocket PC, therefore Java applets are not supported.

Security

Pocket Internet Explorer supports all common security schemes:

  • SSL 2.0, SSL 3.0 and Server Gate Cryptography (SGC).
  • By default Pocket Internet Explorer supports 40-bit security encryption.A 128-bit enhancement pack is available for download at: http://www.microsoft.com/pocketpc/downloads/ssl128.asp
  • NTLM authentication as well as clear text authentication.

XML Support

One of the newest components of Pocket Internet Explorer is the MSXML.DLL, which is an Internet Explorer 5.0 component available on Pocket PC.

This component enables the Pocket Internet Explorer to display XML in the standard XML syntax colored view, which you may know from thedesktop. It also allows you to use XSL (Extensible Stylesheet Language) to display XML data in a more user friendly way.

Differences Between MSXML in Microsoft Internet Explorer 5

There are few differences between the version of Microsoft XML for Pocket PC and that exposed in Microsoft Internet Explorer 5. However, there are some features that are not supported on Pocket PC.

No backward compatibility support for the Internet Explorer4 MSXML DOM.

MSXML for Microsoft Internet Explorer 5 includes functionality which mimics the XML DOM exposed in Microsoft Internet Explorer 4. To reduce the memory requirements and ROM size MSXML for Pocket PC does not include this functionality.

No support for Data Binding.

Neither Pocket Internet Explorer, nor MSXML for Pocket PC support Data Binding. Support for Data Binding requires a richer base of HTML layout support.

Watch out for CSS attributes.

Remember, Pocket Internet Explorer does not support cascading style sheets (CSS). Look closely at the XSL transforms you create and make sure that they do not include CSS elements or attributes. Most notably, watch for the use of the STYLE attribute on any HTML tag.

Interfaces of the XML Parser

You can also use the Microsoft XML Parser for your C++ or Visual Basic applications.

How to Use the XMLDOM in eMbedded Visual C++

To access the XMLDOM within an eMbedded Visual C++ application you can include the <MSXML.H> file and add the following lines to the header of your source code:

#include <objsafe.h>
namespace MSXML
{
#include <msxml.h>
}
#include <ocidl.h>
Here is a small example for a XML Code: 
MSXML::IXMLDOMDocument         *iXMLDoc     = NULL;
MSXML::IXMLDOMParseError              *pParsingErr = NULL;
MSXML::IXMLDOMElement          *iXMLElm     = NULL;
MSXML::IXMLDOMNodeList         *iXMLChild   = NULL;
MSXML::IXMLDOMNode                    *iXMLItem    = NULL;
HRESULT  hr;
short tEmpty;
BSTR bStr;
 
hr = CoInitializeEx(NULL,COINIT_MULTITHREADED);
if(!SUCCEEDED(hr))
        return 0;
hr = CoCreateInstance (MSXML::CLSID_DOMDocument, NULL,
        CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER,
        MSXML::IID_IXMLDOMDocument, (LPVOID *)&iXMLDoc);
if(iXMLDoc)
{
   iXMLDoc->put_async(VARIANT_FALSE);
 
   // Pocket PC workaround:
   // Remove document safety options
   IObjectSafety *pSafety;
   DWORD dwSupported, dwEnabled;
 
   if ( SUCCEEDED(iXMLDoc->QueryInterface(
                  IID_IObjectSafety, (void**)&pSafety)))
   {
      pSafety->GetInterfaceSafetyOptions(
               MSXML::IID_IXMLDOMDocument, &dwSupported, &dwEnabled );
      pSafety->SetInterfaceSafetyOptions(
               MSXML::IID_IXMLDOMDocument, dwSupported, 0 );
   }
 
   iXMLDoc->loadXML(L"<customer><first_name>Joe</first_name>"        
            L"<last_name>Smith</last_name></customer>",      
           &tEmpty);
   iXMLDoc->get_documentElement(&iXMLElm);
   iXMLElm->get_childNodes(&iXMLChild);
   iXMLChild->get_item(1,&iXMLItem);
   iXMLItem->get_xml(&bStr);
   MessageBox(NULL,bStr,TEXT("Caption"),MB_OK);
}

Please take a special look at the "Pocket PC workaround". This three lines are necessary for the MSXML.DLL to Load the XML source. If you do not add those lines, I found that the XMLDLL even tends to lockup.

How to use the XMLDOM in eMbedded Visual Basic

Using the XMLDOM in Visual Basic is just as easy. Here is the same little code snippet showing how to parse XML in eMbedded Visual Basic:

Dim xmlDoc
Dim currNode
Dim xml
Set xmlDoc = CreateObject("microsoft.xmldom")
xml = "<customer><first_name>Joe</first_name>"
xml = xml & "<last_name>Smith</last_name></customer>"
xmlDoc.loadXML (xml)
Set currNode = xmlDoc.documentElement.childNodes.item(1)
MsgBox currNode.xml
The message box will show: 
<last_name>Smith</last_name> 

How to Use the XMLDOM in JavaScript

You can even access the XMLDOM using client-side JavaScript 1.1. Here is the same code using JScript:

<XML ID="Contacts">
<CONTACTS>
    <CONTACT>
        <NAME>Stephanie Smith</NAME>
        <BIRTHDATE>1971-07-01</BIRTHDATE>
        <EMAIL>ssmith@abcdef.com</EMAIL>
        <PHONE>(425) 111-1111</PHONE>
    </CONTACT>
    <CONTACT>
        <NAME> Bill Williams</NAME>
        <BIRTHDATE>1968-09-17</BIRTHDATE>
        <EMAIL>billw@abcdef.com</EMAIL>
        <PHONE>(425) 111-1111</PHONE>
    </CONTACT>
    <CONTACT>
        <NAME>Christopher Jones</NAME>
        <BIRTHDATE>1999-09-08</BIRTHDATE>
        <EMAIL>cjones@abcdef.com</EMAIL>
        <PHONE>(425) 111-1111</PHONE>
    </CONTACT>
</CONTACTS>
</XML>
 
function showPhone()
{
    var root = Contacts.documentElement;
    var selectedElems = 
      root.selectNodes("CONTACT[NAME='Bill Williams']");
    var billElem = selectedElems.item(0);
    var phone = 
      billElem.childNodes.item(3).nodeTypedValue;
 
    alert("Bill Williams phone number is " + phone);
}

Summary

Pocket Internet Explorer is a powerful Web browser capable of nearly all tasks the modern Web has to offer. If you spend a little time while designing your pages to optimize it for Pocket Internet Explorer you may address a whole now customer base as your Internet audience.

XML is gaining more and more importance on the Web. The XML support found in Pocket Internet Explorer is definitively one of its biggest features. Together with client side JScript you can create powerful Web applications that take full advantage of the mobile Pocket PC.

For More Information

For the latest information on Pocket PC:

http://www.microsoft.com/mobile/pocketpc/

More information on scripting:

http://msdn.microsoft.com/scripting/

http://home.netscape.com/eng/mozilla/3.0/handbook/javascript/

http://helpmaster.com/htmlhelp/javascript/popecma262.htm

http://www.mountaindragon.com/javascript/resources.htm

More information about XML:

http://msdn.microsoft.com/xml/