Should the client/server interface support the declaration of external variables? Right now, consider an XQuery such as this one (simplified form shown) declare variable *$entry* as xs:anyAtomicType external; return insert node <entry> <title>Copy of { *$entry*//atom:title/text() }</title> { *$entry*/libx:module | *$entry*/libx:package | *$entry*/libx:libapp } </entry> into $feed Suppose "entry" is an element rendered into a blob of XML of 1000 characters and markup. Before we can send above XQuery to the BaseX server, we have to replace all instances of '$entry' with the actual XML (as per the previous discussion that XQJ is deprecated and the client/server interface is the preferred way to communicate with BaseX). This means that we're sending roughly 4x the amount of data (note that $entry is used four times above), just to be able to say "$entry//atom:title/text()". This can easily lead to unexpected performance as queries become more complicated; in addition and more importantly, it makes it really tough to debug the expanded XQuery if there is a need. Why not extend the protocol so that a client can define the external variables in an XQuery first? - Godmar ps: I understand that I could work around this by introducing additional variables with let, as in let $dummy = $entry ... and then using $dummy//atom:title/text() etc. Awkward.