I know how to select an element like so:
$table/foo
However how do I do this if the element name is stored as a variable. For example:
let $x = "foo"
$table/[$x]
I know how do this if it was a property from: How to select an attribute by a variable in xquery?
No, the predicate
[name() = 'foo/bar/hat']
would not select anything, becausefoo/bar/hat
is a path expression, not an element name. Variables in XPath hold values, not expressions or expression fragments - it's not like a shellscript (or other macro language) where variables are expanded and the expanded expression is then re-parsed.XQuery does not have any general capability for constructing an expression dynamically as a string and then evaluating it. Many products have extension functions to do this, often called xx:eval() or xx:evaluate(). XSLT 3.0 has an xsl:evaluate instruction.
This is nearly identical to the answer for the question How to select an attribute by a variable in xquery? but instead of using the attribute selector
@*
, you would use the element selector,*
(orelement()
):