[xquery-talk] Whitespace problem in CSV-like output
Yves Forkl
Y.Forkl at srz.de
Fri Oct 17 16:12:21 PDT 2008
Hi,
from a very simple XML input, I would like to create a CSV-like output,
putting each record (as I see them) in a line of its own, with its
fields separated by some delimiter like a semicolon.
It works quite well, except that a space gets inserted at the front of
each line starting from the second line in the output.
My demo input is:
<?xml version='1.0'?>
<list>
<entry>
<property1>A</property1>
<property2>33</property2>
<quantity>1,5</quantity>
</entry>
<entry>
<property1>A</property1>
<property2>33</property2>
<quantity>0,5</quantity>
</entry>
<entry>
<property1>B</property1>
<property2>22</property2>
<quantity>0,5</quantity>
</entry>
</list>
My XQuery file has:
declare namespace saxon="http://saxon.sf.net/";
declare option saxon:output "method=text";
let $entries := /list/entry
for $property1 in distinct-values($entries/property1),
$property2 in distinct-values($entries[property1 =
$property1]/property2)
let $selected_entries := $entries[property1 = $property1 and
property2 = $property2]
order by $property1, $property2
return(
concat(
string-join(
($property1, $property2,
replace(xs:string(
sum(for $quantity in $selected_entries/quantity
return xs:decimal(replace($quantity, ",", ".")))),
"\.",
",")),
";"),
" "))
The result as obtained with Saxon 8.8.0.4J is:
A;33;2
B;22;0,5
It is the space at the beginning of the second line that I can't get
away with. Can you explain what I am doing wrong here and maybe suggest
a solution?
(Another question: Within my "quantity" elements, I use the German
decimal separator which is a comma. Is there a more elegant way than
translating it to a dot and back, like above, when summing up the values
found in this element?)
Yves
More information about the talk
mailing list