Main Page » XQuery » Functions » Utility Functions

Utility Functions

This module contains some utility and helper functions.

Removed: Many functions have been removed in favor of new XQuery 4 standard functions.

BaseX 10 XQuery 4
util:or $expr1 otherwise $expr2
util:chars fn:characters
util:ddo fn:distinct-ordered-nodes
util:duplicates fn:duplicate-values
util:init fn:trunk
util:intersperse fn:intersperse
util:item fn:items-at
util:last fn:foot
util:replicate fn:replicate
util:map-entries map:entries
util:map-values map:values (unstable)
util:array-members array:members (unstable)
util:array-values array:values (unstable)

Conventions

All functions and errors in this module and errors are assigned to the http://basex.org/modules/util namespace, which is statically bound to the util prefix.

Conditions

util:if

Signature
util:if(
  $condition  as item()*,
  $then       as item()*,
  $else       as item()*  := ()
) as item()*
SummaryAlternative writing for the if/then/else expression:
  • If the effective boolean value of $condition is true, the $then branch will be evaluated.
  • Otherwise, $else will be evaluated. If the third argument is omitted, an empty sequence will be returned.
Examples
util:if(true(), 123, 456)
Result: 123
util:if('', 'wrong!')
Returns an empty sequence.

util:count-within

Signature
util:count-within(
  $input  as item()*,
  $min    as xs:integer,
  $max    as xs:integer  := ()
) as xs:boolean
SummaryChecks if the specified $input has at least $min and, optionally, at most $max items. Equivalent to:
let $count := count($sequence)
return $count >= $min and $count <= $max
Examples
util:count-within(('a', 'b', 'c'), 2)
Result: true()
util:count-within((1 to 1000000000)[. < 10], 3, 6)
Result: false()

util:range

Signature
util:range(
  $sequence  as item()*,
  $first     as xs:double,
  $last      as xs:double
) as item()*
SummaryReturns items from $sequence, starting at position $first and ending at $last. Roughly equivalent to:
subsequence($sequence, $first, $last - $first + 1)
Examples
util:range(//item, 11, 20)
Returns all path results from (if available) position 11 to 20.

Node Functions

util:root

Signature
util:root(
  $nodes  as node()*
) as document-node()*
SummaryReturns the document nodes of the specified $nodes. The path expression /abc is internally represented as util:root(.)/abc. Equivalent to:
util:ddo($nodes ! /)

util:strip-namespaces

Signature
util:strip-namespaces(
  $node      as node(),
  $prefixes  as xs:string*  := ()
) as node()
SummaryRemoves namespaces with the specified $prefixes from the supplied $node. An empty string can be supplied to remove the default namespace. If no prefixes are specified, all namespaces will be removed.
Examples
util:strip-namespaces(
  <xml xmlns='uri' xmlns:prefix='uri2' prefix:name='value'>
    <prefix:child/>
  </xml>
)
Result: <xml name='value'><child/></xml>
<xml xmlns='uri1'><child xmlns='uri2'/></xml>
=> util:strip-namespaces('')
Remove all default namespaces.

Optmizations

Errors

CodeDescription
negativeThe specified number is negative.

Changelog

Version 11.0
  • Removed: util:array-members, util:array-values, util:chars, util:duplicates, util:init, util:intersperse, util:item, util:last, util:map-entries, util:map-values, util:replicate in favor of new Standard Functions.
Version 9.7Version 9.5
  • Added: util:intersperse, util:within, util:duplicates, util:array-members, util:array-values, util:map-entries, util:map-values
  • Updated: util:replicate: Third argument added.
Version 9.4Version 9.3Version 9.2
  • Added: util:chars, util:init
  • Updated: util:item, util:last, util:range renamed (before: util:item-at, util:item-range, util:last-from)
Version 9.1Version 9.0
  • Added: util:replicate
Version 8.5
  • Added: New module added.

⚡Generated with XQuery