You are viewing a plain text version of this content. The canonical link for it is here.
Posted to j-users@xalan.apache.org by Dhananjay Nene <dn...@yahoo.com> on 2003/01/22 08:07:24 UTC

Help - newbie : variable evaluation within xpath expression evaluation

Hello,

I am attempting to evaluate xpath on a dom and am currently using the
w3c api to do so. I am attempting perform xpath evaluation using apis 
for the first time ... so my code may need some optimisation. 

I wish to run almost similar xpath expressions repeatedly except for a 
few changing values in the expression which I embed in the XPATH 
expression string using $variable syntax. Subsequently I want to 
continuously reevaluate the expression repeatedly for differing values 
of $variable.

The current code look somewhat like following (shortened and cleaned up 
for brevity)

public void foo(String xpath, File fileToOpen)
{
  DocumentBuilderFactory docBuilderFactory = 
    DocumentBuilderFactory.newInstance();
  DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
  Document doc = docBuilder.parse(fileToOpen);
  XPathEvaluator evaluator = new XPathEvaluatorImpl(doc);
  XPathNSResolver resolver = evaluator.createNSResolver(doc);
  XPathExpression = evaluator.createExpression(xpath,resolver);
  XPathResult result = (XPathResult)expr.evaluate(
    doc, XPathResult.UNORDERED_NODE_ITERATOR_TYPE, null);
  Node resultNode = null;
  while ((resultNode = result.iterateNext()) != null)
  { ... blah ... }
}

When I embed the $variable (e.g. the XPath looks like 
"/Foo1/Foo2[Foo3=$variable]", I get the following exception

Variable not resolvable: variable at
org.apache.xpath.axes.PredicatedNodeTest.acceptNode(PredicatedNodeTest.java:449)
.....

I am certain the xpath engine expects me to supply the value for 
variable, but I do not know how to do so. Can someone help me out ?

My feeling is that this objective may not be solved using the 
javax.xml.transform + org.w3c apis, and I shall need to resort to 
org.apache.xalan / org.apache.xpath apis. I shall welcome any 
suggestions using that approach also.

Dhananjay

__________________________________________________
Do you Yahoo!?
Yahoo! Mail Plus - Powerful. Affordable. Sign up now.
http://mailplus.yahoo.com