Functions, operators, and data types for XPath 4.0
A second $position argument is available on many function callbacks, for example those on
every, filter, for-each, index-where, some.
Comments (between '#' characters) are allowed in regular expressions if the 'c'
flag is set. A '#' character can be escaped as \# or [#]. (PR 1022)
The following functions are new in 4.0 (some of these were already implemented in Saxon 12):
-
array:build -
array:empty -
array:foot -
array:index-of -
array:index-where -
array:items -
array:members -
array:of-members -
array:slice -
array:sort-by -
array:sort-with -
array:split -
array:trunk -
fn:atomic-type-annotation -
fn:build-dateTime -
fn:build-uri -
fn:char -
fn:characters -
fn:civil-timezone -
fn:collation-available -
fn:collation -
fn:contains-subsequence -
fn:csv-doc -
fn:csv-to-arrays -
fn:csv-to-xml -
fn:decode-from-uri -
fn:distinct-ordered-nodes -
fn:do-until -
fn:duplicate-values -
fn:element-to-map -
fn:element-to-map-plan -
fn:ends-with-subsequence -
fn:every -
fn:expanded-QName -
fn:foot -
fn:function-identity -
fn:graphemes -
fn:hash -
fn:highest -
fn:html-doc -
fn:identity -
fn:in-scope-namespaces -
fn:index-where -
fn:insert-separator -
fn:invisible-xml -
fn:is-NaN -
fn:items-at -
fn:jkey -
fn:jposition -
fn:jtree -
fn:jvalue -
fn:lowest -
fn:message -
fn:node-type-annotation -
fn:op -
fn:parse-QName -
fn:parse-csv -
fn:parse-html -
fn:parse-integer -
fn:parse-uri -
fn:parts-of-dateTime -
fn:partial-apply -
fn:partition -
fn:replicate -
fn:scan-left -
fn:scan-right -
fn:schema-type -
fn:seconds -
fn:siblings -
fn:slice -
fn:some -
fn:sort-with -
fn:starts-with-subsequence -
fn:subsequence-where -
fn:take-while -
fn:transitive-closure -
fn:trunk -
fn:type-of -
fn:unix-dateTime -
fn:unparsed-binary -
fn:void -
fn:while-do -
fn:xsd-validator -
map:build -
map:empty -
map:entries -
map:filter -
map:items -
math:cosh -
math:e -
math:sinh -
math:tanh
The following functions have been significantly extended in 4.0. Again, a few of the changes might have already been implemented in Saxon 12:
-
array:filter -
array:for-each-pair -
array:for-each -
array:get -
array:index-where -
array:join -
array:sort-by -
array:subarray -
fn:all-different -
fn:all-equal -
fn:analyze-string -
fn:apply -
fn:atomic-equal -
fn:avg -
fn:base-uri -
fn:codepoints-to-string -
fn:compare -
fn:concat -
fn:day-from-dateTime -
fn:deep-equal -
fn:distinct-values -
fn:divide-decimals -
fn:do-until -
fn:doc-available -
fn:doc -
fn:document-uri -
fn:element-to-map -
fn:error -
fn:every -
fn:filter -
fn:for-each-pair -
fn:for-each -
fn:format-date -
fn:format-dateTime -
fn:format-integer -
fn:format-number -
fn:format-time -
fn:function-annotations -
fn:has-children -
fn:hours-from-dateTime -
fn:in-scope-prefixes -
fn:index-of -
fn:index-where -
fn:innermost -
fn:invisible-xml -
fn:json-doc -
fn:jtree -
fn:label -
fn:load-xquery-module -
fn:max -
fn:min -
fn:minutes-from-dateTime -
fn:month-from-dateTime -
fn:namespace-uri-for-prefix -
fn:normalize-space -
fn:outermost -
fn:parse-json -
fn:parse-xml-fragment -
fn:parse-xml -
fn:path -
fn:random-number-generator -
fn:remove -
fn:replace -
fn:resolve-uri -
fn:round-half-to-even -
fn:round -
fn:serialize -
fn:some -
fn:sort-by -
fn:string-length -
fn:subsequence -
fn:substring -
fn:sum -
fn:take-while -
fn:timezone-from-dateTime -
fn:tokenize -
fn:trace -
fn:unparsed-text-available -
fn:unparsed-text-lines -
fn:unparsed-text -
fn:while-do -
fn:xml-to-json -
fn:year-from-dateTime -
map:filter -
map:find -
map:for-each -
map:get -
map:items -
map:merge -
map:put -
map:remove
4.0 Functions not yet (fully) implemented
Here is a list of some of the features in the 4.0 specifications that have NOT yet been implemented. Please check the QT4 GitHub project (https://github.com/qt4cg/qtspecs) for the latest status: Pull Requests are labeled "In Saxon13" when they have been implemented.