Raman, Thank you very much. This indeed is the cause of my woes. When I use your code to convert from DocumentFragment to Document, the saxon xpath selectPath() call works as expected.
Again thank you for helping. -Tony -----Original Message----- From: Raman Gupta [mailto:[EMAIL PROTECTED] Sent: Tuesday, July 25, 2006 6:11 PM To: dev@xmlbeans.apache.org Cc: user@xmlbeans.apache.org Subject: Re: Help with xmlbeans 2.2.0 Tony Dean wrote: > Hi, I determined that it's not jre dependent. That is I can get it to > fail on 1.4.x or 5.0. I also determined that I can run the > XQueryXPath sample without any problems which performs xpath query > with predicate. So that got me thinking about what is the difference > between the two scenarios: > > (1) my scenario - > I create an XmlObject from scratch as follows: > XmlObject.Factory.newInstance(); > > This actually creates a XmlAnyTypeImpl object with _textsource = > Xobj$DocumentFragXobj. > > When xmlbeans uses the saxon engine in this case since the xmlbeans > engine can't handle predicates, it does so by calling: > Path$SaxonPathImpl$SaxonPathEngine class -> context_node = > Xobj$DocumentFragXobj resultsList = > _saxonXpathImpl.selectPath(context_node) > ... > DOMSource rootNode = new DOMSource(context_node) XpathEvaluator xpe = > new XPathEvaluator() XBeansIndependentContext sc = ... > xpe.setStaticContext(sc) > ... > Variable thisVar = sc.declareVariable("this") > thisVar.setValue(rootNode) > > this throws a classcast exception : > org.apache.xmlbeans.impl.store.Xobj$DocumentFragXobj > > net.sf.saxon.trans.Variable can not properly cast > org.apache.xmlbeans.impl.store.Xobj$DocumentFragXobj object type > > (2) case that works > The underlying XmlAnyTypeImpl _textsource object = Xobj$DocumentXobj, > not Xobj$DocumentFragXobj. This seems to be the issue I describe in this bug: http://issues.apache.org/jira/browse/XMLBEANS-200 Yana explains the reason for the problem in the bug report, but as my last comment indicated I think there are some inconsistencies in how XmlBeans is behaving. As I describe in the bug, I workaround the problem by always calling: if(((XmlObject)input).getDomNode() instanceof DocumentFragment) { input = XmlObject.Factory.parse(((XmlObject)input).getDomNode()); } before doing any Xquery or XSL transformations on an XmlObject with Saxon. Cheers, Raman --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]