XQuery добавляет пробел, и я не понимаю, почему. У меня есть следующий простой запрос:Почему XQuery добавляет дополнительное пространство?
declare option saxon:output "method=text";
for $i in 1 to 10
return concat(".", $i, "	", 100, "
", ".")
Я побежал с Saxon (SaxonEE9-5-1-8J и SaxonHE9-5-1-8J):
java net.sf.saxon.Query -q:query.xq -o:result.txt
В результате получается следующее:
.1 100
. .2 100
. .3 100
. .4 100
. .5 100
. .6 100
. .7 100
. .8 100
. .9 100
. .10 100
.
Мой вопрос возникает из-за наличия дополнительного пространства между точками. Первая строка в порядке, но следующие строки (от 2 до 10) имеют это пространство, и я не понимаю, почему. То, что мы видим как пробелы между цифрами, фактически является таблицей, вставленной ссылкой на символ.
Не могли бы вы рассказать мне об этом поведении?
PS: Я добавил саксон как тег для вопроса, даже если вопрос не является специфическим для Саксона.
Ваше лучшее объяснение! Вы также можете удалить внутренний 'fn: concat'. – adamretter
Да, выставляя явно '$ i' и' 100' для строки с 'xs: string' – lkuty
Не совсем корректно. Если запрос вернул последовательность текстовых узлов, они будут объединены без пробелов. Но он возвращает последовательность атомных значений (более конкретно, строки), а атомные значения - разделяемое пространство вывода. Например, запрос (от 1 до 3) выводит «1 2 3», а не «123». –