Difference between revisions of "CSV Module"
Jump to navigation
Jump to search
| Line 6: | Line 6: | ||
All errors are assigned to the {{Code|http://basex.org/errors}} namespace, which is statically bound to the {{Code|bxerr}} prefix. | All errors are assigned to the {{Code|http://basex.org/errors}} namespace, which is statically bound to the {{Code|bxerr}} prefix. | ||
| − | =CSV Functions= | + | =Rules= |
| + | |||
| + | {{Version|7.7.2}}: the conversion rules have been updated and aligned with the JSON parser: | ||
| + | |||
| + | The conversion of CSV data is based on the following rules: | ||
| + | |||
| + | # The resulting document has a {{Code|<csv/>}} root node. | ||
| + | # Rows are represented via {{Code|<record/>}} nodes. | ||
| + | # Fields are either named {{Code|entry}} or (if the CSV header is parsed) named by the corresponding column name: | ||
| + | ## Empty field names are represented by a single underscore ({{Code|<_>...</_>}}). | ||
| + | ## Underscore characters are rewritten to two underscores ({{Code|__}}). | ||
| + | ## A character that cannot be represented as NCName character is rewritten to an underscore and its four-digit Unicode. | ||
| + | |||
| + | =Functions= | ||
==csv:parse== | ==csv:parse== | ||
Revision as of 18:58, 24 September 2013
This XQuery Module contains a single function to parse CSV input. CSV (comma-separated values) is a popular representation for tabular data, exported e. g. from Excel.
Conventions
All functions in this module are assigned to the http://basex.org/modules/csv namespace, which is statically bound to the csv prefix.
All errors are assigned to the http://basex.org/errors namespace, which is statically bound to the bxerr prefix.
Rules
Version 7.7.2: the conversion rules have been updated and aligned with the JSON parser:
The conversion of CSV data is based on the following rules:
- The resulting document has a
<csv/>root node. - Rows are represented via
<record/>nodes. - Fields are either named
entryor (if the CSV header is parsed) named by the corresponding column name:- Empty field names are represented by a single underscore (
<_>...</_>). - Underscore characters are rewritten to two underscores (
__). - A character that cannot be represented as NCName character is rewritten to an underscore and its four-digit Unicode.
- Empty field names are represented by a single underscore (
Functions
csv:parse
| Signatures | csv:parse($input as xs:string) as element(csv)csv:parse($input as xs:string, $options as item()) as element(csv)
|
| Summary | Converts the CSV data specified by $input to XML, and returns the result as element(csv) value.The $options argument can be used to control the way the input is converted. The following options are available:
Options can either be specified
<csv:options> <csv:separator value=';'/> ... </csv:options>
{ 'separator' : ';', ... }
|
| Errors | BXCS0001: the input cannot be converted.BXCS0003: the specified separator must be a single character.
|
csv:serialize
| Signatures | csv:serialize($input as node(), $options as item()) as xs:string
|
| Summary | Serializes the node specified by $input as CSV data, and returns the result as xs:string.XML documents can also be serialized as CSV if the Serialization Option "method" is set to "csv".The $options argument can be used to control the way the node is serialized. The following options are available:
Options can either be specified
<csv:options> <csv:separator value=';'/> ... </csv:options>
{ 'separator' : ';', ... }
|
| Errors | BXCS0002: the input cannot be serialized.BXCS0003: the specified separator must be a single character.
|
Errors
| Code | Description |
|---|---|
BXCS0001
|
The input cannot be converted. |
BXCS0002
|
The node cannot be serialized. |
BXCS0001
|
The specified separator must be a single character. |
Changelog
The module was introduced with Version 7.7.2.