Problem with org.apache.xpath.XPathAPI, org.apache.xpath.NodeSet 2003-02-18 - By Werner Koch
Hi all,
I have a problem using the XPathAPI class, and at the moment, I am completely stumped (didn't yet consult the sources too much). Here is my case: - I run transformations with xalan (file based xml/xslt). - I have a sorting/restricting problem, so I wrote a small java extension. - When I base my sorting of the nodeset I get from the extension call by directly navigating the DOM, then I get the expected results (even here with a problem when I cut away nodes of org.apache.xpath.NodeSet with removeElementAt, because the nodeset in the XSLT will still show the original, larger number; I could resolve this by returning a new NodeSet where I just copied the wanted Nodes into). - Because of generalization issues, I decided to base my sorting on a value in my nodeset selected by an XPath, which I also receive from the call in the stylesheeet. So I get a NodeSet from the stylesheet, take the Node from this I like to handle, and try to XPathAPI.selectSingleNode(aNode, aPath) select the wanted information needed for my sort. This unfortunately never works for me, because the NodeIterator inside this call to XPathAPI stumbles over a NullPointerException when it tries to return the first node by executing nextNode(). This holds even true when I execute an XPath query of '.' on an Element Node with a at least one TextNode attached.
Node result = XPathAPI.selectSingleNode(nodeI, ".").nextNode();
As I said, the nodeI is an Element node with a Text Node attached (I do something like my-node-set.item(i) to set nodeI, where my-node-set is the one I got from the stylesheet).
If I try out other XPaths than '.', I even get 'Unknown XPath errors', so I think, I am somehow completely off track.
I use Xalan 2.4.1 and Java 1.3.1_06-b01
Every help is very much appreciated!
Unfortunately, I mistakenly posted __THIS__ already on the xalan developers list, on which I am even not subscribed, sorry for that.
Best regards, Werner
Innovation Process Technology Inc. Werner Koch Aarbergergasse 56 CH - 3011 Bern
werner.koch@(protected)
Phone: +41 31 311 12 23 Fax: +41 31 311 12 24 Mobile: +41 78 648 56 44
http://www.ipt.ch
|
|