[xquery-talk] Whitespace problem in CSV-like output

Yves Forkl Y.Forkl at srz.de
Mon Oct 20 13:00:40 PDT 2008


John Snelson wrote:
> Yves Forkl wrote:
>> It is a bit disappointing to see that XQuery does not offer a simple, 
>> general method to create CSV-type files, at least not in my case.
> 
> What would be simpler than what you have written here?

Well... Maybe an extension function like the one DataDirect XQuery seems 
to offer, as he have learned? :-) Seriously, I was somehow puzzled about 
the complexity of the whitespace problem in the simple task of writing 
out some fields into the lines of a file.


>> NB: While the names of the functions seem to suggest that the line 
>> feed should rather be appended in my:join-records-into-lines than in 
>> my:join-fields-into-record, I don't see any easy way to do this.
> 
> Redefine your functions like this:
> 
> declare function my:join-fields-into-record
>   ( $fields as xs:string*,
>     $delimiter as xs:string ) as xs:string {
>       string-join($fields, $delimiter)
> } ;
> declare function my:join-records-into-lines
>   ( $records as xs:string* ) as xs:string {
>       string-join($records, "
")
> } ;

Sorry for being so terse. I meant: It would be natural to change the 
functions exactly this way, but this will drop the line feed of the last 
line in the output, which would be undesirable. So I prefer to keep the 
functions unchanged, irrespectively of their slightly misleading names 
(or rather use text nodes than functions to get whitespace right).

   Yves


More information about the talk mailing list