Okay, I have found the problem.
xenith.js calls 'get_template_xml.php' with the USER-FILES pathname. No problem with that.
What I hadn't noticed was the very last line of 'get_template_xml.php' which also returns a 'Not found!' message. It is this that is actually being returned.
It is returned because, as mentioned our USER-FILES are held on shared storage - that is USER-FILES is a symlink off to another directory. But 'get_template_xml.php' compares that directory name against the path it is given in xenith.js, and they aren't the same.
The browser log shows (after modifying get_template_xml.php to print the pathnames):
Uncaught Error: Invalid XML: Not found! Realpath is: /mnt/share-1/xerte/USER-FILES/762-jhorne-Nottingham/preview.xml Full unsafe path is: /var/www/html/xerte-3.12/USER-FILES/762-jhorne-Nottingham/preview.xml
I suspect that if I copied my own USER-FILES onto the server local disk rather than using the share, then it would work (no share/symlink involved)