Description
When an XPath expression has whitespace between "derived-from-or-self" and the following bracket, there is an error occurring during parsing:
javax.xml.transform.TransformerException: Could not find function: derived-from-or-self
at com.sun.org.apache.xpath.internal.compiler.XPathParser.error(XPathParser.java:612)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.FunctionCall(XPathParser.java:1509)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.PrimaryExpr(XPathParser.java:1448)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.FilterExpr(XPathParser.java:1347)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.PathExpr(XPathParser.java:1280)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.UnionExpr(XPathParser.java:1238)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.UnaryExpr(XPathParser.java:1144)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.MultiplicativeExpr(XPathParser.java:1065)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.AdditiveExpr(XPathParser.java:1007)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.RelationalExpr(XPathParser.java:932)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.EqualityExpr(XPathParser.java:872)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.AndExpr(XPathParser.java:836)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.OrExpr(XPathParser.java:809)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.Expr(XPathParser.java:792)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.initXPath(XPathParser.java:131)
at com.sun.org.apache.xpath.internal.XPath.<init>(XPath.java:180)
at com.sun.org.apache.xpath.internal.XPath.<init>(XPath.java:268)
at com.sun.org.apache.xpath.internal.jaxp.XPathImpl.compile(XPathImpl.java:392)
at org.opendaylight.yangtools.yang.parser.stmt.rfc6020.Utils.parseXPath(Utils.java:133)
at org.opendaylight.yangtools.yang.parser.stmt.rfc6020.WhenStatementImpl$Definition.parseArgumentValue(WhenStatementImpl.java:44)
at org.opendaylight.yangtools.yang.parser.stmt.rfc6020.WhenStatementImpl$Definition.parseArgumentValue(WhenStatementImpl.java:35)
at org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementDefinitionContext.parseArgumentValue(StatementDefinitionContext.java:44)
at org.opendaylight.yangtools.yang.parser.stmt.reactor.SubstatementContext.<init>(SubstatementContext.java:91)
This is because the YANG_XPATH_FUNCTIONS_PATTERN in the Utils class does not allow whitespace before the bracket.
But if I look in the XPath Recommendation https://www.w3.org/TR/1999/REC-xpath-19991116/ it says at the end of section 1: "Whitespace can be freely used between tokens."
So this is a bug to be fixed in ODL.