Different behaviour between Enketo and ODK Collect with straight quotes in select_from_file questions

So sorry, this is probably the messiest area of ODK. The instance syntax has been part of the form specification since its very beginnings. It's really general -- you can use it to get values from any kind of list of values that can be represented: choices from the choice list, attached CSVs, attached geoJSON, etc. You can also filter the list in many different ways.

pulldata was introduced to Collect as a way to get better performance for the common case of getting a single value out of a CSV by doing an exact match between two values. It can be used in place of instance expressions that have an expression in square brackets like "column = ${some_form_value}". In Collect, it uses a database representation of the CSV data and so can be used with larger CSVs.

In Enketo, pulldata was introduced as a shortcut to the corresponding instance expression. Because pulldata is more constrained than instance, Enketo uses the browser's built-in, optimized evaluator directly to evaluate it. On the other hand, instance expressions not from pulldata use a wrapper on that evaluator. The only thing I can think of to explain the behavior you're experiencing at the moment is that apostrophes are causing a problem for the browser evaluator.

It has been our dream for a long time to truly make pulldata truly identical to its corresponding instance expression. This will be the case in web forms and we're getting close to being able to do that in Collect as well.

The only known difference is performance. Anything else you should definitely let us know about.