[xsl] Simple map and string-length(): unexpected behavior?

Subject: [xsl] Simple map and string-length(): unexpected behavior?
From: "Elisa Beshero-Bondar ebbondar@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Sat, 8 Jun 2019 00:52:22 -0000
Dear XSL list,

We are perplexed by a discrepancy between applying the string-length()
function directly to a numerical argument and using simple map to perform
what we expected would be the same operation. string-length(5) returns an
error, as expected. oXygen reports: "XPath failed due to: Required item
type of first argument of fn:string-length() is xs:string; supplied
expression (5) has item type xs:integer". eXist-db reports: "xs-integer(5)
is not a sub-type of xs-string".

When we use simple map, though, the behavior is different:

5 ! string-length() returns a string-length of 1

05 ! string-length() returns a string-length of 2

0.5 ! string-length() returns a string-length of 3

00.5 ! string-length returns a string-length of 3

05 ! string-length() returns a string-length of 1

Can someone please explain why simple-map does not raise the type error
that we see when we write the numerical argument directly inside the
function parentheses?

Thanks for your help!
Elisa
-- 
Elisa Beshero-Bondar, PhD
Associate Professor of English
University of Pittsburgh at Greensburg
Humanities Division
150 Finoli Drive
Greensburg, PA  15601  USA
E-mail: ebb8@xxxxxxxx

Current Thread