Changes

Jump to navigation Jump to search
66 bytes removed ,  12:32, 8 June 2018
no edit summary
=Conventions=
All functions and errors in this module are assigned to the <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><nowiki>http://basex.org/errors</nowiki></code> namespace, which is statically bound to the {{Code|bxerr}} prefix.
==Conversion==
===XML: Direct, Attributes===
If the {{Code|direct}} or {{Code|attributes}} format is chosen, a CSV string is converted to XML as follows:
* The resulting XML document has a {{Code|<csv>}} root element.
===XQuery===
With the {{MarkCode|Introduced with Version 9.0xquery}}: format, CSV records can be are converted to a plain sequence of arrays:
* The resulting value will be a map with a {{Code|records}} and an optional {{Code|names}} key.
* The column names will be available if {{Code|header}} option is set to {{Code|true}}.
The resulting data CSV map can e.g. be accessed as follows:
* <code>$csv?records[5]</code> returns all entries of the 5th record (row)
* <code>$csv?records(2)</code> returns all entries of the 2nd field (column)
* <code>$csv?names?*</code> returns the names of all fields (if available)
* Return string representation enumerated strings for each record '''Queryall records:'''
<pre class="brush:xquery">
for $record at $pos in $csv?records
</pre>
The resulting representation consumes less memory than XML-based formats, and values can be directly accessed without conversion. Thus, it is recommendable for very large inputs and for efficient ad-hoc processing. Before {{Version|9.0}}, a {{Code|map}} format was available, which was now replaced with the more flexible and light-weight {{Code|xquery}} format.
==Options==
* With {{Code|attributes}} conversion, field names are stored in {{Code|name}} attributes
* With {{Code|xquery}} conversion, the input is converted to an XQuery map
| {{Code|direct}}, {{Code|attributes}}, {{Code|mapxquery}}
| {{Code|direct}}
|
==csv:parse==
 
{{Mark|Updated with Version 9.1:}} support for empty sequence.
{| width='100%'
|-
| width='120' | '''Signatures'''
|{{Func|csv:parse|$input string as xs:string?|document-node(elementitem(csv))?}}<br/>{{Func|csv:parse|$input string as xs:string?, $options as map(xs:string, item()*)?|item()?}}
|-
| '''Summary'''
|Converts the CSV data specified by {{Code|$inputstring}} to an XML document or a mapXQuery value. The {{Code|$options}} argument can be used to control the way the input is converted.
|-
| '''Errors'''
|{{Error|BXCS0001parse|#Errors}} the input cannot be parsed.
|}
|-
| width='120' | '''Signatures'''
|{{Func|csv:serialize|$input as nodeitem()?|xs:string}}<br/>{{Func|csv:serialize|$input as nodeitem()?, $options as map(xs:string, item()*)?|xs:string}}
|-
| '''Summary'''
|Serializes the node specified by {{Code|$input}} as CSV data, and returns using the result as specified {{Code|xs:string$options}}, and returns the result as string. Items Values can also be serialized as JSON if CSV with the standard [[Serialization|Serialization Parameter]] feature of XQuery:* The parameter {{Code|method}} is needs to be set to {{Code|csv}}.<br/>The , and* the options presented in this article need to be assigned to the {{Code|$optionscsv}} argument can be used to control the way the input is serializedparameter.
|-
| '''Errors'''
|{{Error|BXCS0002serialize|#Errors}} the input cannot be serialized.
|}
]``
let $options := map { 'format': 'xquery', 'header': true() }
let $data csv := csv:parse($text, $options)
return (
'Distinct values:',
let $records := $data?csv('records') for $name at $pos in $data?csv('names')?* let $values := $records?($pos)
return (
'* ' || $name || ': ' || string-join(distinct-values($values), ', ')
|Description
|-
|{{Code|BXCS0001parse}}
| The input cannot be parsed.
|-
|{{Code|BXCS0002serialize}}
| The node cannot be serialized.
|}
=Changelog=
 
; Version 9.1
* Updated: [[#csv:parse|csv:parse]] can be called with empty sequence.
;Version 9.0
* Added: {{Code|xquery}} option
* Removed: {{Code|map}} option
* Updated: error codes updated; errors now use the module namespace
;Version 8.6
Bureaucrats, editor, reviewer, Administrators
13,550

edits

Navigation menu