Changes

Jump to navigation Jump to search
848 bytes added ,  16:18, 11 February 2017
=Conventions=
All functions in this module are assigned to the {{Code|<code><nowiki>http://basex.org/modules/csv}} </nowiki></code> namespace, which is statically bound to the {{Code|csv}} prefix.<br/>All errors are assigned to the {{Code|<code><nowiki>http://basex.org/errors}} </nowiki></code> namespace, which is statically bound to the {{Code|bxerr}} prefix.
==Conversion==
==Options==
The {{Mark|Updated with Version 8.6}}: improved Excel compatibility In the following table, all available options are available:listed. The Excel column indicates what are the preferred options for data that is to be imported, or has been exported from Excel.
{| class="wikitable sortable" width="100%"
! Allowed
! Default
! Excel
|- valign="top"
| {{Code|separator}}
| Defines the character which separates the entries values of a single record in a single line.
| {{Code|comma}}, {{Code|semicolon}}, {{Code|colon}}, {{Code|tab}}, {{Code|space}} or a ''single character''
| {{Code|comma}}
| {{Code|semicolon}}
|- valign="top"
| {{Code|header}}
| {{Code|yes}}, {{Code|no}}
| {{Code|no}}
|
|- valign="top"
| {{Code|format}}
| {{Code|direct}}, {{Code|attributes}}, {{Code|map}}
| {{Code|direct}}
|
|- valign="top"
| {{Code|lax}}
| {{Code|yes}}, {{Code|no}}
| {{Code|yes}}
| {{Code|no}}
|- valign="top"
| {{Code|quotes}}
| Specifies if how quotes should be are parsed in :* Parsing: If the option is enabled, quotes at the input start and end of a value will be treated as control characters. Separators and generated newlines within the quotes will be adopted without change.* Serialization: If the option is enabled, the value will be wrapped with quotes. A quote character in the outputvalue will be encoded according to the rules of the {{Code|backslashes}} option.
| {{Code|yes}}, {{Code|no}}
| {{Code|yes}}
| {{Code|yes}}
|- valign="top"
| {{Code|backslashes}}
| Specifies if how quotes and other characters are escaped by backslashes:* Parsing: If the option is enabled, {{Code|\r}}, {{Code|n}} and {{Code|\t}} will be replaced with the corresponding control characters. All other escaped characters will be adopted as literals (e.g.: {{Code|\"}} → {{Code|"}}). OtherwiseIf the option is disabled, two consecutive quotes will be replaced with a double single quote (unless {{Code|quotes}} is enabled and the quote is encoded by the first or last character of a second consecutive quote (value).* Serialization: If the option is enabled, {{Code|\r}}, {{Code|n}}, {{Code|\t}}, {{VersionCode|8.0"}})and the separator character will be encoded with a backslash. If the option is disabled, quotes will be duplicated.
| {{Code|yes}}, {{Code|no}}
| {{Code|no}}
| {{Code|no}}
|}
 
The CSV function signatures provide an {{Code|$options}} argument. Options can either be specified
* as children of an {{Code|<csv:options/>}} element; e.g.:
<pre class="brush:xml">
<csv:options>
<csv:separator value=';'/>
...
</csv:options>
</pre>
* or as map, which contains all key/value pairs:
<pre class="brush:xquery">
{ 'separator': ';', ... }
</pre>
=Functions=
|-
| width='120' | '''Signatures'''
|{{Func|csv:parse|$input as xs:string|document-node(element(csv))}}<br/>{{Func|csv:parse|$input as xs:string, $options as map(xs:string, item())|item()}}
|-
| '''Summary'''
==csv:serialize==
 
{| width='100%'
|-
| width='120' | '''Signatures'''
|{{Func|csv:serialize|$input as node()|xs:string}}<br/>{{Func|csv:serialize|$input as node(), $options as map(xs:string, item())|xs:string}}
|-
| '''Summary'''
<pre class="brush:xquery">
let $text := file:read-text('addressbook.csv')
return csv:parse($text, map { 'header': true() })
</pre>
'''Query:'''
<pre class="brush:xquery">
let $text options := map { 'lax': false() }let $input := file:read-text('some-data.csv')let $options output := { 'lax': 'no' }let $xml :input = > csv:parse($text, $options)let $csv := > csv:serialize($xml, $options)return $text input eq $csvoutput
</pre>
<pre class="brush:xquery">
let $text := "Name;City" || out:nl() || "John;Newton" || out:nl() || "Jack;Oldtown"
let $options :=map { <csv'separator':options> <csv:separator value=';'/>, <csv 'format' :format value='map'/>, <csv: 'header value='yes'/> </csv:options>true()}let $map := return csv:parse($text, $options)return map:serialize($map)
</pre>
'''Result:'''
<pre class="brush:xmlxquery">map { 1: map {
"City": "Newton",
"Name": "John"
},
2: map {
"City": "Oldtown",
"Name": "Jack"
=Changelog=
 
;Version 8.6
 
* Updated: [[#Options|Options]]: improved Excel compatibility
;Version 8.0
The module was introduced with Version 7.7.2.
 
[[Category:XQuery]]
Bureaucrats, editor, reviewer, Administrators
13,550

edits

Navigation menu