Difference between revisions of "Conversion Module"
Jump to navigation
Jump to search
Line 17: | Line 17: | ||
|- | |- | ||
| '''Summary''' | | '''Summary''' | ||
− | |Converts the specifed | + | |Converts the specifed {{Codes|$bytes}} ({{Code|xs:base64Binary}}, {{Code|xs:hexBinary}}) to a string: |
* The UTF-8 default encoding can be overwritten with the optional {{Code|$encoding}} argument. | * The UTF-8 default encoding can be overwritten with the optional {{Code|$encoding}} argument. | ||
* By default, invalid characters will be rejected. If {{Code|$fallback}} is set to true, these characters will be replaced with the Unicode replacement character <code>FFFD</code> (�). | * By default, invalid characters will be rejected. If {{Code|$fallback}} is set to true, these characters will be replaced with the Unicode replacement character <code>FFFD</code> (�). | ||
Line 34: | Line 34: | ||
|- | |- | ||
| width='120' | '''Signatures''' | | width='120' | '''Signatures''' | ||
− | |{{Func|convert:string-to-base64|$ | + | |{{Func|convert:string-to-base64|$string as xs:string|xs:base64Binary}}<br/>{{Func|convert:string-to-base64|$string as xs:string, $encoding as xs:string|xs:base64Binary}} |
|- | |- | ||
| '''Summary''' | | '''Summary''' | ||
− | |Converts the specified string to | + | |Converts the specified {{Code|$string}} to an {{Code|xs:base64Binary}} item. If the default encoding is chosen, conversion will be cheap, as strings and binaries are both internally represented as byte arrays.<br/>The UTF-8 default encoding can be overwritten with the optional {{Code|$encoding}} argument. |
|- | |- | ||
| '''Errors''' | | '''Errors''' | ||
Line 52: | Line 52: | ||
|- | |- | ||
| width='120' | '''Signatures''' | | width='120' | '''Signatures''' | ||
− | |{{Func|convert:string-to-hex|$ | + | |{{Func|convert:string-to-hex|$string as xs:string|xs:hexBinary}}<br/>{{Func|convert:string-to-hex|$string as xs:string, $encoding as xs:string|xs:hexBinary}} |
|- | |- | ||
| '''Summary''' | | '''Summary''' | ||
− | |Converts the specified string to | + | |Converts the specified {{Code|$string}} to an {{Code|xs:hexBinary}} item. If the default encoding is chosen, conversion will be cheap, as strings and binaries are both internally represented as byte arrays.<br/>The UTF-8 default encoding can be overwritten with the optional {{Code|$encoding}} argument. |
|- | |- | ||
| '''Errors''' | | '''Errors''' | ||
Line 67: | Line 67: | ||
=Binary Data= | =Binary Data= | ||
− | ==convert: | + | ==convert:integers-to-base64== |
− | {{Mark|Updated with Version 9.0}}: | + | {{Mark|Updated with Version 9.0}}: Renamed from {{Code|convert:bytes-to-base64}}; argument type relaxed from {{Code|xs:byte}} to {{Code|xs:integer}}. |
{| width='100%' | {| width='100%' | ||
|- | |- | ||
| width='120' | '''Signatures''' | | width='120' | '''Signatures''' | ||
− | |{{Func|convert: | + | |{{Func|convert:integers-to-base64|$integers as xs:integer*|xs:base64Binary}} |
|- | |- | ||
| '''Summary''' | | '''Summary''' | ||
− | |Converts the specified | + | |Converts the specified {{Code|$integers}} to an item of type {{Code|xs:base64Binary}}: |
− | * Only the first 8 bits of the supplied | + | * Only the first 8 bits of the supplied integers will be considered. |
− | * Conversion of byte sequences is particularly cheap, as | + | * Conversion of byte sequences is particularly cheap, as items of binary type are internally represented as byte arrays. |
|- | |- | ||
| '''Errors''' | | '''Errors''' | ||
Line 85: | Line 85: | ||
|} | |} | ||
− | ==convert: | + | ==convert:integers-to-hex== |
− | {{Mark|Updated with Version 9.0}}: | + | {{Mark|Updated with Version 9.0}}: Renamed from {{Code|convert:bytes-to-base64}}; argument type relaxed from {{Code|xs:byte}} to {{Code|xs:integer}}. |
{| width='100%' | {| width='100%' | ||
|- | |- | ||
| width='120' | '''Signatures''' | | width='120' | '''Signatures''' | ||
− | |{{Func|convert: | + | |{{Func|convert:integers-to-hex|$integers as xs:integer*|xs:hexBinary}} |
|- | |- | ||
| '''Summary''' | | '''Summary''' | ||
− | |Converts the specified | + | |Converts the specified {{Code|$integers}} to an item of type {{Code|xs:hexBinary}}: |
− | * Only the first 8 bits of the supplied | + | * Only the first 8 bits of the supplied integers will be considered. |
− | * Conversion of byte sequences is particularly cheap, as | + | * Conversion of byte sequences is particularly cheap, as items of binary type are internally represented as byte arrays. |
|} | |} | ||
Line 108: | Line 108: | ||
|- | |- | ||
| '''Summary''' | | '''Summary''' | ||
− | |Returns the specified binary | + | |Returns the specified {{Code|$binary}} ({{Code|xs:base64Binary}}, {{Code|xs:hexBinary}}) as a sequence of bytes. The conversion is very cheap and takes no additional memory, as items of binary type are internally represented as byte arrays. |
+ | |} | ||
|- | |- | ||
| '''Examples''' | | '''Examples''' | ||
Line 116: | Line 117: | ||
|} | |} | ||
− | ==convert:binary-to- | + | ==convert:binary-to-integers== |
{{Mark|Introduced with Version 9.0}}: | {{Mark|Introduced with Version 9.0}}: | ||
Line 123: | Line 124: | ||
|- | |- | ||
| width='120' | '''Signatures''' | | width='120' | '''Signatures''' | ||
− | |{{Func|convert:binary-to-integer|$ | + | |{{Func|convert:binary-to-integer|$binary as xs:anyAtomicType|xs:integer*}} |
|- | |- | ||
| '''Summary''' | | '''Summary''' | ||
− | |Returns the specified binary | + | |Returns the specified {{Code|$binary}} ({{Code|xs:base64Binary}}, {{Code|xs:hexBinary}}) as a sequence of unsigned integers (octets). |
|- | |- | ||
| '''Examples''' | | '''Examples''' | ||
Line 140: | Line 141: | ||
|- | |- | ||
| width='120' | '''Signatures''' | | width='120' | '''Signatures''' | ||
− | |{{Func|convert:integer-to-base|$ | + | |{{Func|convert:integer-to-base|$number as xs:integer, $base as xs:integer|xs:string}}<br /> |
|- | |- | ||
| '''Summary''' | | '''Summary''' | ||
− | |Converts {{Code|$ | + | |Converts {{Code|$number}} to a string, using the specified {{Code|$base}}, interpreting it as a 64-bit unsigned integer.<br />The first base elements of the sequence {{Code|'0',..,'9','a',..,'z'}} are used as digits.<br />Valid bases are {{Code|2, .., 36}}.<br /> |
|- | |- | ||
| '''Errors''' | | '''Errors''' | ||
Line 159: | Line 160: | ||
|- | |- | ||
| width='120' | '''Signatures''' | | width='120' | '''Signatures''' | ||
− | |{{Func|convert:integer-from-base|$ | + | |{{Func|convert:integer-from-base|$string as xs:string, $base as xs:integer|xs:integer}}<br /> |
|- | |- | ||
| '''Summary''' | | '''Summary''' | ||
− | |Decodes an | + | |Decodes an integer from {{Code|$string}}, using the specified {{Code|$base}}.<br /> The first base elements of the sequence {{Code|'0',..,'9','a',..,'z'}} are allowed as digits; case does not matter. <br />Valid bases are 2 - 36.<br /> If the supplied string contains more than 64 bits of information, the result will be truncated. |
|- | |- | ||
| '''Errors''' | | '''Errors''' | ||
Line 182: | Line 183: | ||
|- | |- | ||
| width='120' | '''Signatures''' | | width='120' | '''Signatures''' | ||
− | |{{Func|convert:integer-to-dateTime|$ | + | |{{Func|convert:integer-to-dateTime|$milliseconds as xs:integer|xs:dateTime}}<br /> |
|- | |- | ||
| '''Summary''' | | '''Summary''' | ||
− | |Converts the specified number of milliseconds since 1 Jan 1970 to an item of type xs:dateTime.<br /> | + | |Converts the specified number of {{Code|$milliseconds}} since 1 Jan 1970 to an item of type xs:dateTime.<br /> |
|- | |- | ||
| '''Examples''' | | '''Examples''' | ||
Line 202: | Line 203: | ||
|- | |- | ||
| '''Summary''' | | '''Summary''' | ||
− | |Converts the specified item | + | |Converts the specified {{Code|$dateTime}} item to the number of milliseconds since 1 Jan 1970.<br /> |
|- | |- | ||
| '''Examples''' | | '''Examples''' | ||
Line 214: | Line 215: | ||
|- | |- | ||
| width='120' | '''Signatures''' | | width='120' | '''Signatures''' | ||
− | |{{Func|convert:integer-to-dayTime|$ | + | |{{Func|convert:integer-to-dayTime|$milliseconds as xs:integer|xs:dayTimeDuration}}<br /> |
|- | |- | ||
| '''Summary''' | | '''Summary''' | ||
− | |Converts the specified number of milliseconds to an item of type xs:dayTimeDuration.<br /> | + | |Converts the specified number of {{Code|$milliseconds}} to an item of type xs:dayTimeDuration.<br /> |
|- | |- | ||
| '''Examples''' | | '''Examples''' | ||
Line 232: | Line 233: | ||
|- | |- | ||
| '''Summary''' | | '''Summary''' | ||
− | |Converts the specified | + | |Converts the specified {{Code|$dayTime}} duration to milliseconds represented by an integer.<br /> |
|- | |- | ||
| '''Examples''' | | '''Examples''' | ||
Line 267: | Line 268: | ||
;Version 9.0 | ;Version 9.0 | ||
− | * Added: [[#convert: | + | * Added: [[#convert:binary-to-integers|convert:binary-to-integers]]. |
− | * Updated: [[#convert: | + | * Updated: [[#convert:integers-to-base64|convert:integers-to-base64]], [[#convert:integers-to-hex|convert:integers-to-hex]]: Renamed from {{Code|convert:bytes-to-base64}}; argument type relaxed from {{Code|xs:byte}} to {{Code|xs:integer}}. |
* Updated: error codes updates; errors now use the module namespace | * Updated: error codes updates; errors now use the module namespace | ||
Revision as of 11:39, 21 November 2017
This XQuery Module contains functions to convert data between different formats.
Conventions
All functions and errors in this module are assigned to the http://basex.org/modules/convert
namespace, which is statically bound to the convert
prefix.
Strings
convert:binary-to-string
Signatures | convert:binary-to-string($bytes as xs:anyAtomicType) as xs:string convert:binary-to-string($bytes as xs:anyAtomicType, $encoding as xs:string) as xs:string convert:binary-to-string($bytes as xs:anyAtomicType, $encoding as xs:string, $fallback as xs:boolean) as xs:string
|
Summary | Converts the specifed Template:Codes (xs:base64Binary , xs:hexBinary ) to a string:
|
Errors | string : The input is an invalid XML string, or the wrong encoding has been specified.BXCO0002 : The specified encoding is invalid or not supported.
|
Examples |
|
convert:string-to-base64
Signatures | convert:string-to-base64($string as xs:string) as xs:base64Binary convert:string-to-base64($string as xs:string, $encoding as xs:string) as xs:base64Binary
|
Summary | Converts the specified $string to an xs:base64Binary item. If the default encoding is chosen, conversion will be cheap, as strings and binaries are both internally represented as byte arrays.The UTF-8 default encoding can be overwritten with the optional $encoding argument.
|
Errors | binary : The input cannot be represented in the specified encoding.encoding : The specified encoding is invalid or not supported.
|
Examples |
|
convert:string-to-hex
Signatures | convert:string-to-hex($string as xs:string) as xs:hexBinary convert:string-to-hex($string as xs:string, $encoding as xs:string) as xs:hexBinary
|
Summary | Converts the specified $string to an xs:hexBinary item. If the default encoding is chosen, conversion will be cheap, as strings and binaries are both internally represented as byte arrays.The UTF-8 default encoding can be overwritten with the optional $encoding argument.
|
Errors | binary : The input cannot be represented in the specified encoding.encoding : The specified encoding is invalid or not supported.
|
Examples |
|
Binary Data
convert:integers-to-base64
Template:Mark: Renamed from convert:bytes-to-base64
; argument type relaxed from xs:byte
to xs:integer
.
Signatures | convert:integers-to-base64($integers as xs:integer*) as xs:base64Binary
|
Summary | Converts the specified $integers to an item of type xs:base64Binary :
|
Errors | binary : The input cannot be represented in the specified encoding.BXCO0002 : The specified encoding is invalid or not supported.
|
convert:integers-to-hex
Template:Mark: Renamed from convert:bytes-to-base64
; argument type relaxed from xs:byte
to xs:integer
.
Signatures | convert:integers-to-hex($integers as xs:integer*) as xs:hexBinary
|
Summary | Converts the specified $integers to an item of type xs:hexBinary :
|
convert:binary-to-bytes
Signatures | convert:binary-to-bytes($bin as xs:anyAtomicType) as xs:byte*
|
Summary | Returns the specified $binary (xs:base64Binary , xs:hexBinary ) as a sequence of bytes. The conversion is very cheap and takes no additional memory, as items of binary type are internally represented as byte arrays.
|
|- | Examples |
convert:binary-to-bytes(xs:base64Binary('QmFzZVggaXMgY29vbA=='))
yields the sequence(66, 97, 115, 101, 88, 32, 105, 115, 32, 99, 111, 111, 108)
.convert:binary-to-bytes(xs:hexBinary("4261736558"))
yields the sequence(66 97 115 101 88)
.
|}
convert:binary-to-integers
Signatures | convert:binary-to-integer($binary as xs:anyAtomicType) as xs:integer*
|
Summary | Returns the specified $binary (xs:base64Binary , xs:hexBinary ) as a sequence of unsigned integers (octets).
|
Examples |
|
Numbers
convert:integer-to-base
Signatures | convert:integer-to-base($number as xs:integer, $base as xs:integer) as xs:string |
Summary | Converts $number to a string, using the specified $base , interpreting it as a 64-bit unsigned integer.The first base elements of the sequence '0',..,'9','a',..,'z' are used as digits.Valid bases are 2, .., 36 . |
Errors | base : The specified base is not in the range 2-36.
|
Examples |
|
convert:integer-from-base
Signatures | convert:integer-from-base($string as xs:string, $base as xs:integer) as xs:integer |
Summary | Decodes an integer from $string , using the specified $base .The first base elements of the sequence '0',..,'9','a',..,'z' are allowed as digits; case does not matter. Valid bases are 2 - 36. If the supplied string contains more than 64 bits of information, the result will be truncated. |
Errors | base : The specified base is not in the range 2-36.integer : The specified digit is not valid for the given range.
|
Examples |
|
Dates and Durations
convert:integer-to-dateTime
Signatures | convert:integer-to-dateTime($milliseconds as xs:integer) as xs:dateTime |
Summary | Converts the specified number of $milliseconds since 1 Jan 1970 to an item of type xs:dateTime. |
Examples |
|
convert:dateTime-to-integer
Signatures | convert:dateTime-to-integer($dateTime as xs:dateTime) as xs:integer |
Summary | Converts the specified $dateTime item to the number of milliseconds since 1 Jan 1970. |
Examples |
|
convert:integer-to-dayTime
Signatures | convert:integer-to-dayTime($milliseconds as xs:integer) as xs:dayTimeDuration |
Summary | Converts the specified number of $milliseconds to an item of type xs:dayTimeDuration. |
Examples |
|
convert:dayTime-to-integer
Signatures | convert:dayTime-to-integer($dayTime as xs:dayTimeDuration) as xs:integer |
Summary | Converts the specified $dayTime duration to milliseconds represented by an integer. |
Examples |
|
Errors
Code | Description |
---|---|
string
|
The input is an invalid XML string, or the wrong encoding has been specified. |
binary
|
The input cannot be converted to a binary representation. |
encoding
|
The specified encoding is invalid or not supported. |
base
|
The specified base is not in the range 2-36. |
integer
|
The specified digit is not valid for the given range. |
Changelog
- Version 9.0
- Added: convert:binary-to-integers.
- Updated: convert:integers-to-base64, convert:integers-to-hex: Renamed from
convert:bytes-to-base64
; argument type relaxed fromxs:byte
toxs:integer
. - Updated: error codes updates; errors now use the module namespace
- Version 8.5
- Updated: convert:binary-to-string:
$fallback
argument added.
- Version 7.5
- Added: convert:integer-to-dateTime, convert:dateTime-to-integer, convert:integer-to-dayTime, convert:dayTime-to-integer.
The module was introduced with Version 7.3. Some of the functions have been adopted from the obsolete Utility Module.