Why am I getting E_NOTIMPL on Windows CE MSXML?

A common error some Windows CE developers hit when using MSXML is that they call into some functionality and they get a not implemented error (E_NOTIMPL=0x80004001) when the CE Docs say the feature is supported.  In particular, people hit this a lot when doing a query (xmlDom.selectNodes(), selectSingleNode(), getElementsByTagName()) or when transforming nodes (xmlDom.transformNode).

The problem is that the CE MSXML is extremely componentized, such that you only get the particular features that you want.  So you may have built an MSXML with the DOM feature only, not the additional features you need to make the above calls work, and hence E_NOTIMPL.  For querying XML, you need to have your image built with SYSGEN_MSXML_XQL.  For transforming nodes, you'll also need SYSGEN_MSXML_XSLT.

This problem is easy to fix if you're an OEM, a little trickier if you're an ISV working with an OEM.  (This problem doesn't affect PocketPC / Smartphone developers in the first place for various reasons.)  See here for information about how you can add system level components to your device.

[Author: John Spaith]