Changes

Jump to navigation Jump to search
2,060 bytes added ,  12:46, 6 May 2024
no edit summary
This [[Module Library|XQuery Module]] contains various small some utility and helper functions. Please note that some  With {{Announce|Version 11}}, many functions have been removed in favor of new features of the XQuery 4: {||- valign="top"| '''BaseX 10'''| '''XQuery 4'''|- valign="top"| {{Code|util:array-members}}| [https://qt4cg.org/specifications/xpath-functions-40/Overview.html#func-array-members <code>array:members</code>]|- valign="top"| {{Code|util:array-values}}| [https://qt4cg.org/specifications/xpath-functions-40/Overview.html#func-array-values <code>array:values</code>]|- valign="top"| {{Code|util:chars}}| [https://qt4cg.org/specifications/xpath-functions-40/Overview.html#func-chars <code>fn:characters</code>]|- valign="top"| {{Code|util:duplicates}}| [https://qt4cg.org/specifications/xpath-functions are used for internal query rewritings-40/Overview. They may be renamed html#func-duplicate-values <code>fn:duplicate-values</code>]|- valign="top"| {{Code|util:init}}| [https://qt4cg.org/specifications/xpath-functions-40/Overview.html#func-trunk <code>fn:trunk</code>]|- valign="top"| {{Code|util:intersperse}}| [https://qt4cg.org/specifications/xpath-functions-40/Overview.html#func-intersperse <code>fn:intersperse</code>]|- valign="top"| {{Code|util:item}}| [https://qt4cg.org/specifications/xpath-functions-40/Overview.html#func-items-at <code>fn:items-at</code>]|- valign="top"| {{Code|util:last}}| [https://qt4cg.org/specifications/xpath-functions-40/Overview.html#func-foot <code>fn:foot</code>]|- valign="top"| {{Code|util:map-entries}}| [https://qt4cg.org/specifications/xpath-functions-40/Overview.html#func-map-entries <code>map:entries</code>]|- valign="top"| {{Code|util:map-values}}| [https://qt4cg.org/specifications/xpath-functions-40/Overview.html#func-map-values <code>map:values</code>]|- valign="top"| {{Code|util:or moved to other modules in future versions of BaseX}}| <code>$expr1 otherwise $expr2|- valign="top"| {{Code|util:replicate}}| [https://qt4cg.org/specifications/xpath-functions-40/Overview.html#func-replicate <code>fn:replicate</code>]|}
=Conventions=
All functions and errors in this module and errors are assigned to the <code><nowiki>http://basex.org/modules/util</nowiki></code> namespace, which is statically bound to the {{Code|util}} prefix.<br/>
=Conditionsand Ranges=
==util:if==
 
{{Mark|Introduced with Version 9.1:}}
{| width='100%'
|-valign="top"| width='120' | '''SignaturesSignature'''|{{Func|util:if|$condition as item()*, $then as item()*|item()*}}<br/pre>{{Func|util:if|( $condition as item()*, $then as item()*, $else as item()*| := ()) as item()*}}<br/pre>|-valign="top"
| '''Summary'''
|Alternative writing for the if/then/else expression:
* If the ''effective boolean value'' of {{Code|$condition}} is true, the {{Code|$then}} branch will be evaluated.
* Otherwise, {{Code|$else}} will be evaluated. If no the third argument is suppliedomitted, an empty sequence will be returned.|-valign="top"
| '''Examples'''
|
|}
==util:orcount-within== {{Mark|Introduced with Version 9.1:}}
{| width='100%'
|-valign="top"| width='120' | '''SignaturesSignature'''|{{Func|<pre>util:or|count-within( $items sequence as item()*, $default min as itemxs:integer, $max as xs:integer := ()*|item()*}}as xs:boolean</pre>|-valign="top"
| '''Summary'''
|Returns Checks if the specified {{Code|$itemssequence}} has at least {{Code|$min}} if it is a non-empty sequence. Otherwiseand, optionally, returns at most {{Code|$defaultmax}}items. The function is equivalent Equivalent to the expression :<codepre lang='xquery'>if(existslet $count := count($itemssequence)) then return $count >= $min and $items else count <= $defaultmax</codepre>.|-valign="top"
| '''Examples'''
|
* <code>util:orcount-within(123, 456)</code> returns {{Code|123}}.* <code>util:or(1[. = 0], -1)</code> returns {{Code|-1}}.|} =Positional Access= ==util:item== {{Mark|Updated with Version 9.2}}: Renamed (before: {{Code|util:item-at}}). {| width='100%a'|-| width=, '120' | '''Signaturesb', 'c'|{{Func|util:item|$sequence as item()*, $position as xs:double|item(2)?}}<br/code>|-| '''Summary'''|Returns the item from {{Code|$sequence}} at the specified returns {{Code|$positiontrue}}. Equivalent to <code>$sequence[$position]</code>.|-| '''Examples'''|* <code>util:itemcount-within(reverse(1 to 51000000000), 1)</code> returns <code>5</code>[.* <code>util:item(('a'10],'b')3, 06)</code> returns an empty sequence{{Code|true}}.
|}
==util:range==
 
{{Mark|Updated with Version 9.2}}: Renamed (before: {{Code|util:item-range}}).
{| width='100%'
|-valign="top"| width='120' | '''SignaturesSignature'''|{{Func|<pre>util:range|( $sequence as item()*, $first as xs:double, $last as xs:double|) as item()*}}<br/pre>|-valign="top"
| '''Summary'''
|Returns items from {{Code|$sequence}}, starting at position {{Code|$first}} and ending at {{Code|$last}}. Equivalent to :<codepre lang='xquery'>subsequence($sequence, $first, $last - $first + 1)</codepre>.|-valign="top"
| '''Examples'''
|
|}
==util:last=Node Functions=
{{Mark|Updated with Version 9.2}}: Renamed (before: {{Code|==util:last-from}}).ddo==
{| width='100%'
|-valign="top"| width='120' | '''SignaturesSignature'''|{{Func|<pre>util:last|ddo( $sequence nodes as itemnode()*|item) as node()?}}*<br/pre>|-valign="top"
| '''Summary'''
|Returns last item of a {{Code|$sequence}}. Equivalent to <code>$sequencenodes in ''distinct document order'': duplicate nodes will be removed, and the remaining nodes will be returned in [last()]<https://code>www.w3.|org/TR/xquery-31/#dt-document-order document order]. As results of path expressions are brought into distinct document order before they are returned, the function is equivalent to:| '''Examples'<pre lang='xquery'>|* <code>util$nodes/self::lastnode(reverse(1 to 100))</codepre> returns <code>1</code>.
|}
==util:initroot== {{Mark|Introduced with Version 9.2:}}
{| width='100%'
|-valign="top"| width='120' | '''SignaturesSignature'''|{{Func|<pre>util:init|root( $sequence nodes as itemnode()*|item) as document-node()*}}<br/pre>|-valign="top"
| '''Summary'''
|Returns all items the document nodes of a the specified {{Code|$sequencenodes}} except for the last one. Equivalent to The path expression <code>$sequence[position() < last()]/abc</code>.|-| '''Examples'''|* is internally represented as <code>util:initroot(1 to 4.)/abc</code> returns . Equivalent to:<codepre lang='xquery'>1 2 3util:ddo($x ! /)</codepre>.
|}
=Helper Functions= ==util:replicatestrip-namespaces==
{| width='100%'
|-valign="top"| width='120' | '''SignaturesSignature'''|{{Func|<pre>util:replicate|strip-namespaces( $sequence node as itemnode()*, $count prefixes as xs:integer|itemstring* := ()) as node()*}}<br/pre>|-valign="top"
| '''Summary'''
|Returns {{Code|$count}} instances of Removes namespaces with the specified {{Code|<code>$sequence}}. A similar result can be generated with prefixes</code> from the supplied <code>(1 to $count) ! $sequencenode</code>, but in . An empty string can be supplied to remove the latter casedefault namespace. If no prefixes are specified, the right-hand expression all namespaces will be evaluated multiple times.|-| '''Errors'''|{{Error|negative|#Errors}} The specified number is negativeremoved.|-valign="top"
| '''Examples'''
|
* Remove all namespaces from an element and its descendants:<codepre lang='xquery'>util:replicatestrip-namespaces(<xml xmlns='Auri', 3)xmlns:prefix='uri2' prefix:name='value'><prefix:child/code> returns <code>A A A</codexml>.|} ==util:chars== {{Mark|Introduced with Version 9.2:}})
{| width='100%'(: yields :)|-| width<xml name='120' | '''Signatures''value'><child/></xml>|{{Func|util:chars|$string as xs:string|xs:string*}}<br/pre>|-* Remove all default namespaces:| <pre lang='xquery'><xml xmlns='Summaryuri1'><child xmlns='uri2'|Returns all characters of a {{Code|$string}} as a sequence. Equivalent to <code/>string-to-codepoints($string) ! codepoints-to-string(.)</codexml>.|-| '''Examples'''|* <code=>util:charsstrip-namespaces('AB')</code> returns the two strings <code>A</code> and <code>B</codepre>.
|}
! width="110"|Code
|Description
|-valign="top"
|{{Code|negative}}
|The specified number is negative.
=Changelog=
 
;Version 11.0
* Removed: {{Code|util:array-members}}, {{Code|util:array-values}}, {{Code|util:chars}}, {{Code|util:duplicates}}, {{Code|util:init}}, {{Code|util:intersperse}}, {{Code|util:item}}, {{Code|util:last}}, {{Code|util:map-entries}}, {{Code|util:map-values}}, {{Code|util:replicate}}
 
;Version 9.7
* Added: {{Function||util:strip-namespaces}}
* Updated: {{Function||util:count-within}}: Renamed from {{Code|util:within}}.
 
;Version 9.5
* Added: {{Code|util:intersperse}}, {{Code|util:within}}, {{Code|util:duplicates}}, {{Code|util:array-members}}, {{Code|util:array-values}}, {{Code|util:map-entries}}, {{Code|util:map-values}}
* Updated: {{Code|util:replicate}}: Third argument added.
 
;Version 9.4
* Added: {{Function||util:root}}
 
;Version 9.3
* Added: {{Function||util:ddo}}
;Version 9.2
* Added: [[#util:chars{{Code|util:chars]]}}, [[#util:init{{Code|util:init]]}}* Updates: [[#utilUpdated:item{{Code|util:item]]}}, [[#util:last{{Code|util:last]]}}, [[#util:range{{Function||util:range]] }} renamed (before: {{Code|util:item-at}}, {{Code|util:item-range}}, {{Code|util:last-from}})
;Version 9.1
* Added: [[#util:if{{Function||util:if]]}}, [[#util:or{{Code|util:or]]}}
;Version 9.0
* Added: [[#util:replicate{{Code|util:replicate]]}}
The Module was introduced with Version 8.5.
Bureaucrats, editor, reviewer, Administrators
13,554

edits

Navigation menu