sriasarch 0 Newbie Poster

Hi,
I am getting parsing error in xpath transformation


String s = "if (/blah/text()!='') then blah/text() else ''";
XPathExpression expression = xpath.compile(s);

Object o = expression.evaluate(target, XPathConstants.NODESET);

I am using normal core java and xml packages to parse
import javax.xml.parsers.
DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathFactory;

import org.w3c.dom.Document;
import org.w3c.dom.Node;

import org.w3c.dom.NodeList;


Exception:
Exception in thread "main" javax.xml.transform.TransformerException: Could not find function: if
at com.sun.org.apache.xpath.internal.compiler.XPathParser.error(XPathParser.java:602)

at com.sun.org.apache.xpath.internal.compiler.XPathParser.FunctionCall(XPathParser.java:1449)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.PrimaryExpr(XPathParser.java:1388)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.FilterExpr(XPathParser.java:1287)

at com.sun.org.apache.xpath.internal.compiler.XPathParser.PathExpr(XPathParser.java:1220)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.UnionExpr(XPathParser.java:1178)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.UnaryExpr(XPathParser.java:1084)

at com.sun.org.apache.xpath.internal.compiler.XPathParser.MultiplicativeExpr(XPathParser.java:1005)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.AdditiveExpr(XPathParser.java:947)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.RelationalExpr(XPathParser.java:872)

at com.sun.org.apache.xpath.internal.compiler.XPathParser.EqualityExpr(XPathParser.java:812)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.AndExpr(XPathParser.java:776)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.OrExpr(XPathParser.java:749)

at com.sun.org.apache.xpath.internal.compiler.XPathParser.Expr(XPathParser.java:732)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.initXPath(XPathParser.java:125)
at com.sun.org.apache.xpath.internal.XPath.<init>(XPath.java:162)

at com.sun.org.apache.xpath.internal.XPath.<init>(XPath.java:198)
at com.sun.org.apache.xpath.internal.jaxp.XPathImpl.compile(XPathImpl.java:394)
at demo.hw.client.XPathTest.xpathTest(XPathTest.java:35)

at demo.hw.client.XPathTest.main(XPathTest.java:64)
--------------- linked to ------------------
javax.xml.xpath.XPathExpressionException
at com.sun.org.apache.xpath.internal.jaxp.XPathImpl.compile(XPathImpl.java:402)

at demo.hw.client.XPathTest.xpathTest(XPathTest.java:35)
at demo.hw.client.XPathTest.main(XPathTest.java:64)
Caused by: javax.xml.transform.TransformerException: Could not find function: if
at com.sun.org.apache.xpath.internal.compiler.XPathParser.error(XPathParser.java:602)

at com.sun.org.apache.xpath.internal.compiler.XPathParser.FunctionCall(XPathParser.java:1449)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.PrimaryExpr(XPathParser.java:1388)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.FilterExpr(XPathParser.java:1287)

at com.sun.org.apache.xpath.internal.compiler.XPathParser.PathExpr(XPathParser.java:1220)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.UnionExpr(XPathParser.java:1178)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.UnaryExpr(XPathParser.java:1084)

at com.sun.org.apache.xpath.internal.compiler.XPathParser.MultiplicativeExpr(XPathParser.java:1005)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.AdditiveExpr(XPathParser.java:947)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.RelationalExpr(XPathParser.java:872)

at com.sun.org.apache.xpath.internal.compiler.XPathParser.EqualityExpr(XPathParser.java:812)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.AndExpr(XPathParser.java:776)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.OrExpr(XPathParser.java:749)

at com.sun.org.apache.xpath.internal.compiler.XPathParser.Expr(XPathParser.java:732)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.initXPath(XPathParser.java:125)
at com.sun.org.apache.xpath.internal.XPath.<init>(XPath.java:162)

at com.sun.org.apache.xpath.internal.XPath.<init>(XPath.java:198)
at com.sun.org.apache.xpath.internal.jaxp.XPathImpl.compile(XPathImpl.java:394)
... 2 more


Thanks
Sri