Базовая модель данных XQuery - это последовательность , а не таблица или отношение .Это относится и к result
XQuery.Таким образом, по умолчанию вы получите последовательность, возвращаемую предложением return
.Нет никаких «столбцов» или «таблиц» для возврата по умолчанию.Если вам нужна другая или более «структурированная» структура возврата, отличная от последовательности, вам придется добавить ее самостоятельно.
Самый простой способ получить структурированный результат - создать вывод XML.По этой причине большинство учебных пособий по XQuery начинаются с возврата XML, а не простого текста или чего-либо еще.
Если вам нужна «структура таблицы» в качестве выходных данных, у вас есть разные варианты:
- выведите XML и импортируйте его в другое приложение;
- выведите (X) HTML с таблицами HTML;
- выведите CSV и импортируйте / проанализируйте его с помощью предпочитаемого программного обеспечения для работы с электронными таблицами.
Для вывода XML вы можете использовать следующее:
xquery version "1.0";
<table>
{
for $cust in fn:doc("Customers.xml")/dataroot/Customers
return
<row>
{
$cust/CompanyName, $cust/ContactName
}
</row>
}
</table>
Будет возвращено что-то вроде:
<table>
<row>
<CompanyName>Alfreds Futterkiste</CompanyName>
<ContactName>Maria Anders</ContactName>
</row>
<row>
<CompanyName>Ana Trujillo Emparedados y helados</CompanyName>
<ContactName>Ana Trujillo</ContactName>
</row>
<row>
<CompanyName>Antonio Moreno Taquería</CompanyName>
<ContactName>Antonio Moreno</ContactName>
</row>
<row>
<CompanyName>Around the Horn</CompanyName>
<ContactName>Thomas Hardy</ContactName>
</row>
<row>
<CompanyName>Berglunds snabbköp</CompanyName>
<ContactName>Christina Berglund</ContactName>
</row>
</table>
Для вывода в формате CSV (если быть более точным: последовательность CSV-как строки), вы можете использовать
xquery version "1.0";
for $cust in fn:doc("Customers.xml")/dataroot/Customers
return
concat('"', $cust/CompanyName, '"', ',', '"', $cust/ContactName, '"')
, чтобы получить что-то вроде
"Alfreds Futterkiste","Maria Anders"
"Ana Trujillo Emparedados y helados","Ana Trujillo"
"Antonio Moreno Taquería","Antonio Moreno"
"Around the Horn","Thomas Hardy"
"Berglunds snabbköp","Christina Berglund"
РЕДАКТИРОВАТЬ: Некоторые процессоры XQuery также предлагают встроенную сериализацию CSV.Например, процессор Zorba XQuery включает в себя модуль для анализа / сериализации CSV .