Dimitri Glazkov's html-xpath provides DOM level 3 XPath features for M$IE. I found it first from Sarissa docs which mentions it as complement to Sarissa.
Great, is it? But it still have some limits:
1. It only works for html document of current window!
Yes, M$IE xml DOM provides selectNodes/selectSingleNode, but these methods can not return number/boolean/string value. So I'd rather insist on more full-desiged dom3xpath standard api.
2. It maybe have some 'unsolvable' performance issues according to the author.
3. Due to short of getter/setter, it doesn't provide read-only properties as spec recommends, instead of result.xxxValue, it use java-style binding: result.getXxxValue(). This brings some inconvenient and trivial work when migrate codes from other implementation (ie. Mozilla).
I plan to overcome the 1st (in some degree, the 2nd) limit. Here is my work in process.
Appendix: my letter to Dimitri Glazkov
Great work! I want to use in in my product.
But it seems that u have no plan to improve it? What are "unsolvable performance issues"? If it is because of recursive calls of loadNode(), i think such codes can be dropped.
My initial requirement is XPath api for any document, not only html. So i modified some codes. After reading the codes, i have a question, why u must call selectNodes and transformNode method from document(what your _XPathMsxmlDocumentHelper.getDOM returns), every node have these two methods, so why not call result._contextNode.selectNodes or result._contextNode.transformNode ? And in such calling, u don't need to adjust expression or loadDocument at all.
Maybe I missed sth important :)