RE: substring: explanation of negative or zero $startingLoc behaviour

The definition in terms of fn:round($startingLoc) <= $p <
fn:round($startingLoc) + fn:round($length) doesn't require a concept of
negative positions. All characters have positive positions; the character is
included in the result if the position is greater than a number X, where X
may be negative.

As background, this definition is an example of the XPath 1.0 philosophy of
avoiding run-time errors. This design principle was adopted, I think,
because XSLT was seen by many people at the time as something that would run
in the browser, where run-time errors are really bad news. XPath 2.0 is less
consistent in this regard: we have some things which return a default value
rather than failing (such as effective Boolean value), and other things
which prefer to fail (such as getting the typed value of a complex-content
element).

Michael Kay

# -----Original Message-----
# From: Howard Katz [mailto:howardk@fatdog.com]
# Sent: 12 March 2004 18:40
# To: Michael Kay; public-qt-comments@w3.org
# Subject: RE: substring: explanation of negative or zero $startingLoc
# behaviour
# 
# What would help me I think is an explanation of what a negative position
# means.
# Howard
# 
# > -----Original Message-----
# > From: Michael Kay [mailto:mhk@mhk.me.uk]
# > Sent: Friday, March 12, 2004 10:27 AM
# > To: 'Howard Katz'; public-qt-comments@w3.org
# > Subject: RE: substring: explanation of negative or zero $startingLoc
# > behaviour
# >
# >
# > The definitive statement in the spec is:
# >
# > More specifically, returns the characters in $sourceString whose
# > position $p
# > obeys:
# >
# > fn:round($startingLoc) <= $p < fn:round($startingLoc) +
# fn:round($length)
# >
# > The subsequent paragraphs are just trying to be helpful, and
# > apparently not
# > succeeding.
# >
# > Michael Kay
# >
# > # -----Original Message-----
# > # From: public-qt-comments-request@w3.org [mailto:public-qt-comments-
# > # request@w3.org] On Behalf Of Howard Katz
# > # Sent: 12 March 2004 18:08
# > # To: public-qt-comments@w3.org
# > # Subject: fn:substring: explanation of negative or zero $startingLoc
# > # behaviour
# > #
# > #
# > # F and O: 7.4.3 fn:substring()
# > #
# > # The explanation of $startingLoc in 7.4.3 reads, "If $startingLoc is
# zero
# > # or
# > # negative, the substring includes characters from the beginning of the
# > # $sourceString." I find the meaning of the phrase "from the beginning
# of
# > # the
# > # $sourceString" to be unclear and can't find any other reference to the
# > # concept of negative character positions within a string.
# > #
# > # Out-of-band communication on the www-ql list seems to indicate that
# the
# > # concept of "imaginary character positions" preceding the
# > physical start of
# > # the string might be a useful way of explaining zero or negative
# > # $startingLoc
# > # behaviour. I'd suggest the addition of this or a similar explanation
# to
# > # 7.4.3.
# > #
# > # Howard
# >
# >

Received on Friday, 12 March 2004 14:53:29 UTC