В vanilla XQuery 1.0 нет стандартного способа загрузки CSV-файла, хотя большинство реализаций имеют функцию разбора текста или аналогичную. Если нет, то содержимое файла может быть передано как параметр.
Файл CSV можно проанализировать с помощью функции токенизации:
declare variable $names = tokenize(unparsed-text("banned.csv"), ",")
И фактический запрос довольно прост. Предполагая, что ваш документ является фрагментом, содержащим только список <user />
узлов, тогда запрос просто
doc("users.xml")/user[not(name=$names)]
Если, однако, файл XML содержит много других данных, то вам могут быть полезны шаблоны XSLT.