Expressions in DFDL are not just XPath expressions. The meaning of expressions is in some ways different.
In XPath it is legal to write a/b/nonsense where nonsense does not match any element name in the schema. In DFDL this should be a Schema Definition Error.
In XPath it is legal to write expressions that are queries which return many nodes.
In DFDL expressions must return exactly one thing - a simple type instance, or a single Node.
Implementing this, but still using our existing XPath implementation requires that we preprocess the expressions, wrapping every sub-expression with a function call that checks that only one value is produced.
Similar to fn:exactly-one in xpath, but causes a schema definition error if zero or more than one node are returned. We will want to use a daffodil-specific extension function daf:one(...) (or some other name) which has this behavior.
At the same time we need to check that paths are meaningful. I.e., if a path says a/b/c, that inside element a it is possible to have a b, and inside b it is possible to have a c. At the same time one should check that the types of expressions are correct (the a/b/c checking is effectively type checking.. of complex types).