DN-FO-02: 15.1 zero-or-one, one-or-more, exactly-one

Functions and operations on sequences, 15.1, zero-or-one,
one-or-more, exactly-one

Class: Editorial, Technical

Section 15.1 Functions and Operators on Sequences defines the
functions  zero-or-one, one-or-more, exactly-one.

The names describe properties and suggest that these functions return
boolean result. However, this is not the case.

The function definitions are:

fn:zero-or-one($srcval as item*) as item?
fn:one-or-more($srcval as item*) as item+
fn:exactly-one($srcval as item*) as item


Another issue with this function is that their main purpose seems to
be in raising an error message if the property they name is not true
for the parameter-sequence. Such functions seem strange and their
necessity and potential usage must be explained in detail.

A third issue is that the description for all three functions
contains the sentence: “The type of the result is the type of
$srcval.” This is clearly contradicted by the definitions of the
functions – item* is not the same as item?, item+ or item.

Suggested solution:
  1. Change the names to more precisely reflect the meaning of the
     functions, e.g: constraint-zero-or-one, etc.
  2. Note and explain the very special behaviour of these functions
     and its potential usefulness.
  3. Correct the description and/or the definition of the functions
     so that they would not contradict each other.


Dimitre Novatchev.

Received on Monday, 23 June 2003 13:28:23 UTC