XPath 2.0 Functions xf:substring-before and xf:substring-after

Hi

There is an issue with both of these functions that you may find worth considering.
Function substring-before (http://www.w3.org/TR/xquery-operators/#func-substring-before)
has the signatures:

xf:substring-before(string? $operand1, string? $operand2) => string? 
      xf:substring-before( string?  $operand1, 
      string?  $operand2, 
      anyURI  $collationLiteral) => string? 


Paragraph 3 of the description of the function states: 
...
If the value of $operand1 does not contain a string that is equal to the value of $operand2, then the 
function returns the zero-length string.
...

The issue is that, if the value of $operand1 is equal to the value of $operand2 (in which case 
the value of $operand1 certainly contains a string that is equal to the value of $operand2), 
then the function also returns a zero-length string. This is precisely what one would expect from 
the first paragraph of the description. So the function returns the same value when the two strings 
defined by the arguments are identical, and when they are entirely different.

One way to resolve this would be to distinguish between an empty or null string, and what 
might be called an "undefined string". The undefined string could then be returned by the function 
when the condition of paragraph 3 is satisfied ($operand1 does not contain a string that is
equal to the value of $operand2). This implies that the string domain would need to be extended 
to include this additional member, which then raises the unfortunate logical problem that the 
extended domain includes a member that does not belong to it ...

Best regards,
Ken Aldous.

--
Ken Aldous
Advanced Manufacturing
Industrial Research Limited
5 Sheffield Crescent
PO Box 20 028, Bishopdale
Christchurch
New Zealand
http://www.irl.cri.nz/

Ph:  +64 3 358 6818
Fax: +64 3 358 9506
k.aldous@irl.cri.nz

Received on Monday, 26 August 2002 03:46:28 UTC